From 1aa4cf36489e46181514d9ee3193fb0edea51b01 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 18 Jan 2014 00:31:44 +0000 Subject: [PATCH 001/102] Ported /bay/station's SQDL2 which can be used to help debug code and features, by using queries to select and filter objects, and then make changes to them. --- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 426 ++++++++++++++ .../admin/verbs/SDQL2/SDQL_2_parser.dm | 531 ++++++++++++++++++ tgstation.dme | 2 + 3 files changed, 959 insertions(+) create mode 100644 code/modules/admin/verbs/SDQL2/SDQL_2.dm create mode 100644 code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm new file mode 100644 index 00000000000..8a51495f541 --- /dev/null +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -0,0 +1,426 @@ +// Code taken from /bay/station. + +/client/proc/SDQL2_query(query_text as message) + set category = "Admin" + if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. + message_admins("\red ERROR: Non-admin [usr.key] attempted to execute a SDQL query!") + log_admin("Non-admin [usr.key] attempted to execute a SDQL query!") + + if(!query_text || length(query_text) < 1) + return + + //world << query_text + + var/list/query_list = SDQL2_tokenize(query_text) + + if(!query_list || query_list.len < 1) + return + + var/list/query_tree = SDQL_parse(query_list) + + if(query_tree.len < 1) + return + + var/list/from_objs = list() + var/list/select_types = list() + + switch(query_tree[1]) + if("explain") + SDQL_testout(query_tree["explain"]) + return + + if("call") + if("on" in query_tree) + select_types = query_tree["on"] + else + return + + if("select", "delete", "update") + select_types = query_tree[query_tree[1]] + + from_objs = SDQL_from_objs(query_tree["from"]) + + var/list/objs = list() + + for(var/type in select_types) + var/char = copytext(type, 1, 2) + + if(char == "/" || char == "*") + for(var/from in from_objs) + objs += SDQL_get_all(type, from) + + else if(char == "'" || char == "\"") + objs += locate(copytext(type, 2, length(type))) + + if("where" in query_tree) + var/objs_temp = objs + objs = list() + for(var/datum/d in objs_temp) + if(SDQL_expression(d, query_tree["where"])) + objs += d + + //usr << "Query: [query_text]" + message_admins("[usr] executed SDQL query: \"[query_text]\".") + + switch(query_tree[1]) + if("delete") + for(var/datum/d in objs) + del d + + if("select") + var/text = "" + for(var/datum/t in objs) + if(istype(t, /atom)) + var/atom/a = t + + if(a.x) + text += "\ref[t]: [t] at ([a.x], [a.y], [a.z])
" + + else if(a.loc && a.loc.x) + text += "\ref[t]: [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z])
" + + else + text += "\ref[t]: [t]
" + + else + text += "\ref[t]: [t]
" + + usr << browse(text, "window=SDQL-result") + + if("update") + if("set" in query_tree) + var/list/set_list = query_tree["set"] + for(var/datum/d in objs) + var/list/vals = list() + for(var/v in set_list) + if(v in d.vars) + vals += v + vals[v] = SDQL_expression(d, set_list[v]) + + if(istype(d, /turf)) + for(var/v in vals) + if(v == "x" || v == "y" || v == "z") + continue + + d.vars[v] = vals[v] + + else + for(var/v in vals) + d.vars[v] = vals[v] + + + + + +/proc/SDQL_parse(list/query_list) + var/datum/SDQL_parser/parser = new(query_list) + var/list/query_tree = parser.parse() + + del(parser) + + return query_tree + + + +/proc/SDQL_testout(list/query_tree, indent = 0) + var/spaces = "" + for(var/s = 0, s < indent, s++) + spaces += " " + + for(var/item in query_tree) + if(istype(item, /list)) + world << "[spaces](" + SDQL_testout(item, indent + 1) + world << "[spaces])" + + else + world << "[spaces][item]" + + if(!isnum(item) && query_tree[item]) + + if(istype(query_tree[item], /list)) + world << "[spaces] (" + SDQL_testout(query_tree[item], indent + 2) + world << "[spaces] )" + + else + world << "[spaces] [query_tree[item]]" + + + +/proc/SDQL_from_objs(list/tree) + if("world" in tree) + return list(world) + + var/list/out = list() + + for(var/type in tree) + var/char = copytext(type, 1, 2) + + if(char == "/") + out += SDQL_get_all(type, world) + + else if(char == "'" || char == "\"") + out += locate(copytext(type, 2, length(type))) + + return out + + +/proc/SDQL_get_all(type, location) + var/list/out = list() + + if(type == "*") + for(var/datum/d in location) + out += d + + return out + + type = text2path(type) + + if(ispath(type, /mob)) + for(var/mob/d in location) + if(istype(d, type)) + out += d + + else if(ispath(type, /turf)) + for(var/turf/d in location) + if(istype(d, type)) + out += d + + else if(ispath(type, /obj)) + for(var/obj/d in location) + if(istype(d, type)) + out += d + + else if(ispath(type, /area)) + for(var/area/d in location) + if(istype(d, type)) + out += d + + else if(ispath(type, /atom)) + for(var/atom/d in location) + if(istype(d, type)) + out += d + + else + for(var/datum/d in location) + if(istype(d, type)) + out += d + + return out + + +/proc/SDQL_expression(datum/object, list/expression, start = 1) + var/result = 0 + var/val + + for(var/i = start, i <= expression.len, i++) + var/op = "" + + if(i > start) + op = expression[i] + i++ + + var/list/ret = SDQL_value(object, expression, i) + val = ret["val"] + i = ret["i"] + + if(op != "") + switch(op) + if("+") + result += val + if("-") + result -= val + if("*") + result *= val + if("/") + result /= val + if("&") + result &= val + if("|") + result |= val + if("^") + result ^= val + if("=", "==") + result = (result == val) + if("!=", "<>") + result = (result != val) + if("<") + result = (result < val) + if("<=") + result = (result <= val) + if(">") + result = (result > val) + if(">=") + result = (result >= val) + if("and", "&&") + result = (result && val) + if("or", "||") + result = (result || val) + else + usr << "\red SDQL2: Unknown op [op]" + result = null + else + result = val + + return result + +/proc/SDQL_value(datum/object, list/expression, start = 1) + var/i = start + var/val = null + + if(i > expression.len) + return list("val" = null, "i" = i) + + if(istype(expression[i], /list)) + val = SDQL_expression(object, expression[i]) + + else if(expression[i] == "!") + var/list/ret = SDQL_value(object, expression, i + 1) + val = !ret["val"] + i = ret["i"] + + else if(expression[i] == "~") + var/list/ret = SDQL_value(object, expression, i + 1) + val = ~ret["val"] + i = ret["i"] + + else if(expression[i] == "-") + var/list/ret = SDQL_value(object, expression, i + 1) + val = -ret["val"] + i = ret["i"] + + else if(expression[i] == "null") + val = null + + else if(isnum(expression[i])) + val = expression[i] + + else if(copytext(expression[i], 1, 2) in list("'", "\"")) + val = copytext(expression[i], 2, length(expression[i])) + + else + val = SDQL_var(object, expression, i) + i = expression.len + + return list("val" = val, "i" = i) + +/proc/SDQL_var(datum/object, list/expression, start = 1) + + if(expression[start] in object.vars) + + if(start < expression.len && expression[start + 1] == ".") + return SDQL_var(object.vars[expression[start]], expression[start + 2]) + + else + return object.vars[expression[start]] + + else + return null + +/proc/SDQL2_tokenize(query_text) + + var/list/whitespace = list(" ", "\n", "\t") + var/list/single = list("(", ")", ",", "+", "-", ".") + var/list/multi = list( + "=" = list("", "="), + "<" = list("", "=", ">"), + ">" = list("", "="), + "!" = list("", "=")) + + var/word = "" + var/list/query_list = list() + var/len = length(query_text) + + for(var/i = 1, i <= len, i++) + var/char = copytext(query_text, i, i + 1) + + if(char in whitespace) + if(word != "") + query_list += word + word = "" + + else if(char in single) + if(word != "") + query_list += word + word = "" + + query_list += char + + else if(char in multi) + if(word != "") + query_list += word + word = "" + + var/char2 = copytext(query_text, i + 1, i + 2) + + if(char2 in multi[char]) + query_list += "[char][char2]" + i++ + + else + query_list += char + + else if(char == "'") + if(word != "") + usr << "\red SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." + return null + + word = "'" + + for(i++, i <= len, i++) + char = copytext(query_text, i, i + 1) + + if(char == "'") + if(copytext(query_text, i + 1, i + 2) == "'") + word += "'" + i++ + + else + break + + else + word += char + + if(i > len) + usr << "\red SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again." + return null + + query_list += "[word]'" + word = "" + + else if(char == "\"") + if(word != "") + usr << "\red SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." + return null + + word = "\"" + + for(i++, i <= len, i++) + char = copytext(query_text, i, i + 1) + + if(char == "\"") + if(copytext(query_text, i + 1, i + 2) == "'") + word += "\"" + i++ + + else + break + + else + word += char + + if(i > len) + usr << "\red SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again." + return null + + query_list += "[word]\"" + word = "" + + else + word += char + + if(word != "") + query_list += word + + return query_list \ No newline at end of file diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm new file mode 100644 index 00000000000..d1d30b33b5e --- /dev/null +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -0,0 +1,531 @@ +//I'm pretty sure that this is a recursive [s]descent[/s] ascent parser. + + + +//Spec + +////////// +// +// query : select_query | delete_query | update_query | call_query | explain +// explain : 'EXPLAIN' query +// +// select_query : 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] +// delete_query : 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] +// update_query : 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression] +// call_query : 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]] +// +// select_list : select_item [',' select_list] +// select_item : '*' | select_function | object_type +// select_function : count_function +// count_function : 'COUNT' '(' '*' ')' | 'COUNT' '(' object_types ')' +// +// from_list : from_item [',' from_list] +// from_item : 'world' | object_type +// +// call_function : ['(' [arguments] ')'] +// arguments : expression [',' arguments] +// +// object_type : | string +// +// assignments : assignment, [',' assignments] +// assignment : '=' expression +// variable : | '.' variable +// +// bool_expression : expression comparitor expression [bool_operator bool_expression] +// expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression] +// unary_expression : unary_operator ( unary_expression | value | '(' expression ')' ) +// comparitor : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' +// value : variable | string | number | 'null' +// unary_operator : '!' | '-' | '~' +// binary_operator : comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' +// bool_operator : 'AND' | '&&' | 'OR' | '||' +// +// string : ''' ''' | '"' '"' +// number : +// +////////// + +/datum/SDQL_parser + var/query_type + var/error = 0 + + var/list/query + var/list/tree + + var/list/select_functions = list("count") + var/list/boolean_operators = list("and", "or", "&&", "||") + var/list/unary_operators = list("!", "-", "~") + var/list/binary_operators = list("+", "-", "/", "*", "&", "|", "^") + var/list/comparitors = list("=", "==", "!=", "<>", "<", "<=", ">", ">=") + + + +/datum/SDQL_parser/New(query_list) + query = query_list + + + +/datum/SDQL_parser/proc/parse_error(error_message) + error = 1 + usr << "\red SQDL2 Parsing Error: [error_message]" + return query.len + 1 + +/datum/SDQL_parser/proc/parse() + tree = list() + query(1, tree) + + if(error) + return list() + else + return tree + +/datum/SDQL_parser/proc/token(i) + if(i <= query.len) + return query[i] + + else + return null + +/datum/SDQL_parser/proc/tokens(i, num) + if(i + num <= query.len) + return query.Copy(i, i + num) + + else + return null + +/datum/SDQL_parser/proc/tokenl(i) + return lowertext(token(i)) + + + +/datum/SDQL_parser/proc + +//query: select_query | delete_query | update_query + query(i, list/node) + query_type = tokenl(i) + + switch(query_type) + if("select") + select_query(i, node) + + if("delete") + delete_query(i, node) + + if("update") + update_query(i, node) + + if("call") + call_query(i, node) + + if("explain") + node += "explain" + node["explain"] = list() + query(i + 1, node["explain"]) + + +// select_query: 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] + select_query(i, list/node) + var/list/select = list() + i = select_list(i + 1, select) + + node += "select" + node["select"] = select + + var/list/from = list() + if(tokenl(i) in list("from", "in")) + i = from_list(i + 1, from) + else + from += "world" + + node += "from" + node["from"] = from + + if(tokenl(i) == "where") + var/list/where = list() + i = bool_expression(i + 1, where) + + node += "where" + node["where"] = where + + return i + + +//delete_query: 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] + delete_query(i, list/node) + var/list/select = list() + i = select_list(i + 1, select) + + node += "delete" + node["delete"] = select + + var/list/from = list() + if(tokenl(i) in list("from", "in")) + i = from_list(i + 1, from) + else + from += "world" + + node += "from" + node["from"] = from + + if(tokenl(i) == "where") + var/list/where = list() + i = bool_expression(i + 1, where) + + node += "where" + node["where"] = where + + return i + + +//update_query: 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression] + update_query(i, list/node) + var/list/select = list() + i = select_list(i + 1, select) + + node += "update" + node["update"] = select + + var/list/from = list() + if(tokenl(i) in list("from", "in")) + i = from_list(i + 1, from) + else + from += "world" + + node += "from" + node["from"] = from + + if(tokenl(i) != "set") + i = parse_error("UPDATE has misplaced SET") + + var/list/set_assignments = list() + i = assignments(i + 1, set_assignments) + + node += "set" + node["set"] = set_assignments + + if(tokenl(i) == "where") + var/list/where = list() + i = bool_expression(i + 1, where) + + node += "where" + node["where"] = where + + return i + + +//call_query: 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]] + call_query(i, list/node) + var/list/func = list() + i = call_function(i + 1, func) + + node += "call" + node["call"] = func + + if(tokenl(i) != "on") + return i + + var/list/select = list() + i = select_list(i + 1, select) + + node += "on" + node["on"] = select + + var/list/from = list() + if(tokenl(i) in list("from", "in")) + i = from_list(i + 1, from) + else + from += "world" + + node += "from" + node["from"] = from + + if(tokenl(i) == "where") + var/list/where = list() + i = bool_expression(i + 1, where) + + node += "where" + node["where"] = where + + return i + + +//select_list: select_item [',' select_list] + select_list(i, list/node) + i = select_item(i, node) + + if(token(i) == ",") + i = select_list(i + 1, node) + + return i + + +//from_list: from_item [',' from_list] + from_list(i, list/node) + i = from_item(i, node) + + if(token(i) == ",") + i = from_list(i + 1, node) + + return i + + +//assignments: assignment, [',' assignments] + assignments(i, list/node) + i = assignment(i, node) + + if(token(i) == ",") + i = assignments(i + 1, node) + + return i + + +//select_item: '*' | select_function | object_type + select_item(i, list/node) + + if(token(i) == "*") + node += "*" + i++ + + else if(tokenl(i) in select_functions) + i = select_function(i, node) + + else + i = object_type(i, node) + + return i + + +//from_item: 'world' | object_type + from_item(i, list/node) + + if(token(i) == "world") + node += "world" + i++ + + else + i = object_type(i, node) + + return i + + +//bool_expression: expression [bool_operator bool_expression] + bool_expression(i, list/node) + + var/list/bool = list() + i = expression(i, bool) + + node[++node.len] = bool + + if(tokenl(i) in boolean_operators) + i = bool_operator(i, node) + i = bool_expression(i, node) + + return i + + +//assignment: '=' expression + assignment(i, list/node) + + node += token(i) + + if(token(i + 1) == "=") + var/varname = token(i) + node[varname] = list() + + i = expression(i + 2, node[varname]) + + else + parse_error("Assignment expected, but no = found") + + return i + + +//variable: | '.' variable + variable(i, list/node) + var/list/L = list(token(i)) + node[++node.len] = L + + if(token(i + 1) == ".") + L += "." + i = variable(i + 2, L) + + else + i++ + + return i + + +//object_type: | string + object_type(i, list/node) + + if(copytext(token(i), 1, 2) == "/") + node += token(i) + + else + i = string(i, node) + + return i + 1 + + +//comparitor: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' + comparitor(i, list/node) + + if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">=")) + node += token(i) + + else + parse_error("Unknown comparitor [token(i)]") + + return i + 1 + + +//bool_operator: 'AND' | '&&' | 'OR' | '||' + bool_operator(i, list/node) + + if(tokenl(i) in list("and", "or", "&&", "||")) + node += token(i) + + else + parse_error("Unknown comparitor [token(i)]") + + return i + 1 + + +//string: ''' ''' | '"' '"' + string(i, list/node) + + if(copytext(token(i), 1, 2) in list("'", "\"")) + node += token(i) + + else + parse_error("Expected string but found '[token(i)]'") + + return i + 1 + + +//call_function: ['(' [arguments] ')'] + call_function(i, list/node) + + parse_error("Sorry, function calls aren't available yet") + + return i + + +//select_function: count_function + select_function(i, list/node) + + parse_error("Sorry, function calls aren't available yet") + + return i + + +//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression] + expression(i, list/node) + + if(token(i) in unary_operators) + i = unary_expression(i, node) + + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + node[++node.len] = expr + + else + i = value(i, node) + + if(token(i) in binary_operators) + i = binary_operator(i, node) + i = expression(i, node) + + else if(token(i) in comparitors) + i = binary_operator(i, node) + + var/list/rhs = list() + i = expression(i, rhs) + + node[++node.len] = rhs + + + return i + + +//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' ) + unary_expression(i, list/node) + + if(token(i) in unary_operators) + var/list/unary_exp = list() + + unary_exp += token(i) + i++ + + if(token(i) in unary_operators) + i = unary_expression(i, unary_exp) + + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + unary_exp[++unary_exp.len] = expr + + else + i = value(i, unary_exp) + + node[++node.len] = unary_exp + + + else + parse_error("Expected unary operator but found '[token(i)]'") + + return i + + +//binary_operator: comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' + binary_operator(i, list/node) + + if(token(i) in (binary_operators + comparitors)) + node += token(i) + + else + parse_error("Unknown binary operator [token(i)]") + + return i + 1 + + +//value: variable | string | number | 'null' + value(i, list/node) + + if(token(i) == "null") + node += "null" + i++ + + else if(isnum(text2num(token(i)))) + node += text2num(token(i)) + i++ + + else if(copytext(token(i), 1, 2) in list("'", "\"")) + i = string(i, node) + + else + i = variable(i, node) + + return i + + + + +/*EXPLAIN SELECT * WHERE 42 = 6 * 9 OR val = - 5 == 7*/ \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 58437ae429a..bb8565986f5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -705,6 +705,8 @@ #include "code\modules\admin\verbs\randomverbs.dm" #include "code\modules\admin\verbs\ticklag.dm" #include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\helpers.dm" From b9011097a4b318b29a39b2ecbe9ccc13cee028c7 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 18 Jan 2014 18:59:02 +0000 Subject: [PATCH 002/102] Added support for calling procs via SQDL. Moved the verb category to "Debug". Added the verb to the "Debug verbs" button. --- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 37 +++++++++++++------ .../admin/verbs/SDQL2/SDQL_2_parser.dm | 25 ++++++++++--- code/modules/admin/verbs/mapping.dm | 1 + 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 8a51495f541..1c5876db7b6 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -1,7 +1,7 @@ // Code taken from /bay/station. /client/proc/SDQL2_query(query_text as message) - set category = "Admin" + set category = "Debug" if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. message_admins("\red ERROR: Non-admin [usr.key] attempted to execute a SDQL query!") log_admin("Non-admin [usr.key] attempted to execute a SDQL query!") @@ -63,6 +63,19 @@ message_admins("[usr] executed SDQL query: \"[query_text]\".") switch(query_tree[1]) + if("call") + var/list/call_list = query_tree["call"] + var/list/args_list = query_tree["args"] + + for(var/datum/d in objs) + for(var/v in call_list) + // To stop any procs which sleep from executing slowly. + if(d) + if(hascall(d, v)) + // Replace _ with a space because BYOND doesn't like it in call, hascall loves it though! (Really I can't believe this myself) + var/sanitized_v = replacetext(v, "_", " ") + spawn() call(d, sanitized_v)(arglist(args_list)) // Spawn in case the function sleeps. + if("delete") for(var/datum/d in objs) del d @@ -70,20 +83,21 @@ if("select") var/text = "" for(var/datum/t in objs) + text += "\ref[t]" if(istype(t, /atom)) var/atom/a = t if(a.x) - text += "\ref[t]: [t] at ([a.x], [a.y], [a.z])
" + text += ": [t] at ([a.x], [a.y], [a.z])
" else if(a.loc && a.loc.x) - text += "\ref[t]: [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z])
" + text += ": [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z])
" else - text += "\ref[t]: [t]
" + text += ": [t]
" else - text += "\ref[t]: [t]
" + text += ": [t]
" usr << browse(text, "window=SDQL-result") @@ -129,22 +143,22 @@ for(var/item in query_tree) if(istype(item, /list)) - world << "[spaces](" + usr << "[spaces](" SDQL_testout(item, indent + 1) - world << "[spaces])" + usr << "[spaces])" else - world << "[spaces][item]" + usr << "[spaces][item]" if(!isnum(item) && query_tree[item]) if(istype(query_tree[item], /list)) - world << "[spaces] (" + usr << "[spaces] (" SDQL_testout(query_tree[item], indent + 2) - world << "[spaces] )" + usr << "[spaces] )" else - world << "[spaces] [query_tree[item]]" + usr << "[spaces] [query_tree[item]]" @@ -422,5 +436,4 @@ if(word != "") query_list += word - return query_list \ No newline at end of file diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index d1d30b33b5e..8aac5b930e9 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -216,10 +216,12 @@ //call_query: 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]] call_query(i, list/node) var/list/func = list() - i = call_function(i + 1, func) + var/list/arguments = list() + i = call_function(i + 1, func, arguments) node += "call" node["call"] = func + node["args"] = arguments if(tokenl(i) != "on") return i @@ -404,11 +406,22 @@ //call_function: ['(' [arguments] ')'] - call_function(i, list/node) - - parse_error("Sorry, function calls aren't available yet") - - return i + call_function(i, list/node, list/arguments) + if(length(tokenl(i))) + node += token(i++) + if(token(i) != "(") + parse_error("Expected ( but found '[token(i)]'") + else if(token(i + 1) != ")") + do + i = expression(i + 1, arguments) + if(token(i) == ",") + continue + while(token(i) && token(i) != ")") + else + i++ + else + parse_error("Expected a function but found nothing") + return i + 1 //select_function: count_function diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 8ac539f6c79..1f57e890332 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -147,6 +147,7 @@ var/intercom_range_display_status = 0 src.verbs += /client/proc/disable_movement src.verbs += /client/proc/print_pointers src.verbs += /client/proc/count_movable_instances + src.verbs += /client/proc/SDQL2_query //src.verbs += /client/proc/cmd_admin_rejuvenate feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! From d669c66b6a296a38e0064b02b280a8f0fa1c2a93 Mon Sep 17 00:00:00 2001 From: Razharas Date: Thu, 20 Feb 2014 20:48:58 +0400 Subject: [PATCH 003/102] Atmos chamber consoles are not borked anymore Yep --- code/game/machinery/atmo_control.dm | 565 +++++++++--------- .../game/machinery/computer/buildandrepair.dm | 4 + 2 files changed, 298 insertions(+), 271 deletions(-) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 07c9715c9f8..35bcf2972c4 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -22,58 +22,57 @@ obj/machinery/air_sensor var/datum/radio_frequency/radio_connection - update_icon() +obj/machinery/air_sensor/update_icon() icon_state = "gsensor[on]" - process() - if(on) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time +obj/machinery/air_sensor/process() + if(on) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data["tag"] = id_tag + signal.data["timestamp"] = world.time - var/datum/gas_mixture/air_sample = return_air() + var/datum/gas_mixture/air_sample = return_air() - if(output&1) - signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1)) - if(output&2) - signal.data["temperature"] = round(air_sample.temperature,0.1) + if(output&1) + signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1)) + if(output&2) + signal.data["temperature"] = round(air_sample.temperature,0.1) - if(output>4) - var/total_moles = air_sample.total_moles() - if(total_moles > 0) - if(output&4) - signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1) - if(output&8) - signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1) - if(output&16) - signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1) - if(output&32) - signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1) - else - signal.data["oxygen"] = 0 - signal.data["toxins"] = 0 - signal.data["nitrogen"] = 0 - signal.data["carbon_dioxide"] = 0 - signal.data["sigtype"]="status" - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + if(output>4) + var/total_moles = air_sample.total_moles() + if(total_moles > 0) + if(output&4) + signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1) + if(output&8) + signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1) + if(output&16) + signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1) + if(output&32) + signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1) + else + signal.data["oxygen"] = 0 + signal.data["toxins"] = 0 + signal.data["nitrogen"] = 0 + signal.data["carbon_dioxide"] = 0 + signal.data["sigtype"]="status" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - proc - set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) +obj/machinery/air_sensor/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - initialize() +obj/machinery/air_sensor/initialize() + set_frequency(frequency) + +obj/machinery/air_sensor/New() + ..() + + if(radio_controller) set_frequency(frequency) - New() - ..() - - if(radio_controller) - set_frequency(frequency) - obj/machinery/computer/general_air_control icon = 'icons/obj/computer.dmi' icon_state = "tank" @@ -87,306 +86,330 @@ obj/machinery/computer/general_air_control var/list/sensor_information = list() var/datum/radio_frequency/radio_connection - attack_hand(mob/user) - if(..(user)) - return - //user << browse(return_text(),"window=computer") - user.set_machine(src) - //onclose(user, "computer") +obj/machinery/computer/general_air_control/attack_hand(mob/user) + if(..(user)) + return + //user << browse(return_text(),"window=computer") + user.set_machine(src) + //onclose(user, "computer") - var/datum/browser/popup = new(user, "computer", name, 465, 390) - popup.set_content(return_text()) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() + var/datum/browser/popup = new(user, "computer", name, 465, 390) + popup.set_content(return_text()) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() - interact(mob/user) - attack_hand(user) +obj/machinery/computer/general_air_control/interact(mob/user) + attack_hand(user) - process() - ..() - src.updateDialog() +obj/machinery/computer/general_air_control/process() + ..() + src.updateDialog() - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] - if(!id_tag || !sensors.Find(id_tag)) return + var/id_tag = signal.data["tag"] + if(!id_tag || !sensors.Find(id_tag)) return - sensor_information[id_tag] = signal.data + sensor_information[id_tag] = signal.data - proc/return_text() - var/sensor_data - if(sensors.len) - for(var/id_tag in sensors) - var/long_name = sensors[id_tag] - var/list/data = sensor_information[id_tag] - var/sensor_part = "

[long_name]

" - - if(data) - if(data["pressure"]) - sensor_part += " Pressure: [data["pressure"]] kPa
" - else - sensor_part += " Pressure: No pressure detected
" - if(data["temperature"]) - sensor_part += " Temperature: [data["temperature"]] K
" - if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) - sensor_part += " Gas Composition :" - if(data["oxygen"]) - sensor_part += "[data["oxygen"]]% O2; " - if(data["nitrogen"]) - sensor_part += "[data["nitrogen"]]% N; " - if(data["carbon_dioxide"]) - sensor_part += "[data["carbon_dioxide"]]% CO2; " - if(data["toxins"]) - sensor_part += "[data["toxins"]]% TX; " +obj/machinery/computer/general_air_control/proc/return_text() + var/sensor_data + if(sensors.len) + for(var/id_tag in sensors) + var/long_name = sensors[id_tag] + var/list/data = sensor_information[id_tag] + var/sensor_part = "

[long_name]

" + if(data) + if(data["pressure"]) + sensor_part += " Pressure: [data["pressure"]] kPa
" else - sensor_part = "[long_name] can not be found!
" + sensor_part += " Pressure: No pressure detected
" + if(data["temperature"]) + sensor_part += " Temperature: [data["temperature"]] K
" + if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) + sensor_part += " Gas Composition :" + if(data["oxygen"]) + sensor_part += "[data["oxygen"]]% O2; " + if(data["nitrogen"]) + sensor_part += "[data["nitrogen"]]% N; " + if(data["carbon_dioxide"]) + sensor_part += "[data["carbon_dioxide"]]% CO2; " + if(data["toxins"]) + sensor_part += "[data["toxins"]]% TX; " - sensor_data += sensor_part + else + sensor_part = "[long_name] can not be found!
" - else - sensor_data = "No sensors connected." + sensor_data += sensor_part - var/output = {" + else + sensor_data = "No sensors connected." + + var/output = {"

Sensor Data

[sensor_data]"} - return output + return output - proc - set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) +obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - initialize() - set_frequency(frequency) +obj/machinery/computer/general_air_control/initialize() + set_frequency(frequency) - large_tank_control - icon = 'icons/obj/computer.dmi' - icon_state = "tank" +obj/machinery/computer/general_air_control/large_tank_control + icon = 'icons/obj/computer.dmi' + icon_state = "tank" - var/input_tag - var/output_tag + var/input_tag + var/output_tag + frequency = 1441 + circuit = /obj/item/weapon/circuitboard/large_tank_control - var/list/input_info - var/list/output_info + var/list/input_info + var/list/output_info - var/pressure_setting = ONE_ATMOSPHERE * 45 + var/pressure_setting = ONE_ATMOSPHERE * 45 +obj/machinery/computer/general_air_control/large_tank_control/New() + ..() + set_frequency(frequency) - return_text() - var/output = ..() +obj/machinery/computer/general_air_control/large_tank_control/attackby(obj/item/I, mob/user) + ..() + if(istype(I, /obj/item/device/multitool)) + var/list/IO = list() + var/list/devices = radio_connection.devices["_default"] + for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) + var/list/text = text2list(U.id_tag, "_") //I know its colon but oh well + IO |= text[1] + for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) + var/list/text = text2list(U.id, "_") //I know its colon but oh well + IO |= text[1] + if(!IO.len) + user << "No machinery detected." + var/S = input("Select the device set: ", "Selection", IO[1]) as anything in IO + if(src) + src.input_tag = "[S]_in" + src.output_tag = "[S]_out" + name = "[uppertext(S)] Supply Control" + for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) + U.broadcast_status() + + for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) + U.broadcast_status() + +obj/machinery/computer/general_air_control/large_tank_control/return_text() + var/output = ..() //if(signal.data) // input_info = signal.data // Attempting to fix intake control -- TLE - output += "

Tank Control System

" - if(input_info) - var/power = (input_info["power"]) - var/volume_rate = input_info["volume_rate"] - output += {"Input: [power?("Injecting"):("On Hold")] Refresh
+ output += "

Tank Control System

" + if(input_info) + var/power = (input_info["power"]) + var/volume_rate = input_info["volume_rate"] + output += {"Input: [power?("Injecting"):("On Hold")] Refresh
Rate: [volume_rate] L/sec
"} - output += "Command: Toggle Power
" + output += "Command: Toggle Power
" - else - output += "ERROR: Can not find input port Search
" + else + output += "ERROR: Can not find input port Search
" - output += "
" + output += "
" - if(output_info) - var/power = (output_info["power"]) - var/output_pressure = output_info["internal"] - output += {"Output: [power?("Open"):("On Hold")] Refresh
+ if(output_info) + var/power = (output_info["power"]) + var/output_pressure = output_info["internal"] + output += {"Output: [power?("Open"):("On Hold")] Refresh
Max Output Pressure: [output_pressure] kPa
"} - output += "Command: Toggle Power Set Pressure
" + output += "Command: Toggle Power Set Pressure
" - else - output += "ERROR: Can not find output port Search
" + else + output += "ERROR: Can not find output port Search
" - output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
" + output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
" - return output + return output - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +obj/machinery/computer/general_air_control/large_tank_control/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] + var/id_tag = signal.data["tag"] - if(input_tag == id_tag) - input_info = signal.data - else if(output_tag == id_tag) - output_info = signal.data - else - ..(signal) + if(input_tag == id_tag) + input_info = signal.data + else if(output_tag == id_tag) + output_info = signal.data + else + ..(signal) - Topic(href, href_list) - if(..()) - return +obj/machinery/computer/general_air_control/large_tank_control/Topic(href, href_list) + if(..()) + return - if(href_list["adj_pressure"]) - var/change = text2num(href_list["adj_pressure"]) - pressure_setting = Clamp(pressure_setting + change, 0, 50*ONE_ATMOSPHERE) - spawn(1) - src.updateDialog() - return + if(href_list["adj_pressure"]) + var/change = text2num(href_list["adj_pressure"]) + pressure_setting = Clamp(pressure_setting + change, 0, 50*ONE_ATMOSPHERE) + spawn(1) + src.updateDialog() + return - if(!radio_connection) - return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - if(href_list["in_refresh_status"]) - input_info = null - signal.data = list ("tag" = input_tag, "status") + if(!radio_connection) + return 0 + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + if(href_list["in_refresh_status"]) + input_info = null + signal.data = list ("tag" = input_tag, "status") - if(href_list["in_toggle_injector"]) - input_info = null - signal.data = list ("tag" = input_tag, "power_toggle") + if(href_list["in_toggle_injector"]) + input_info = null + signal.data = list ("tag" = input_tag, "power_toggle") - if(href_list["out_refresh_status"]) - output_info = null - signal.data = list ("tag" = output_tag, "status") + if(href_list["out_refresh_status"]) + output_info = null + signal.data = list ("tag" = output_tag, "status") - if(href_list["out_toggle_power"]) - output_info = null - signal.data = list ("tag" = output_tag, "power_toggle") + if(href_list["out_toggle_power"]) + output_info = null + signal.data = list ("tag" = output_tag, "power_toggle") - if(href_list["out_set_pressure"]) - output_info = null - signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]") + if(href_list["out_set_pressure"]) + output_info = null + signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]") - signal.data["sigtype"]="command" - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + signal.data["sigtype"]="command" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - spawn(5) - src.updateDialog() + spawn(5) + src.updateDialog() - fuel_injection - icon = 'icons/obj/computer.dmi' - icon_state = "atmos" +obj/machinery/computer/general_air_control/fuel_injection + icon = 'icons/obj/computer.dmi' + icon_state = "atmos" - var/device_tag - var/list/device_info + var/device_tag + var/list/device_info - var/automation = 0 + var/automation = 0 - var/cutoff_temperature = 2000 - var/on_temperature = 1200 + var/cutoff_temperature = 2000 + var/on_temperature = 1200 - process() - if(automation) - if(!radio_connection) - return 0 +obj/machinery/computer/general_air_control/fuel_injection/process() + if(automation) + if(!radio_connection) + return 0 - var/injecting = 0 - for(var/id_tag in sensor_information) - var/list/data = sensor_information[id_tag] - if(data["temperature"]) - if(data["temperature"] >= cutoff_temperature) - injecting = 0 - break - if(data["temperature"] <= on_temperature) - injecting = 1 + var/injecting = 0 + for(var/id_tag in sensor_information) + var/list/data = sensor_information[id_tag] + if(data["temperature"]) + if(data["temperature"] >= cutoff_temperature) + injecting = 0 + break + if(data["temperature"] <= on_temperature) + injecting = 1 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src - signal.data = list( - "tag" = device_tag, - "power" = injecting, - "sigtype"="command" - ) + signal.data = list( + "tag" = device_tag, + "power" = injecting, + "sigtype"="command" + ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - ..() + ..() - return_text() - var/output = ..() +obj/machinery/computer/general_air_control/fuel_injection/return_text() + var/output = ..() - output += "Fuel Injection System
" - if(device_info) - var/power = device_info["power"] - var/volume_rate = device_info["volume_rate"] - output += {"Status: [power?("Injecting"):("On Hold")] Refresh
+ output += "Fuel Injection System
" + if(device_info) + var/power = device_info["power"] + var/volume_rate = device_info["volume_rate"] + output += {"Status: [power?("Injecting"):("On Hold")] Refresh
Rate: [volume_rate] L/sec
"} - if(automation) - output += "Automated Fuel Injection: Engaged
" - output += "Injector Controls Locked Out
" - else - output += "Automated Fuel Injection: Disengaged
" - output += "Injector: Toggle Power Inject (1 Cycle)
" + if(automation) + output += "Automated Fuel Injection: Engaged
" + output += "Injector Controls Locked Out
" + else + output += "Automated Fuel Injection: Disengaged
" + output += "Injector: Toggle Power Inject (1 Cycle)
" - else - output += "ERROR: Can not find device Search
" + else + output += "ERROR: Can not find device Search
" - return output + return output - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +obj/machinery/computer/general_air_control/fuel_injection/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] + var/id_tag = signal.data["tag"] - if(device_tag == id_tag) - device_info = signal.data - else - ..(signal) + if(device_tag == id_tag) + device_info = signal.data + else + ..(signal) - Topic(href, href_list) - if(..()) - return +obj/machinery/computer/general_air_control/fuel_injection/Topic(href, href_list) + if(..()) + return - if(href_list["refresh_status"]) - device_info = null - if(!radio_connection) - return 0 + if(href_list["refresh_status"]) + device_info = null + if(!radio_connection) + return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "status", - "sigtype"="command" - ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "status", + "sigtype"="command" + ) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - if(href_list["toggle_automation"]) - automation = !automation + if(href_list["toggle_automation"]) + automation = !automation - if(href_list["toggle_injector"]) - device_info = null - if(!radio_connection) - return 0 + if(href_list["toggle_injector"]) + device_info = null + if(!radio_connection) + return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "power_toggle", - "sigtype"="command" - ) - - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - - if(href_list["injection"]) - if(!radio_connection) - return 0 - - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "inject", - "sigtype"="command" - ) - - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "power_toggle", + "sigtype"="command" + ) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + if(href_list["injection"]) + if(!radio_connection) + return 0 + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "inject", + "sigtype"="command" + ) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) \ No newline at end of file diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 1d9384cb58d..8935287c8e8 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -28,6 +28,10 @@ var/list/records = null var/frame_desc = null +/obj/item/weapon/circuitboard/large_tank_control + name = "cirquir board (Large Tank Control)" + build_path = /obj/machinery/computer/general_air_control/large_tank_control + origin_tech = "programming=2;engineering=3;materials=2" /obj/item/weapon/circuitboard/turbine_computer name = "circuit board (Turbine Computer)" build_path = /obj/machinery/computer/turbine_computer From 9eee3e506755f122945c0d3f47c5d29bac415ee9 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 23 Feb 2014 14:55:12 -0800 Subject: [PATCH 004/102] First pass at a qdel() garbage collection system for tgstation Works pretty well. If it can't GC something, it'll just del() it and be done. Speed is amazing, holy shit. New procs you should be aware of: qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable). atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d. new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary. Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set. ISSUES: Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things. Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day. qdel() equipment doesn't unequip the item. Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here. Bots don't GC, probably in the radio controller. Lots of other shit doesn't GC but it's hard to find them because of the pipe spam. I think I'm calling Destroy() twice by accident. --- code/ATMOSPHERICS/atmospherics.dm | 41 +- .../binary_devices/binary_atmos_base.dm | 2 +- .../components/portables_connector.dm | 4 +- .../trinary_devices/trinary_base.dm | 4 +- .../components/unary/unary_base.dm | 4 +- .../components/unary/vent_pump.dm | 3 +- .../components/unary/vent_scrubber.dm | 3 +- code/ATMOSPHERICS/components/valve.dm | 4 +- code/ATMOSPHERICS/he_pipes.dm | 2 +- code/ATMOSPHERICS/pipes.dm | 17 +- code/FEA/FEA_fire.dm | 2 +- .../Sigyn/Department Sec/jobs.dm | 44 +- code/WorkInProgress/buildmode.dm | 6 +- code/WorkInProgress/carn/debug_pipenets.dm | 59 +++ code/WorkInProgress/carn/debug_powernets.dm | 11 +- code/WorkInProgress/explosion_particles.dm | 4 +- code/__HELPERS/unsorted.dm | 4 +- code/_compile_options.dm | 2 +- code/_globalvars/station.dm | 3 +- code/_onclick/telekinesis.dm | 12 +- code/controllers/_DynamicAreaLighting_TG.dm | 2 +- code/controllers/garbage.dm | 107 +++++ code/controllers/master_controller.dm | 14 +- code/controllers/supply_shuttle.dm | 18 +- code/controllers/verbs.dm | 5 +- code/datums/datumvars.dm | 4 +- code/datums/diseases/advance/advance.dm | 1 - code/datums/diseases/transformation.dm | 6 +- code/datums/diseases/wizarditis.dm | 6 +- .../helper_datums/construction_datum.dm | 6 +- code/datums/helper_datums/teleport.dm | 2 +- code/datums/mind.dm | 52 +-- code/datums/recipe.dm | 4 +- code/datums/spell.dm | 2 +- code/datums/spells/charge.dm | 2 +- code/datums/spells/conjure.dm | 2 +- code/datums/spells/dumbfire.dm | 4 +- code/datums/spells/ethereal_jaunt.dm | 6 +- code/datums/spells/horsemask.dm | 2 +- code/datums/spells/projectile.dm | 6 +- code/datums/spells/trigger.dm | 4 +- code/datums/supplypacks.dm | 5 +- code/defines/obj/weapon.dm | 4 +- code/game/atoms.dm | 22 +- code/game/atoms_movable.dm | 15 + code/game/dna.dm | 21 +- code/game/gamemodes/antag_spawner.dm | 18 +- code/game/gamemodes/blob/blobs/core.dm | 9 +- code/game/gamemodes/blob/blobs/factory.dm | 7 +- code/game/gamemodes/blob/blobs/node.dm | 5 +- code/game/gamemodes/blob/blobs/resource.dm | 2 +- code/game/gamemodes/blob/blobs/shield.dm | 2 +- code/game/gamemodes/blob/powers.dm | 2 +- code/game/gamemodes/blob/theblob.dm | 15 +- .../changeling/changeling_mutations.dm | 2 +- .../gamemodes/changeling/changeling_powers.dm | 10 +- code/game/gamemodes/cult/ritual.dm | 7 +- code/game/gamemodes/cult/runes.dm | 49 ++- code/game/gamemodes/cult/talisman.dm | 6 +- code/game/gamemodes/gameticker.dm | 8 +- .../gamemodes/malfunction/Malf_Modules.dm | 2 +- code/game/gamemodes/meteor/meteor.dm | 2 +- code/game/gamemodes/meteor/meteors.dm | 10 +- code/game/gamemodes/nuclear/nuclear.dm | 32 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 3 +- code/game/gamemodes/objective.dm | 2 +- code/game/gamemodes/sandbox/airlock_maker.dm | 6 +- code/game/gamemodes/setupgame.dm | 108 +---- code/game/gamemodes/wizard/artefact.dm | 7 +- code/game/gamemodes/wizard/soulstone.dm | 16 +- code/game/gamemodes/wizard/spellbook.dm | 8 +- code/game/gamemodes/wizard/wizard.dm | 36 +- code/game/jobs/job/assistant.dm | 4 +- code/game/jobs/job/captain.dm | 46 +- code/game/jobs/job/civilian.dm | 202 ++++----- code/game/jobs/job/civilian_chaplain.dm | 8 +- code/game/jobs/job/engineering.dm | 64 +-- code/game/jobs/job/medical.dm | 88 ++-- code/game/jobs/job/science.dm | 50 +-- code/game/jobs/job/security.dm | 126 +++--- code/game/jobs/job_controller.dm | 16 +- code/game/machinery/Beacon.dm | 4 +- code/game/machinery/Sleeper.dm | 12 +- code/game/machinery/alarm.dm | 20 +- code/game/machinery/atmo_control.dm | 8 + code/game/machinery/atmoalter/canister.dm | 6 +- code/game/machinery/atmoalter/meter.dm | 2 +- .../atmoalter/portable_atmospherics.dm | 2 +- code/game/machinery/autolathe.dm | 2 +- code/game/machinery/bots/bots.dm | 2 +- code/game/machinery/bots/cleanbot.dm | 8 +- code/game/machinery/bots/ed209bot.dm | 24 +- code/game/machinery/bots/floorbot.dm | 18 +- code/game/machinery/bots/medbot.dm | 12 +- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/bots/secbot.dm | 16 +- code/game/machinery/camera/camera.dm | 8 +- code/game/machinery/cloning.dm | 8 +- .../machinery/computer/HolodeckControl.dm | 19 +- code/game/machinery/computer/ai_core.dm | 12 +- code/game/machinery/computer/arcade.dm | 2 +- .../game/machinery/computer/buildandrepair.dm | 6 +- .../game/machinery/computer/communications.dm | 2 +- code/game/machinery/computer/computer.dm | 6 +- code/game/machinery/constructable_frame.dm | 8 +- code/game/machinery/cryo.dm | 3 +- code/game/machinery/deployable.dm | 12 +- code/game/machinery/doors/airlock.dm | 4 +- code/game/machinery/doors/door.dm | 8 +- code/game/machinery/doors/poddoor.dm | 32 +- code/game/machinery/doors/windowdoor.dm | 8 +- code/game/machinery/doppler_array.dm | 2 +- code/game/machinery/drying_rack.dm | 6 +- code/game/machinery/hologram.dm | 16 +- code/game/machinery/kitchen/gibber.dm | 6 +- code/game/machinery/kitchen/juicer.dm | 2 +- code/game/machinery/kitchen/microwave.dm | 2 +- code/game/machinery/kitchen/monkeyrecycler.dm | 2 +- code/game/machinery/kitchen/processor.dm | 2 +- code/game/machinery/machinery.dm | 17 +- code/game/machinery/magnet.dm | 2 +- code/game/machinery/newscaster.dm | 10 +- code/game/machinery/overview.dm | 2 +- code/game/machinery/pipe/construction.dm | 4 +- code/game/machinery/pipe/pipe_dispenser.dm | 6 +- code/game/machinery/portable_turret.dm | 32 +- code/game/machinery/rechargestation.dm | 4 +- code/game/machinery/recycler.dm | 2 +- code/game/machinery/robot_fabricator.dm | 2 +- code/game/machinery/shieldgen.dm | 38 +- code/game/machinery/suit_storage_unit.dm | 8 +- code/game/machinery/syndicatebeacon.dm | 4 +- code/game/machinery/syndicatebomb.dm | 12 +- code/game/machinery/telecomms/broadcaster.dm | 2 +- .../telecomms/machine_interactions.dm | 2 +- .../machinery/telecomms/telecomunications.dm | 4 +- code/game/machinery/teleporter.dm | 2 +- code/game/machinery/turrets.dm | 6 +- code/game/machinery/vending.dm | 10 +- code/game/machinery/washing_machine.dm | 26 +- code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/equipment/mecha_equipment.dm | 3 +- code/game/mecha/equipment/tools/tools.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 4 +- code/game/mecha/mech_fabricator.dm | 8 +- code/game/mecha/mecha.dm | 7 +- code/game/mecha/mecha_construction_paths.dm | 78 ++-- code/game/mecha/mecha_control_console.dm | 6 +- code/game/mecha/working/ripley.dm | 4 +- code/game/objects/effects/aliens.dm | 22 +- code/game/objects/effects/anomalies.dm | 4 +- code/game/objects/effects/bump_teleporter.dm | 2 +- .../effects/decals/Cleanable/aliens.dm | 2 +- .../effects/decals/Cleanable/humans.dm | 4 +- .../objects/effects/decals/Cleanable/misc.dm | 4 +- .../effects/decals/Cleanable/robots.dm | 2 +- .../game/objects/effects/decals/contraband.dm | 6 +- code/game/objects/effects/decals/decal.dm | 2 +- code/game/objects/effects/effect_system.dm | 27 +- code/game/objects/effects/forcefields.dm | 2 +- code/game/objects/effects/gibs.dm | 2 +- code/game/objects/effects/glowshroom.dm | 8 +- code/game/objects/effects/landmarks.dm | 77 ++-- code/game/objects/effects/manifest.dm | 2 +- code/game/objects/effects/mines.dm | 18 +- code/game/objects/effects/overlays.dm | 4 +- code/game/objects/effects/portals.dm | 6 +- .../objects/effects/spawners/bombspawner.dm | 4 +- .../objects/effects/spawners/vaultspawner.dm | 2 +- code/game/objects/effects/spiders.dm | 18 +- code/game/objects/explosion.dm | 30 +- code/game/objects/items.dm | 8 +- code/game/objects/items/apc_frame.dm | 6 +- code/game/objects/items/bodybag.dm | 4 +- code/game/objects/items/candle.dm | 2 +- code/game/objects/items/crayons.dm | 4 +- code/game/objects/items/devices/PDA/PDA.dm | 4 +- .../objects/items/devices/chameleonproj.dm | 8 +- code/game/objects/items/devices/flash.dm | 4 +- code/game/objects/items/devices/flashlight.dm | 2 +- .../objects/items/devices/lightreplacer.dm | 4 +- code/game/objects/items/devices/multitool.dm | 2 +- code/game/objects/items/devices/paicard.dm | 2 +- code/game/objects/items/devices/powersink.dm | 2 +- .../objects/items/devices/radio/beacon.dm | 2 +- .../objects/items/devices/radio/headset.dm | 4 +- .../objects/items/devices/radio/intercom.dm | 2 +- code/game/objects/items/devices/uplinks.dm | 2 +- code/game/objects/items/latexballoon.dm | 4 +- code/game/objects/items/robot/robot_parts.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 2 +- code/game/objects/items/shooting_range.dm | 4 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- .../game/objects/items/stacks/sheets/light.dm | 6 +- code/game/objects/items/stacks/stack.dm | 12 +- code/game/objects/items/stacks/tiles/light.dm | 2 +- code/game/objects/items/toys.dm | 36 +- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/game/objects/items/weapons/RCD.dm | 4 +- code/game/objects/items/weapons/RSF.dm | 2 +- .../objects/items/weapons/cigs_lighters.dm | 20 +- .../game/objects/items/weapons/clown_items.dm | 4 +- code/game/objects/items/weapons/explosives.dm | 4 +- .../objects/items/weapons/flamethrower.dm | 9 +- .../objects/items/weapons/gift_wrappaper.dm | 2 +- .../items/weapons/grenades/chem_grenade.dm | 4 +- .../items/weapons/grenades/emgrenade.dm | 2 +- .../items/weapons/grenades/flashbang.dm | 8 +- .../items/weapons/grenades/ghettobomb.dm | 6 +- .../items/weapons/grenades/smokebomb.dm | 2 +- .../items/weapons/grenades/spawnergrenade.dm | 2 +- .../items/weapons/grenades/syndieminibomb.dm | 2 +- code/game/objects/items/weapons/handcuffs.dm | 2 +- .../objects/items/weapons/implants/implant.dm | 4 +- .../items/weapons/implants/implantchair.dm | 2 +- code/game/objects/items/weapons/kitchen.dm | 2 +- .../objects/items/weapons/melee/energy.dm | 8 +- code/game/objects/items/weapons/mop.dm | 2 +- .../items/weapons/singularityhammer.dm | 19 +- .../objects/items/weapons/storage/backpack.dm | 6 +- .../objects/items/weapons/storage/bags.dm | 4 +- .../objects/items/weapons/storage/boxes.dm | 2 +- .../objects/items/weapons/storage/fancy.dm | 2 +- .../objects/items/weapons/storage/storage.dm | 2 +- .../objects/items/weapons/table_rack_parts.dm | 22 +- .../objects/items/weapons/tanks/jetpack.dm | 2 +- .../game/objects/items/weapons/tanks/tanks.dm | 10 +- .../objects/items/weapons/tanks/watertank.dm | 6 +- code/game/objects/items/weapons/tools.dm | 2 +- code/game/objects/items/weapons/twohanded.dm | 6 +- code/game/objects/items/weapons/weaponry.dm | 8 +- code/game/objects/objs.dm | 5 + code/game/objects/structures.dm | 8 +- code/game/objects/structures/OpTable.dm | 2 +- .../structures/crates_lockers/closets.dm | 16 +- .../crates_lockers/closets/statue.dm | 6 +- .../crates_lockers/closets/utility_closets.dm | 4 +- .../structures/crates_lockers/crates.dm | 2 +- .../structures/crates_lockers/largecrate.dm | 2 +- code/game/objects/structures/displaycase.dm | 6 +- code/game/objects/structures/door_assembly.dm | 6 +- code/game/objects/structures/electricchair.dm | 2 +- code/game/objects/structures/false_walls.dm | 18 +- code/game/objects/structures/girders.dm | 48 +-- code/game/objects/structures/grille.dm | 11 +- code/game/objects/structures/kitchen_spike.dm | 8 +- code/game/objects/structures/lamarr_cage.dm | 6 +- code/game/objects/structures/lattice.dm | 35 +- code/game/objects/structures/mineral_doors.dm | 9 +- code/game/objects/structures/morgue.dm | 32 +- code/game/objects/structures/signs.dm | 8 +- .../stool_bed_chair_nest/alien_nests.dm | 2 +- .../structures/stool_bed_chair_nest/bed.dm | 5 +- .../structures/stool_bed_chair_nest/chairs.dm | 4 +- .../structures/stool_bed_chair_nest/stools.dm | 10 +- code/game/objects/structures/tables_racks.dm | 54 +-- code/game/objects/structures/transit_tubes.dm | 8 +- code/game/objects/structures/watercloset.dm | 10 +- .../objects/structures/windoor_assembly.dm | 6 +- code/game/objects/structures/window.dm | 24 +- code/game/turfs/simulated/floor.dm | 4 +- code/game/turfs/simulated/walls.dm | 2 +- code/game/turfs/simulated/walls_reinforced.dm | 4 +- code/game/turfs/space/space.dm | 18 +- code/game/turfs/turf.dm | 2 +- code/modules/admin/topic.dm | 12 +- code/modules/admin/verbs/BrokenInhands.dm | 2 +- code/modules/admin/verbs/debug.dm | 408 +++++++++--------- code/modules/admin/verbs/mapping.dm | 4 +- code/modules/admin/verbs/one_click_antag.dm | 6 +- code/modules/admin/verbs/onlyone.dm | 16 +- code/modules/admin/verbs/randomverbs.dm | 6 +- code/modules/assembly/bomb.dm | 6 +- code/modules/assembly/holder.dm | 3 +- code/modules/assembly/infrared.dm | 25 +- code/modules/assembly/shock_kit.dm | 8 +- code/modules/awaymissions/corpse.dm | 34 +- code/modules/awaymissions/loot.dm | 2 +- .../awaymissions/maploader/swapmaps.dm | 8 +- .../mission_code/stationCollision.dm | 4 +- .../awaymissions/mission_code/wildwest.dm | 3 +- code/modules/awaymissions/trigger.dm | 4 +- code/modules/clothing/shoes/colour.dm | 2 +- code/modules/events/anomaly.dm | 2 +- code/modules/events/anomaly_bluespace.dm | 4 +- code/modules/events/anomaly_flux.dm | 2 +- code/modules/events/brand_intelligence.dm | 2 +- code/modules/events/dust.dm | 7 +- code/modules/events/holiday/xmas.dm | 2 +- code/modules/events/immovable_rod.dm | 4 +- code/modules/events/ninja.dm | 87 ++-- code/modules/events/spacevine.dm | 38 +- code/modules/flufftext/Hallucination.dm | 6 +- code/modules/hydroponics/biogenerator.dm | 2 +- code/modules/hydroponics/grown.dm | 380 +++++++++------- code/modules/hydroponics/growninedible.dm | 8 +- code/modules/hydroponics/hydroitemcode.dm | 12 +- code/modules/hydroponics/hydroponics.dm | 22 +- code/modules/hydroponics/seed_extractor.dm | 4 +- code/modules/hydroponics/seeds.dm | 2 +- code/modules/library/lib_items.dm | 10 +- code/modules/library/lib_machines.dm | 2 +- code/modules/mining/equipment_locker.dm | 12 +- code/modules/mining/laborcamp/laborstacker.dm | 2 +- code/modules/mining/machine_processing.dm | 2 +- code/modules/mining/machine_stacking.dm | 2 +- code/modules/mining/ores_coins.dm | 10 +- code/modules/mob/dead/observer/logout.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../carbon/alien/humanoid/caste/drone.dm | 2 +- .../mob/living/carbon/alien/humanoid/life.dm | 2 +- .../mob/living/carbon/alien/larva/larva.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../mob/living/carbon/alien/larva/powers.dm | 2 +- .../carbon/alien/special/alien_embryo.dm | 10 +- code/modules/mob/living/carbon/brain/brain.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 4 +- .../mob/living/carbon/human/inventory.dm | 8 +- code/modules/mob/living/carbon/human/life.dm | 4 +- .../mob/living/carbon/metroid/metroid.dm | 32 +- .../mob/living/carbon/metroid/powers.dm | 2 +- .../mob/living/carbon/monkey/monkey.dm | 2 +- code/modules/mob/living/death.dm | 8 +- code/modules/mob/living/living.dm | 14 +- code/modules/mob/living/silicon/ai/ai.dm | 4 +- .../mob/living/silicon/ai/freelook/eye.dm | 4 +- .../silicon/ai/freelook/update_triggers.dm | 6 +- code/modules/mob/living/silicon/pai/death.dm | 2 +- code/modules/mob/living/silicon/pai/life.dm | 4 +- .../modules/mob/living/silicon/robot/death.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 10 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../mob/living/simple_animal/constructs.dm | 2 +- .../mob/living/simple_animal/corpse.dm | 28 +- .../mob/living/simple_animal/friendly/crab.dm | 2 +- .../simple_animal/friendly/farm_animals.dm | 10 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../living/simple_animal/friendly/slime.dm | 2 +- .../mob/living/simple_animal/hostile/carp.dm | 2 +- .../living/simple_animal/hostile/hivebot.dm | 4 +- .../living/simple_animal/hostile/hostile.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 4 +- .../simple_animal/hostile/mining_mobs.dm | 14 +- .../living/simple_animal/hostile/mushroom.dm | 6 +- .../living/simple_animal/hostile/pirate.dm | 2 +- .../living/simple_animal/hostile/russian.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 4 +- .../mob/living/simple_animal/hostile/tree.dm | 4 +- .../mob/living/simple_animal/parrot.dm | 4 +- .../modules/mob/living/simple_animal/shade.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 4 +- code/modules/mob/living/simple_animal/worm.dm | 2 +- code/modules/mob/mob.dm | 27 +- code/modules/mob/mob_grab.dm | 20 +- code/modules/mob/mob_movement.dm | 6 +- code/modules/mob/mob_transformation_simple.dm | 4 +- code/modules/mob/new_player/logout.dm | 2 +- code/modules/mob/new_player/new_player.dm | 4 +- code/modules/mob/transform_procs.dm | 36 +- code/modules/paperwork/handlabeler.dm | 2 +- code/modules/paperwork/photocopier.dm | 8 +- code/modules/paperwork/photography.dm | 4 +- .../power/antimatter/containment_jar.dm | 4 +- code/modules/power/antimatter/control.dm | 12 +- code/modules/power/antimatter/shielding.dm | 18 +- code/modules/power/apc.dm | 64 +-- code/modules/power/cable.dm | 31 +- code/modules/power/cell.dm | 9 +- code/modules/power/engine.dm | 6 +- code/modules/power/lighting.dm | 25 +- code/modules/power/port_gen.dm | 4 +- code/modules/power/power.dm | 5 +- code/modules/power/singularity/collector.dm | 2 +- .../power/singularity/containment_field.dm | 4 +- code/modules/power/singularity/emitter.dm | 2 +- .../power/singularity/field_generator.dm | 4 +- code/modules/power/singularity/generator.dm | 2 +- .../particle_accelerator.dm | 22 +- .../particle_accelerator/particle_control.dm | 2 +- code/modules/power/singularity/singularity.dm | 28 +- code/modules/power/smes.dm | 10 +- code/modules/power/solar.dm | 18 +- code/modules/power/switch.dm | 2 +- code/modules/power/terminal.dm | 4 + code/modules/power/tracker.dm | 2 +- code/modules/projectiles/firing.dm | 2 +- code/modules/projectiles/guns/energy/laser.dm | 6 +- .../projectiles/guns/energy/nuclear.dm | 2 +- .../projectiles/guns/energy/special.dm | 4 +- code/modules/projectiles/guns/energy/stun.dm | 4 +- code/modules/projectiles/guns/magic.dm | 2 +- .../projectiles/guns/projectile/revolver.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 10 +- .../modules/projectiles/projectile/special.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 18 +- code/modules/reagents/Chemistry-Reagents.dm | 26 +- code/modules/reagents/Chemistry-Recipes.dm | 4 +- .../reagents/reagent_containers/borghydro.dm | 2 +- .../reagent_containers/food/condiment.dm | 6 +- .../reagent_containers/food/drinks.dm | 2 +- .../reagent_containers/food/drinks/bottle.dm | 2 +- .../reagent_containers/food/snacks.dm | 18 +- .../reagents/reagent_containers/glass.dm | 4 +- .../reagents/reagent_containers/pill.dm | 12 +- .../reagents/reagent_containers/spray.dm | 4 +- code/modules/reagents/reagent_dispenser.dm | 26 +- code/modules/reagents/syringe_gun.dm | 2 +- .../recycling/disposal-construction.dm | 2 +- code/modules/recycling/disposal.dm | 30 +- code/modules/recycling/sortingmachinery.dm | 10 +- code/modules/research/circuitprinter.dm | 4 +- code/modules/research/destructive_analyzer.dm | 2 +- code/modules/research/message_server.dm | 6 +- code/modules/research/rdconsole.dm | 8 +- code/modules/research/server.dm | 2 +- code/modules/surgery/implant_removal.dm | 2 +- code/modules/surgery/limb augmentation.dm | 2 +- code/modules/telesci/bscrystal.dm | 4 +- code/modules/telesci/gps.dm | 2 +- code/modules/telesci/telepad.dm | 6 +- code/modules/telesci/telesci_computer.dm | 2 +- code/unused/Ultralight.dm | 2 +- code/unused/assemblies.dm | 20 +- code/unused/biomass_rift.dm | 2 +- code/unused/carpetsplosion.dm | 2 +- code/unused/computer2/peripherals.dm | 2 +- code/unused/pipe.dm | 2 +- code/unused/splash_simulation.dm | 2 +- tgstation.dme | 44 +- 432 files changed, 2672 insertions(+), 2569 deletions(-) create mode 100644 code/WorkInProgress/carn/debug_pipenets.dm create mode 100644 code/controllers/garbage.dm diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index bcc5050bc08..82e726f61e4 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -24,8 +24,45 @@ obj/machinery/atmospherics/var/initialize_directions = 0 obj/machinery/atmospherics/var/pipe_color obj/machinery/atmospherics/process() + if(gc_destroyed) //comments on /vg/ imply that GC'd pipes still process + return PROCESS_KILL build_network() +/* +obj/machinery/atmospherics/Destroy() + + worldm << "Pre Destroy()" + test_pipenet() + ..() + world << "Post Destroy()" + test_pipenet() + +obj/machinery/atmospherics/verb/test_pipenet() + set src in view() + var/found = 0 + var/srcref = "\ref[src]" + var/netref = "" + var/pipelineref = "" + for(var/datum/pipe_network/Network in pipe_networks) + netref = "\ref[Network]" + for(var/obj/machinery/atmospherics/AT in Network.normal_members) + if(AT == src) + world << "Found [srcref] - [src.type] in normal_members of pipenet#[netref]" + found++ + for(var/datum/pipeline/PL in Network.line_members) + pipelineref = "\ref[PL]" + for(var/obj/machinery/atmospherics/AT in PL.members) + if(AT == src) + world << "Found [srcref] - [src.type] in members of pipeline#[pipelineref] in pipenet#[netref]" + found++ + for(var/obj/machinery/atmospherics/ATE in PL.edges) + if(ATE == src) + world << "Found [srcref] - [src.type] in edges of pipeline#[pipelineref] in pipenet#[netref]" + found++ + if(!found) + world << "Unable to find [srcref] in any pipenets" +*/ + obj/machinery/atmospherics/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) // Check to see if should be added to network. Add self if so and adjust variables appropriately. // Note don't forget to have neighbors look as well! @@ -83,7 +120,7 @@ obj/machinery/atmospherics/attackby(var/obj/item/weapon/W as obj, var/mob/user a for(var/obj/machinery/meter/meter in T) if(meter.target == src) new /obj/item/pipe_meter(T) - del(meter) - del(src) + qdel(meter) + qdel(src) else return ..() diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index bb19ff5f9ab..83affc6a0c3 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -44,7 +44,7 @@ obj/machinery/atmospherics/binary return null - Del() + Destroy() loc = null if(node1) diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index 09446b376ef..545163c9cf4 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -64,9 +64,7 @@ return null - Del() - loc = null - + Destroy() if(connected_device) connected_device.disconnect() diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index 73ab0965cf4..79af6de5272 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -52,9 +52,7 @@ obj/machinery/atmospherics/trinary return null - Del() - loc = null - + Destroy() if(node1) node1.disconnect(src) del(network1) diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 786cf73d3b2..f9b755de552 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -28,9 +28,7 @@ return null - Del() - loc = null - + Destroy() if(node) node.disconnect(src) del(network) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 8af45a38ba4..57f2c683541 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -314,12 +314,11 @@ stat |= NOPOWER update_icon() -/obj/machinery/atmospherics/unary/vent_pump/Del() +/obj/machinery/atmospherics/unary/vent_pump/Destroy() if(initial_loc) initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag ..() - return /* Alt-click to ventcrawl - Monkeys, aliens, and slimes diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 2ee546a8de3..5ca05a05941 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -252,9 +252,8 @@ return 1 return ..() -/obj/machinery/atmospherics/unary/vent_scrubber/Del() +/obj/machinery/atmospherics/unary/vent_scrubber/Destroy() if(initial_loc) initial_loc.air_scrub_info -= id_tag initial_loc.air_scrub_names -= id_tag ..() - return diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 13fa5eb7e74..c67f47a403a 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -64,9 +64,7 @@ obj/machinery/atmospherics/valve return null - Del() - loc = null - + Destroy() if(node1) node1.disconnect(src) del(network_node1) diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index c6ab586e1d9..556800d1efc 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -90,7 +90,7 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction var/have_node2 = node2?1:0 icon_state = "exposed[have_node1][have_node2]" if(!node1&&!node2) - del(src) + qdel(src) initialize() for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions)) diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index a1a29627b42..833ff4b93d1 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -51,10 +51,11 @@ obj/machinery/atmospherics/pipe return parent.return_network(reference) - Del() + Destroy() del(parent) if(air_temporary) loc.assume_air(air_temporary) + del(air_temporary) ..() @@ -166,7 +167,7 @@ obj/machinery/atmospherics/pipe var/datum/effect/effect/system/harmless_smoke_spread/smoke = new smoke.set_up(1,0, src.loc, 0) smoke.start() - del(src) + qdel(src) proc/normalize_dir() if(dir==3) @@ -174,7 +175,7 @@ obj/machinery/atmospherics/pipe else if(dir==12) dir = 4 - Del() + Destroy() if(node1) node1.disconnect(src) if(node2) @@ -204,7 +205,7 @@ obj/machinery/atmospherics/pipe else if(!node1&&!node2) - del(src) //TODO: silent deleting looks weird + qdel(src) //TODO: silent deleting looks weird var/have_node1 = node1?1:0 var/have_node2 = node2?1:0 icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" @@ -447,7 +448,7 @@ obj/machinery/atmospherics/pipe ..() - Del() + Destroy() if(node1) node1.disconnect(src) @@ -531,7 +532,7 @@ obj/machinery/atmospherics/pipe else if (nodealert) nodealert = 0 */ - Del() + Destroy() if(node1) node1.disconnect(src) @@ -642,7 +643,7 @@ obj/machinery/atmospherics/pipe else if (nodealert) nodealert = 0 */ - Del() + Destroy() if(node1) node1.disconnect(src) if(node2) @@ -701,7 +702,7 @@ obj/machinery/atmospherics/pipe icon_state = "manifold_[connected]_[unconnected]" if(!connected) - del(src) + qdel(src) return diff --git a/code/FEA/FEA_fire.dm b/code/FEA/FEA_fire.dm index 748371e7d26..621385b3462 100644 --- a/code/FEA/FEA_fire.dm +++ b/code/FEA/FEA_fire.dm @@ -174,7 +174,7 @@ return /* -/obj/effect/hotspot/Del() +/obj/effect/hotspot/Delete() if (istype(loc, /turf/simulated)) DestroyTurf() ..() diff --git a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm index ee005a2e037..288234142e6 100644 --- a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm +++ b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm @@ -3,8 +3,8 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") /datum/job/officer/proc/assign_sec_to_department(var/mob/living/carbon/human/H) if(!H) return 0 if(!sec_departments.len) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) else var/department = pick(sec_departments) sec_departments -= department @@ -12,23 +12,23 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") var/destination = null switch(department) if("supply") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) dep_access = list(access_mailsorting, access_mining) destination = /area/security/checkpoint/supply if("engineering") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) dep_access = list(access_construction, access_engine) destination = /area/security/checkpoint/engineering if("medical") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) dep_access = list(access_medical) destination = /area/security/checkpoint/medical if("science") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) dep_access = list(access_research) destination = /area/security/checkpoint/science var/teleport = 0 @@ -64,21 +64,21 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) assign_sec_to_department(H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) + H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_qdel(new /obj/item/device/pda/security(H), slot_belt) + H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet(H), slot_head) + H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_s_store) + H.equip_to_slot_or_qdel(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) + H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_l_hand) else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 diff --git a/code/WorkInProgress/buildmode.dm b/code/WorkInProgress/buildmode.dm index 63f7c32c3f0..e03279555dd 100644 --- a/code/WorkInProgress/buildmode.dm +++ b/code/WorkInProgress/buildmode.dm @@ -8,7 +8,7 @@ M.client.show_popup_menus = 1 for(var/obj/effect/bmode/buildholder/H) if(H.cl == M.client) - del(H) + qdel(H) else log_admin("[key_name(usr)] has entered build mode.") M.client.buildmode = 1 @@ -212,7 +212,7 @@ T.ChangeTurf(/turf/simulated/wall) return else if(istype(object,/obj)) - del(object) + qdel(object) return else if(istype(object,/turf) && pa.Find("alt") && pa.Find("left")) new/obj/machinery/door/airlock(get_turf(object)) @@ -242,7 +242,7 @@ var/obj/A = new holder.buildmode.objholder (get_turf(object)) A.dir = holder.builddir.dir else if(pa.Find("right")) - if(isobj(object)) del(object) + if(isobj(object)) qdel(object) if(3) if(pa.Find("left")) //I cant believe this shit actually compiles. diff --git a/code/WorkInProgress/carn/debug_pipenets.dm b/code/WorkInProgress/carn/debug_pipenets.dm new file mode 100644 index 00000000000..ee16e00860b --- /dev/null +++ b/code/WorkInProgress/carn/debug_pipenets.dm @@ -0,0 +1,59 @@ +/client/verb/pipenets_debug() + if(!holder) return + for(var/i=1,i<=pipe_networks.len,i++) +// src << "[copytext("\ref[powernets[i]]",8,12)]" + src << "[copytext("\ref[pipe_networks[i]]",8,12)]" + src << "[pipe_networks.len] total pipenets" + + +/client/verb/pipenet_overlays() + var/list/L = list() + for(var/obj/machinery/atmospherics/AT in view(mob)) + AT.maptext = null + L |= AT + for(var/datum/pipe_network/Network in pipe_networks) + for(var/obj/machinery/atmospherics/AT in Network.normal_members) + if(!(AT in L)) + continue + if(!AT.maptext) + AT.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" + for(var/datum/pipeline/PL in Network.line_members) + for(var/obj/machinery/atmospherics/AT in PL.members) + if(!(AT in L)) + continue + if(!AT.maptext) + AT.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" + for(var/obj/machinery/atmospherics/ATE in PL.edges) + if(!(ATE in L)) + continue + if(!ATE.maptext) + ATE.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [ATE.name] net#[copytext("\ref[Network]",8,12)])" + +/client/verb/follow_pipenet(var/netref as null|anything in get_refs(pipe_networks)) + var/datum/pipe_network/Network = locate(netref) + if(!Network) + src << "Unable to locate [netref]" + return + for(var/obj/machinery/atmospherics/AT in world) + if(AT) + animate(AT, alpha = 255, time = 0) + for(var/obj/machinery/atmospherics/AT in Network.normal_members) + if(AT) + animate(AT, alpha = 0, time = 1, loop = -1) + animate(alpha = 255, time = 1) + for(var/datum/pipeline/PL in Network.line_members) + for(var/obj/machinery/atmospherics/AT in PL.members) + if(AT) + animate(AT, alpha = 0, time = 1, loop = -1) + animate(alpha = 255, time = 1) + +/proc/get_refs(var/list/L) + . = list() + for(var/everything in L) + . += "\ref[everything]" \ No newline at end of file diff --git a/code/WorkInProgress/carn/debug_powernets.dm b/code/WorkInProgress/carn/debug_powernets.dm index 04d2fc929ec..ceb96e01af4 100644 --- a/code/WorkInProgress/carn/debug_powernets.dm +++ b/code/WorkInProgress/carn/debug_powernets.dm @@ -1,14 +1,13 @@ -/* -client/verb/powernets_debug() +/client/verb/powernets_debug() if(!holder) return - var/ref_holder = "\ref[holder]" for(var/i=1,i<=powernets.len,i++) - src << "[copytext("\ref[powernets[i]]",8,12)]" +// src << "[copytext("\ref[powernets[i]]",8,12)]" + src << "[copytext("\ref[powernets[i]]",8,12)]" -client/verb/powernet_overlays() +/client/verb/powernet_overlays() for(var/obj/structure/cable/C in cable_list) C.maptext = "[copytext("\ref[C.powernet]",8,12)]" for(var/obj/machinery/power/M in machines) M.maptext = "[copytext("\ref[M.powernet]",8,12)]" -*/ + diff --git a/code/WorkInProgress/explosion_particles.dm b/code/WorkInProgress/explosion_particles.dm index 9cf81b27aee..3163f8aab4c 100644 --- a/code/WorkInProgress/explosion_particles.dm +++ b/code/WorkInProgress/explosion_particles.dm @@ -9,7 +9,7 @@ /obj/effect/expl_particles/New() ..() spawn (15) - del(src) + qdel(src) return /obj/effect/expl_particles/Move() @@ -49,7 +49,7 @@ /obj/effect/explosion/New() ..() spawn (10) - del(src) + qdel(src) return /datum/effect/system/explosion diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index d5da473d3a5..cbfa87416d7 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -591,7 +591,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl animation.master = target flick(flick_anim, animation) sleep(max(sleeptime, 15)) - del(animation) + qdel(animation) //Will return the contents of an atom recursivly to a depth of 'searchDepth' @@ -863,7 +863,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl X.icon = 'icons/turf/shuttle.dmi' X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state X.name = "wall" - del(O) // prevents multiple shuttle corners from stacking + qdel(O) // prevents multiple shuttle corners from stacking continue if(!istype(O,/obj)) continue O.loc = X diff --git a/code/_compile_options.dm b/code/_compile_options.dm index b7e6e4850bb..02e99437b91 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -1,6 +1,6 @@ #define DEBUG //Enables byond profiling and full runtime logs - note, this may also be defined in your .dme file //#define dellogging //Enables logging of forced del() calls (used for debugging) -//#define TESTING //Enables in-depth debug messages to runtime log (used for debugging) +#define TESTING //Enables in-depth debug messages to runtime log (used for debugging) //By using the testing("message") proc you can create debug-feedback for people with this //uncommented, but not visible in the release version) diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index c6b4658d446..e3c82de1885 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,5 +1,6 @@ var/global/obj/effect/datacore/data_core = null -var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event +//var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event +//Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del() var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 0abb637cce9..987a84d45aa 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -80,14 +80,14 @@ var/const/tk_maxrange = 15 if(focus.Adjacent(loc)) focus.loc = loc - del(src) + qdel(src) return //stops TK grabs being equipped anywhere but into hands equipped(var/mob/user, var/slot) if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return - del(src) + qdel(src) return @@ -99,10 +99,10 @@ var/const/tk_maxrange = 15 if(!target || !user) return if(last_throw+3 > world.time) return if(!host || host != user) - del(src) + qdel(src) return if(!(TK in host.mutations)) - del(src) + qdel(src) return if(isobj(target) && !isturf(target.loc)) return @@ -152,7 +152,7 @@ var/const/tk_maxrange = 15 proc/focus_object(var/obj/target, var/mob/living/user) if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later if(target.anchored || !isturf(target.loc)) - del src + qdel(src) return focus = target update_icon() @@ -195,7 +195,7 @@ var/const/tk_maxrange = 15 return 1 */ -//equip_to_slot_or_del(obj/item/W, slot, del_on_fail = 1) +//equip_to_slot_or_qdel(obj/item/W, slot, qdel_on_fail = 1) /* if(istype(user, /mob/living/carbon)) if(user:mutations & TK && get_dist(source, user) <= 7) diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm index 4b04963a45c..d8cf40a0d41 100644 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ b/code/controllers/_DynamicAreaLighting_TG.dm @@ -139,7 +139,7 @@ atom/movable/New() light = new(src) //Objects with opacity will trigger nearby lights to update at next lighting process. -atom/movable/Del() +atom/movable/Destroy() if(opacity) if(isturf(loc)) if(loc:lighting_lumcount > 1) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm new file mode 100644 index 00000000000..3b897bf3944 --- /dev/null +++ b/code/controllers/garbage.dm @@ -0,0 +1,107 @@ +#define GC_COLLECTIONS_PER_TICK 100 // maybe make this a config option at some point +#define GC_COLLECTION_TIMEOUT 300 // deciseconds to wait to let running procs finish before we just say fuck it and force del() the object +var/datum/controller/garbage_collector/garbage = new() +var/list/uncollectable_vars=list( +// "bounds", // bounds and its ilk are all caught by the issaved() check later on + "contents", + "gc_destroyed", + "gender", // Causes runtimes if the logging is on + "parent", + "step_size", +) +// These are the vars left from /vg/'s implementation that aren't const or global +// I dunno how many are necessary but since most of these are numbers anyways, I don't care. + +/datum/controller/garbage_collector + var/list/queue = list() // list of things that have yet to have all their vars nulled out + var/list/destroyed = list() // list of refID's of things that should be garbage collected + // refID's are associated with the time at which they time out and need to be manually del() + // we do this so we aren't constantly locating them and preventing them from being gc'd + +/datum/controller/garbage_collector/proc/AddTrash(var/atom/movable/A) + if(!istype(A)) + return +// testing("GC: AddTrash([A.type])") + queue |= A + +/datum/controller/garbage_collector/proc/Pop() + var/atom/movable/A = queue[1] + if(!A) + queue.Cut(1, 2) +// testing("GC: Pop() given null") + return + if(!istype(A,/atom/movable)) +// testing("GC: -- Pop() given [A.type] --") + queue.Cut(1, 2) + del(A) + return + for(var/vname in A.vars) + if(!issaved(A.vars[vname])) +// testing("GC: Skipping [vname] in [A.type]: it's const|global|tmp") + continue + if(vname in uncollectable_vars) +// testing("GC: Skipping [vname] in [A.type]: it's uncollectable") + continue +// testing("GC: Unsetting [vname] in [A.type]") + A.vars[vname] = null +// testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.timeofday]") + destroyed["\ref[A]"] = A.gc_destroyed + queue.Cut(1, 2) + +/datum/controller/garbage_collector/proc/process() + var/i = 1 + while(queue.len && i <= GC_COLLECTIONS_PER_TICK) + Pop() + i++ + i = 1 + var/time_to_kill = world.timeofday - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() + if(time_to_kill < 1) // Within the first GC_COLLECTION_TIMEOUT deciseconds of midnight + time_to_kill += MIDNIGHT_ROLLOVER + while(i <= destroyed.len && i <= GC_COLLECTIONS_PER_TICK) + var/refID = destroyed[i] + var/GCd_at_time = destroyed[refID] + if(GCd_at_time > time_to_kill) +// testing("GC: [refID] not old enough, breaking at [world.timeofday] for [time_to_kill - GCd_at_time] deciseconds") + i++ + break // Everything else is newer, skip them + var/atom/A = locate(refID) +// testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.timeofday]") + if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake + // Something's still referring to the qdel'd object. Kill it. + testing("GC: -- \ref[A] | [A.type] was unable to be garbage collected and was force del() --") + del(A) +// else +// testing("GC: [refID] properly GC'd at [world.timeofday] with timeout [GCd_at_time]") + destroyed.Cut(i, ++i) // also increases i in general +/** +* NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable +* OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE. +* While I'm leaving the above comment in since /atoms cannot be garbage collected, datums and lists can be garbage collected just fine. +* Read the DM guide on it. Hit f1 and search for "garbage collection" +*/ +/proc/qdel(var/atom/movable/A) + if(!A) + return + if(!istype(A)) + warning("qdel() passed object of type [A.type]. qdel() can only handle /atom/movable types.") + del(A) + return + if(!garbage) + del(A) + return + // Let our friend know they're about to get fucked up. + A.Destroy() + garbage.AddTrash(A) + +/* // If you can get this to run, report the results please. +/client/verb/delete_everything() + set name = "qdel() everything" + set category = "Debug" + set background = 1 + + if(input("Are you sure you want to do that?") as null|anything in list("Yes","No") != "Yes") + return + src << "qdel(everything)" + for(var/atom/movable/everything in world) + qdel(everything) +*/ \ No newline at end of file diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 31b015dfa24..2947715b661 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -27,6 +27,7 @@ datum/controller/game_controller var/nano_cost = 0 var/events_cost = 0 var/ticker_cost = 0 + var/gc_cost = 0 var/total_cost = 0 var/last_thing_processed @@ -63,7 +64,6 @@ datum/controller/game_controller/New() if(!emergency_shuttle) emergency_shuttle = new /datum/shuttle_controller/emergency_shuttle() if(!supply_shuttle) supply_shuttle = new /datum/controller/supply_shuttle() - datum/controller/game_controller/proc/setup() world.tick_lag = config.Ticklag @@ -201,6 +201,12 @@ datum/controller/game_controller/proc/process() ticker.process() ticker_cost = (world.timeofday - timer) / 10 + // GC + timer = world.timeofday + last_thing_processed = garbage.type + garbage.process() + gc_cost = (world.timeofday - timer) / 10 + //TIMING total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost @@ -228,7 +234,7 @@ datum/controller/game_controller/proc/process_mobs() var/i = 1 while(i<=mob_list.len) var/mob/M = mob_list[i] - if(M) + if(M && !M.gc_destroyed) last_thing_processed = M.type M.Life() i++ @@ -250,7 +256,7 @@ datum/controller/game_controller/proc/process_machines() var/i = 1 while(i<=machines.len) var/obj/machinery/Machine = machines[i] - if(Machine) + if(Machine && !Machine.gc_destroyed) last_thing_processed = Machine.type if(Machine.process() != PROCESS_KILL) if(Machine) @@ -264,7 +270,7 @@ datum/controller/game_controller/proc/process_objects() var/i = 1 while(i<=processing_objects.len) var/obj/Object = processing_objects[i] - if(Object) + if(Object && !Object.gc_destroyed) last_thing_processed = Object.type Object.process() i++ diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 0267666cbb3..deac0c1e37e 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -49,13 +49,13 @@ var/global/datum/controller/supply_shuttle/supply_shuttle /obj/structure/plasticflaps/ex_act(severity) switch(severity) if (1) - del(src) + qdel(src) if (2) if (prob(50)) - del(src) + qdel(src) if (3) if (prob(5)) - del(src) + qdel(src) /obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates name = "airtight plastic flaps" @@ -67,7 +67,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle T.blocks_air = 1 ..() - Del() //lazy hack to set the turf to allow air to pass if it's a simulated floor + Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor //wow this is terrible var/turf/T = get_turf(loc) if(T) if(istype(T, /turf/simulated/floor)) @@ -231,7 +231,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle var/crate_count = 0 centcom_message = "" - + for(var/atom/movable/MA in shuttle) if(MA.anchored) continue @@ -286,7 +286,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle if(istype(A, /obj/item/stack/sheet/mineral/plasma)) var/obj/item/stack/sheet/mineral/plasma/P = A plasma_count += P.amount - + if(istype(A, /obj/item/seeds)) var/obj/item/seeds/S = A if(S.rarity == 0) // Mundane species @@ -303,8 +303,8 @@ var/global/datum/controller/supply_shuttle/supply_shuttle discoveredPlants[S.type] = S.potency centcom_message += "+[S.rarity]: New species discovered: \"[capitalize(S.species)]\". Excellent work.
" points += S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later - del(MA) - + qdel(MA) + if(plasma_count) centcom_message += "+[round(plasma_count/plasma_per_point)]: Received [plasma_count] units of exotic material.
" points += round(plasma_count / plasma_per_point) @@ -387,7 +387,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle // If it has multiple items, there's a 1% of each going missing... Not for secure crates or those large wooden ones, though. if(contains.len > 1 && prob(1) && !findtext(SP.containertype,"/secure/") && !findtext(SP.containertype,"/largecrate/")) slip.erroneous |= MANIFEST_ERROR_ITEM // This item was not included in the shipment! - del(B2) // Lost in space... or the loading dock. + qdel(B2) // Lost in space... or the loading dock. //manifest finalisation slip.info += "
" diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 18fe42bbe4a..40eb5047c9a 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -28,7 +28,7 @@ return -/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events")) +/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Garbage","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events")) set category = "Debug" set name = "Debug Controller" set desc = "Debug the various periodic loop controllers for the game (be careful!)" @@ -47,6 +47,9 @@ if("Lighting") debug_variables(lighting_controller) feedback_add_details("admin_verb","DLighting") + if("Garbage") + debug_variables(garbage) + feedback_add_details("admin_verb","DGarbage") if("Air") debug_variables(air_master) feedback_add_details("admin_verb","DAir") diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 80f451fc871..d333851fb73 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -617,7 +617,7 @@ client for(var/obj/Obj in world) if(Obj.type == O_type) i++ - del(Obj) + qdel(Obj) if(!i) usr << "No objects of this type exist" return @@ -628,7 +628,7 @@ client for(var/obj/Obj in world) if(istype(Obj,O_type)) i++ - del(Obj) + qdel(Obj) if(!i) usr << "No objects of this type exist" return diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 0b3e1e7e17b..3924c740a54 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -108,7 +108,6 @@ var/list/advance_cures = list( affected_mob.resistances[id] = id affected_mob.viruses -= src //remove the datum from the list del(src) //delete the datum to stop it processing - return // Returns the advance disease with a different reference memory. /datum/disease/advance/Copy(var/process = 0) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 40413e626af..475c4139cf1 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -47,20 +47,20 @@ affected_mob.invisibility = 101 for(var/obj/item/W in affected_mob) if(istype(W, /obj/item/weapon/implant)) - del(W) + qdel(W) continue W.layer = initial(W.layer) W.loc = affected_mob.loc W.dropped(affected_mob) var/mob/living/new_mob = new new_form(affected_mob.loc) - if(istype(new_mob)) + if(istype(new_mob)) new_mob.a_intent = "harm" new_mob.universal_speak = 1 if(affected_mob.mind) affected_mob.mind.transfer_to(new_mob) else new_mob.key = affected_mob.key - del(affected_mob) + qdel(affected_mob) /datum/disease/transformation/robot diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index 4442d3a2eca..d235a94e6b6 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -61,21 +61,21 @@ STI KALY - blind if(prob(chance)) if(!istype(H.head, /obj/item/clothing/head/wizard)) if(!H.unEquip(H.head)) - del H.head + qdel(H.head) H.head = new /obj/item/clothing/head/wizard(H) H.head.layer = 20 return if(prob(chance)) if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe)) if(!H.unEquip(H.wear_suit)) - del H.wear_suit + qdel(H.wear_suit) H.wear_suit = new /obj/item/clothing/suit/wizrobe(H) H.wear_suit.layer = 20 return if(prob(chance)) if(!istype(H.shoes, /obj/item/clothing/shoes/sandal)) if(!H.unEquip(H.shoes)) - del H.shoes + qdel(H.shoes) H.shoes = new /obj/item/clothing/shoes/sandal(H) H.shoes.layer = 20 return diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 7c2fabbc9b8..f292e7648f7 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -11,8 +11,7 @@ ..() holder = atom if(!holder) //don't want this without a holder - spawn - del src + qdel(src) set_desc(steps.len) return @@ -60,8 +59,7 @@ proc/spawn_result() if(result) new result(get_turf(holder)) - spawn() - del holder + qdel(holder) return proc/set_desc(index as num) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index f68de313496..c6abd2773e8 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -49,7 +49,7 @@ //must succeed in most cases proc/setTeleatom(atom/movable/ateleatom) if(istype(ateleatom, /obj/effect) && !istype(ateleatom, /obj/effect/dummy/chameleon)) - del(ateleatom) + qdel(ateleatom) return 0 if(istype(ateleatom)) teleatom = ateleatom diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 02ff54ea341..7f7f02918bb 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -569,7 +569,7 @@ datum/mind var/obj/item/device/flash/flash = locate() in L if (!flash) usr << "\red Deleting flash failed!" - del(flash) + qdel(flash) if("repairflash") var/list/L = current.get_contents() @@ -582,7 +582,7 @@ datum/mind if("reequip") var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L - del(flash) + qdel(flash) take_uplink() var/fail = 0 fail |= !ticker.mode.equip_traitor(current, 1) @@ -729,15 +729,15 @@ datum/mind current.loc = get_turf(locate("landmark*Syndicate-Spawn")) if("dressup") var/mob/living/carbon/human/H = current - del(H.belt) - del(H.back) - del(H.ears) - del(H.gloves) - del(H.head) - del(H.shoes) - del(H.wear_id) - del(H.wear_suit) - del(H.w_uniform) + qdel(H.belt) + qdel(H.back) + qdel(H.ears) + qdel(H.gloves) + qdel(H.head) + qdel(H.shoes) + qdel(H.wear_id) + qdel(H.wear_suit) + qdel(H.w_uniform) if (!ticker.mode.equip_syndicate(current)) usr << "\red Equipping a syndicate failed!" @@ -848,7 +848,7 @@ datum/mind A.malf_picker.remove_verbs(A) A.make_laws() - del(A.malf_picker) + qdel(A.malf_picker) A.show_laws() A.icon_state = "ai" @@ -917,10 +917,10 @@ datum/mind var/list/L = current.get_contents() for (var/t in L) if (istype(t, /obj/item/device/pda)) - if (t:uplink) del(t:uplink) + if (t:uplink) qdel(t:uplink) t:uplink = null else if (istype(t, /obj/item/device/radio)) - if (t:traitorradio) del(t:traitorradio) + if (t:traitorradio) qdel(t:traitorradio) t:traitorradio = null t:traitor_frequency = 0.0 else if (istype(t, /obj/item/weapon/SWF_uplink) || istype(t, /obj/item/weapon/syndicate_uplink)) @@ -929,7 +929,7 @@ datum/mind R.loc = current.loc R.traitorradio = null R.traitor_frequency = 0.0 - del(t) + qdel(t) // remove wizards spells //If there are more special powers that need removal, they can be procced into here./N @@ -951,7 +951,7 @@ datum/mind proc/take_uplink() var/obj/item/device/uplink/hidden/H = find_syndicate_uplink() if(H) - del(H) + qdel(H) proc/make_AI_Malf() @@ -992,15 +992,15 @@ datum/mind current.loc = get_turf(locate("landmark*Syndicate-Spawn")) var/mob/living/carbon/human/H = current - del(H.belt) - del(H.back) - del(H.ears) - del(H.gloves) - del(H.head) - del(H.shoes) - del(H.wear_id) - del(H.wear_suit) - del(H.w_uniform) + qdel(H.belt) + qdel(H.back) + qdel(H.ears) + qdel(H.gloves) + qdel(H.head) + qdel(H.shoes) + qdel(H.wear_id) + qdel(H.wear_suit) + qdel(H.w_uniform) ticker.mode.equip_syndicate(current) @@ -1089,7 +1089,7 @@ datum/mind var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L - del(flash) + qdel(flash) take_uplink() var/fail = 0 // fail |= !ticker.mode.equip_traitor(current, 1) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index d2c747dd5b8..4f2750c0c06 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -79,7 +79,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) O.reagents.trans_to(result_obj, O.reagents.total_volume) - del(O) + qdel(O) container.reagents.clear_reagents() return result_obj @@ -91,7 +91,7 @@ O.reagents.del_reagent("nutriment") O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) - del(O) + qdel(O) container.reagents.clear_reagents() return result_obj diff --git a/code/datums/spell.dm b/code/datums/spell.dm index ac375b9b2a9..967ec1b927f 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -166,7 +166,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin spell.anchored = 1 spell.density = 0 spawn(overlay_lifespan) - del(spell) + qdel(spell) /obj/effect/proc_holder/spell/proc/after_cast(list/targets) for(var/atom/target in targets) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 1584f1e32c8..d0a86b7ea0a 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -38,7 +38,7 @@ var/obj/item/weapon/spellbook/oneuse/I = item if(prob(80)) user.visible_message("[I] catches fire!") - del(I) + qdel(I) else I.used = 0 charged_item = I diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index 583c9b6dff8..7969cde3db8 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -49,7 +49,7 @@ if(summon_lifespan) spawn(summon_lifespan) if(summoned_object) - del(summoned_object) + qdel(summoned_object) else switch(charge_type) if("recharge") diff --git a/code/datums/spells/dumbfire.dm b/code/datums/spells/dumbfire.dm index e5f67e32a82..c1eb4889a93 100644 --- a/code/datums/spells/dumbfire.dm +++ b/code/datums/spells/dumbfire.dm @@ -76,11 +76,11 @@ trail.icon_state = proj_trail_icon_state trail.density = 0 spawn(proj_trail_lifespan) - del(trail) + qdel(trail) current_loc = projectile.loc sleep(proj_step_delay) if(projectile) - del(projectile) \ No newline at end of file + qdel(projectile) \ No newline at end of file diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 20de7205d71..73a8bf24b4e 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -50,8 +50,8 @@ break target.canmove = 1 target.client.eye = target - del(animation) - del(holder) + qdel(animation) + qdel(holder) /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) animation.icon_state = "liquify" @@ -74,7 +74,7 @@ density = 0 anchored = 1 -/obj/effect/dummy/spell_jaunt/Del() +/obj/effect/dummy/spell_jaunt/Destroy() // Eject contents if deleted somehow for(var/atom/movable/AM in src) AM.loc = get_turf(src) diff --git a/code/datums/spells/horsemask.dm b/code/datums/spells/horsemask.dm index 783340e2c9b..4bf4f5d5d57 100644 --- a/code/datums/spells/horsemask.dm +++ b/code/datums/spells/horsemask.dm @@ -36,7 +36,7 @@ target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \ "Your face burns up, and shortly after the fire you realise you have the face of a horse!") if(!target.unEquip(target.wear_mask)) - del target.wear_mask + qdel(target.wear_mask) target.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) flick("e_flash", target.flash) diff --git a/code/datums/spells/projectile.dm b/code/datums/spells/projectile.dm index c63922ef7a2..3413fae3eff 100644 --- a/code/datums/spells/projectile.dm +++ b/code/datums/spells/projectile.dm @@ -61,7 +61,7 @@ break if(!target || (!proj_lingering && projectile.loc == current_loc)) //if it didn't move since last time - del(projectile) + qdel(projectile) break if(proj_trail && projectile) @@ -72,7 +72,7 @@ trail.icon_state = proj_trail_icon_state trail.density = 0 spawn(proj_trail_lifespan) - del(trail) + qdel(trail) if(projectile.loc in range(target.loc,proj_trigger_range)) projectile.perform(list(target)) @@ -83,4 +83,4 @@ sleep(proj_step_delay) if(projectile) - del(projectile) \ No newline at end of file + qdel(projectile) \ No newline at end of file diff --git a/code/datums/spells/trigger.dm b/code/datums/spells/trigger.dm index 1b7f2b330ff..65205fc29f3 100644 --- a/code/datums/spells/trigger.dm +++ b/code/datums/spells/trigger.dm @@ -12,9 +12,9 @@ var/spell_to_add = text2path(spell) new spell_to_add(src) //should result in adding to contents, needs testing -/obj/effect/proc_holder/spell/targeted/trigger/Del() +/obj/effect/proc_holder/spell/targeted/trigger/Destroy() //I think this entire proc is unnecessary but ok for(var/spell in contents) - del(spell) + qdel(spell) ..() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index ed678e34473..53b224244d1 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -57,7 +57,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine if(!path) continue var/atom/movable/AM = new path() manifest += "
  • [AM.name]
  • " - del AM //just to make sure they're deleted, no longer garbage collected, as there are way to many objects in crates that have other references. +// del AM //just to make sure they're deleted, no longer garbage collected, as there are way to many objects in crates that have other references. + qdel(AM) // How about we fix the issues rather than bypass them, mmkay? manifest += "" @@ -847,7 +848,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 8 containertype = /obj/structure/largecrate containername = "water tank crate" - + /datum/supply_packs/misc/lasertag name = "LaserTag Crate" contains = list(/obj/item/weapon/gun/energy/laser/redtag, diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 2673b09b406..b96d9b96737 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -374,8 +374,8 @@ if(istype(A, /obj/effect/spacevine)) for(var/obj/effect/spacevine/B in orange(A,1)) if(prob(80)) - del B - del A + qdel(B) + qdel(A) /* /obj/item/weapon/cigarpacket diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d836e61cf44..af1b824b185 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -17,6 +17,9 @@ // replaced by OPENCONTAINER flags and atom/proc/is_open_container() ///Chemistry. + // Garbage collection + var/gc_destroyed //Time when this object + /atom/proc/throw_impact(atom/hit_atom) if(istype(hit_atom,/mob/living)) var/mob/living/M = hit_atom @@ -41,6 +44,21 @@ /atom/proc/CheckParts() return +/atom/Del() + // Pass to Destroy(). + if(!gc_destroyed) // If we're just straight up calling del(atom), make sure anything in Destroy() gets called anyways just to be sure. + Destroy() + ..() + +// Like Del(), but for qdel. +// Called BEFORE qdel moves shit. +// Also called on del() +/atom/proc/Destroy() + gc_destroyed = world.timeofday + if(reagents) + reagents.delete() + del(reagents) // Technically I think the reagent holder will gc, but let's be careful here and delete all the reagents and the holder too + /atom/proc/assume_air(datum/gas_mixture/giver) del(giver) return null @@ -161,7 +179,7 @@ its easier to just keep the beam vertical. for(var/obj/effect/overlay/beam/O in orange(10,src)) //This section erases the previously drawn beam because I found it was easier to if(O.BeamSource==src) //just draw another instance of the beam instead of trying to manipulate all the - del O //pieces to a new orientation. + qdel(O) //pieces to a new orientation. var/Angle=round(Get_Angle(src,BeamTarget)) var/icon/I=new(icon,icon_state) I.Turn(Angle) @@ -202,7 +220,7 @@ its easier to just keep the beam vertical. X.pixel_y=Pixel_y sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy. //I've found that 3 ticks provided a nice balance for my use. - for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) del O + for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) qdel(O) //All atoms diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 8bb4db44c53..15dad142851 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -22,6 +22,15 @@ src.last_move = get_dir(A, src.loc) return +/atom/movable/Del() + if(!gc_destroyed && loc) + testing("GC: -- [type] was deleted via del() rather than qdel() --") +// else if(!gc_destroyed) +// testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel() +// else +// testing("GC: [type] was deleted via GC with qdel()") + ..() + // Previously known as HasEntered() // This is automatically called when something enters your square /atom/movable/Crossed(atom/movable/AM) @@ -50,6 +59,12 @@ return 1 return 0 +/atom/movable/Destroy() + loc = null // can never null their loc enough really + for(var/atom/movable/AM in contents) + qdel(AM) + . = ..() + /atom/movable/proc/hit_check() // todo: this is partly obsolete due to passflags already, add throwing stuff to mob CanPass and finish it if(src.throwing) for(var/atom/A in get_turf(src)) diff --git a/code/game/dna.dm b/code/game/dna.dm index b3c698afe3f..cec9dee90d3 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -471,7 +471,7 @@ var/mob/M = G.affecting M.loc = loc user.stop_pulling() - del(G) + qdel(G) /obj/machinery/dna_scannernew/attack_hand(mob/user) if(..()) @@ -484,24 +484,15 @@ /obj/machinery/dna_scannernew/ex_act(severity) switch(severity) if(1.0) - for(var/atom/movable/A in src) - A.loc = loc - A.ex_act(severity) - del(src) + qdel(src) return if(2.0) if(prob(50)) - for(var/atom/movable/A in src) - A.loc = loc - A.ex_act(severity) - del(src) + qdel(src) return if(3.0) if(prob(25)) - for(var/atom/movable/A in src) - A.loc = loc - A.ex_act(severity) - del(src) + qdel(src) return else return @@ -509,9 +500,7 @@ /obj/machinery/dna_scannernew/blob_act() if(prob(75)) - for(var/atom/movable/A in contents) - A.loc = loc - del(src) + qdel(src) //DNA COMPUTER diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 9d33e32f6af..94cf62a034f 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -78,7 +78,7 @@ if("healing") M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(null) M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(null) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." if("robeless") M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(null) @@ -104,14 +104,14 @@ M.mind.special_role = "apprentice" /obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob) - target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) - target.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) - target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(target), slot_shoes) - target.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) - target.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(target), slot_head) - target.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(target), slot_back) - target.equip_to_slot_or_del(new /obj/item/weapon/storage/box(target), slot_in_backpack) - target.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) + target.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(target), slot_ears) + target.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) + target.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(target), slot_shoes) + target.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) + target.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(target), slot_head) + target.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(target), slot_back) + target.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(target), slot_in_backpack) + target.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) /obj/item/weapon/antag_spawner/borg_tele name = "Syndicate Cyborg Teleporter" diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 271d2b04323..e3d871748c7 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -18,13 +18,12 @@ ..(loc, h) -/obj/effect/blob/core/Del() +/obj/effect/blob/core/Destroy() blob_cores -= src if(overmind) - del(overmind) + qdel(overmind) processing_objects.Remove(src) ..() - return /obj/effect/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return @@ -32,7 +31,7 @@ /obj/effect/blob/core/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + Destroy() return // update_icon is called when health changes so... call update_health in the overmind if(overmind) @@ -71,7 +70,7 @@ overmind_get_delay = world.time + 300 // 30 seconds if(overmind) - del(overmind) + qdel(overmind) var/client/C = null var/list/candidates = list() diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 7cc8295f27a..219a4da6256 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -11,7 +11,7 @@ /obj/effect/blob/factory/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + Destroy() return return @@ -120,12 +120,11 @@ S.set_up(reagents, 1, 1, location, 15, 1) // only 1-2 smoke cloud S.start() - del(src) + qdel(src) -/mob/living/simple_animal/hostile/blobspore/Del() +/mob/living/simple_animal/hostile/blobspore/Destroy() if(factory) factory.spores -= src if(contents) for(var/mob/M in contents) M.loc = src.loc - ..() diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index a205cd59263..5e54b8a6a79 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -14,11 +14,10 @@ /obj/effect/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return -/obj/effect/blob/node/Del() +/obj/effect/blob/node/Destroy() blob_nodes -= src processing_objects.Remove(src) ..() - return /obj/effect/blob/node/Life() for(var/i = 1; i < 8; i += i) @@ -28,6 +27,6 @@ /obj/effect/blob/node/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + Destroy() return return \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index 3c0892363cc..0a303bc51a1 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -10,7 +10,7 @@ /obj/effect/blob/resource/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + Destroy() return return diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index 17d06f89f9a..4eef5f85d2e 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -10,7 +10,7 @@ /obj/effect/blob/shield/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + Destroy() return return diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index c5eba3dc77f..d5c88f010cc 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -178,7 +178,7 @@ src << "Unable to remove this blob." return - B.Delete() + B.Destroy() return diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index fb9a9f2e828..6863546631e 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -23,10 +23,9 @@ return -/obj/effect/blob/Del() +/obj/effect/blob/Destroy() blobs -= src ..() - return /obj/effect/blob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -118,7 +117,7 @@ B.loc = T else T.blob_act()//If we cant move in hit the turf - B.Delete() + B.Destroy() for(var/atom/A in T)//Hit everything in the turf A.blob_act() @@ -178,25 +177,21 @@ if(!ispath(type)) error("[type] is an invalid type for the blob.") new type(src.loc) - Delete() - return - -/obj/effect/blob/proc/Delete() - del(src) + qdel(src) /obj/effect/blob/normal icon_state = "blob" luminosity = 0 health = 21 -/obj/effect/blob/normal/Delete() +/obj/effect/blob/normal/Destroy() src.loc = null blobs -= src /obj/effect/blob/normal/update_icon() if(health <= 0) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Delete() + qdel(src) else if(health <= 15) icon_state = "blob_damaged" else diff --git a/code/game/gamemodes/changeling/changeling_mutations.dm b/code/game/gamemodes/changeling/changeling_mutations.dm index d8b349fd6d7..986a9d0a90b 100644 --- a/code/game/gamemodes/changeling/changeling_mutations.dm +++ b/code/game/gamemodes/changeling/changeling_mutations.dm @@ -19,7 +19,7 @@ /obj/item/weapon/melee/arm_blade/dropped(mob/user) visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "") - del(src) + qdel(src) /obj/effect/spider/spiderling/healthcheck() if(health <= 0) @@ -183,7 +183,7 @@ if(!grow_as) grow_as = pick(typesof(/mob/living/simple_animal/hostile/giant_spider)) new grow_as(src.loc) - del(src) + qdel(src) /obj/effect/spider/cocoon name = "cocoon" @@ -204,11 +204,11 @@ if(do_after(user,(breakout_time*60*10))) if(!user || user.stat != CONSCIOUS || user.loc != src) return - Del() + qdel(src) -/obj/effect/spider/cocoon/Del() +/obj/effect/spider/cocoon/Destroy() src.visible_message("\red \The [src] splits open.") for(var/atom/movable/A in contents) A.loc = src.loc diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 9f440d4b4fa..7c61a05111e 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -86,9 +86,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit lighting_controller.processing = 0 - var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 +// var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 1 if(heavy_impact_range > 1) var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() @@ -118,13 +118,11 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa if(T) if(flame_dist && prob(40) && !istype(T, /turf/space)) - spawn() - new/obj/effect/hotspot(T) //Mostly for ambience! + new/obj/effect/hotspot(T) //Mostly for ambience! hotspot_exists = 1 if(dist) - spawn() - if(T) - T.ex_act(dist) + if(T) + T.ex_act(dist) //------- THINGS IN TURFS FIRES ------- @@ -134,14 +132,12 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa if(AM) //Something is inside T (We have already checked T exists above) - RR if(flame_dist) //if it has flame distance, run this - RR if(isliving(AM) && !hotspot_exists && !istype(T, /turf/space)) - spawn() - if(AM && AM.loc!=null) - new /obj/effect/hotspot(AM.loc) + if(AM && AM.loc!=null) + new /obj/effect/hotspot(AM.loc) //Just in case we missed a mob while they were in flame_range, but a hotspot didn't spawn on them, otherwise it looks weird when you just burst into flame out of nowhere if(dist) //if no flame_dist, run this - RR - spawn() - if(AM) - AM.ex_act(dist) + if(AM) + AM.ex_act(dist) @@ -158,9 +154,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa sleep(8) if(!lighting_controller.processing) lighting_controller.processing = lighting_controller_was_processing - if(!powernet_rebuild_was_deferred_already) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 +// if(!powernet_rebuild_was_deferred_already) +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 0 return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 37b41146477..3d921ebbb8c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -38,21 +38,21 @@ /obj/item/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(5)) - del(src) + qdel(src) return else return /obj/item/blob_act() - del(src) + qdel(src) //user: The mob that is suiciding //damagetype: The type of damage the item will inflict on the user diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 44462c3501c..2789b00bc3f 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -11,7 +11,7 @@ ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 ) - del(src) + qdel(src) /obj/item/apc_frame/proc/try_build(turf/on_wall) if (get_dist(on_wall,usr)>1) @@ -38,6 +38,6 @@ var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(loc) C.amount = 10 usr << "You cut the cables and disassemble the unused power terminal." - del(T) + qdel(T) new /obj/machinery/power/apc(loc, ndir, 1) - del(src) + qdel(src) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index f21832f87a0..35709d906ff 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -10,7 +10,7 @@ /obj/item/bodybag/attack_self(mob/user) var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc) R.add_fingerprint(user) - del(src) + qdel(src) /obj/item/weapon/storage/box/bodybags @@ -79,7 +79,7 @@ visible_message("[usr] folds up [src].") var/obj/item/bodybag/B = new /obj/item/bodybag(get_turf(src)) usr.put_in_hands(B) - del(src) + qdel(src) /obj/structure/closet/bodybag/update_icon() diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 7047a708465..3584b97b282 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -66,7 +66,7 @@ if(istype(src.loc, /mob)) var/mob/M = src.loc M.unEquip(src, 1) //src is being deleted anyway - del(src) + qdel(src) update_icon() if(istype(loc, /turf)) //start a fire if possible var/turf/T = loc diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 6456e670447..bed61da06e7 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -81,7 +81,7 @@ uses-- if(!uses) user << "\red You used up your crayon!" - del(src) + qdel(src) return /obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob) @@ -92,6 +92,6 @@ uses -= 5 if(uses <= 0) user << "\red You ate your crayon!" - del(src) + qdel(src) else ..() \ No newline at end of file diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 1083e4c1952..3d18e1a5f17 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -948,10 +948,10 @@ var/global/list/obj/item/device/pda/PDAs = list() explosion(T, -1, -1, 2, 3) - del(src) + qdel(src) return -/obj/item/device/pda/Del() +/obj/item/device/pda/Destroy() PDAs -= src if (src.id) src.id.loc = get_turf(src.loc) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 1d30c43ffb0..24c0d8f5af2 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -41,7 +41,7 @@ if(active_dummy) eject_all() playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) - del(active_dummy) + qdel(active_dummy) active_dummy = null usr << "\blue You deactivate the [src]." var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) @@ -54,7 +54,7 @@ if(!O) return var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src) - del(O) + qdel(O) usr << "\blue You activate the [src]." var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) T.icon = 'icons/effects/effects.dmi' @@ -69,7 +69,7 @@ spark_system.start() eject_all() if(delete_dummy) - del(active_dummy) + qdel(active_dummy) active_dummy = null can_use = 0 spawn(50) can_use = 1 @@ -140,6 +140,6 @@ step(src, direction) return -/obj/effect/dummy/chameleon/Del() +/obj/effect/dummy/chameleon/Destroy() master.disrupt(0) ..() \ No newline at end of file diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 8292f2204e9..62fae59f193 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -109,7 +109,7 @@ animation.master = user flick("blspell", animation) sleep(5) - del(animation) + qdel(animation) if(!flashfail) flick("flash2", src) @@ -156,7 +156,7 @@ animation.master = user flick("blspell", animation) sleep(5) - del(animation) + qdel(animation) for(var/mob/living/carbon/M in oviewers(3, null)) var/safety = M:eyecheck() diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 810b467142f..8993adf9cf3 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -229,7 +229,7 @@ ..() processing_objects.Add(src) -/obj/item/device/flashlight/emp/Del() +/obj/item/device/flashlight/emp/Destroy() processing_objects.Remove(src) ..() diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 9cb72a9b928..b551c23c821 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -98,7 +98,7 @@ AddUses(1) user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining." user.drop_item() - del(L) + qdel(L) return else user << "You need a working light." @@ -164,7 +164,7 @@ target.brightness = L2.brightness target.on = target.has_power() target.update() - del(L2) + qdel(L2) if(target.on && target.rigged) target.explode() diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index a0436fa067d..c3d4b2a0d32 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -30,7 +30,7 @@ processing_objects += src -/obj/item/device/multitool/ai_detect/Del() +/obj/item/device/multitool/ai_detect/Destroy() processing_objects -= src ..() diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index c38169c621b..3fa8f1593f8 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -14,7 +14,7 @@ ..() overlays += "pai-off" -/obj/item/device/paicard/Del() +/obj/item/device/paicard/Destroy() //Will stop people throwing friend pAIs into the singularity so they can respawn if(!isnull(pai)) pai.death(0) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 1798038265e..868bd0133c1 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -139,4 +139,4 @@ if(power_drained >= max_power) processing_objects.Remove(src) explosion(src.loc, 3,6,9,12) - del(src) + qdel(src) diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 853890021fa..28f9936054a 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -30,4 +30,4 @@ /obj/item/device/radio/beacon/bacon //Probably a better way of doing this, I'm lazy. proc/digest_delay() spawn(600) - del(src)*/ //Bacon beacons are no more rip in peace \ No newline at end of file + qdel(src)*/ //Bacon beacons are no more rip in peace \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index ddf8238de04..463f17caf6d 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -36,7 +36,7 @@ origin_tech = "syndicate=3" /obj/item/device/radio/headset/syndicate/New() ..() - del(keyslot1) + qdel(keyslot1) keyslot1 = new /obj/item/device/encryptionkey/syndicate syndie = 1 recalculateChannels() @@ -45,7 +45,7 @@ origin_tech = "syndicate=3" /obj/item/device/radio/headset/binary/New() ..() - del(keyslot1) + qdel(keyslot1) keyslot1 = new /obj/item/device/encryptionkey/binary recalculateChannels() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 8e03f22f48f..3e49179e76f 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -15,7 +15,7 @@ ..() processing_objects += src -/obj/item/device/radio/intercom/Del() +/obj/item/device/radio/intercom/Destroy() processing_objects -= src ..() diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index c929a933a70..11686a77781 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -169,7 +169,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid var/obj/item/weapon/antag_spawner/borg_tele/S = W if(!S.used) hidden_uplink.uses += S.TC_cost - del(S) + qdel(S) user << "Teleporter refunded." else user << "This teleporter is already used." diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 53db3c8f280..54f19b659f3 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -30,10 +30,10 @@ burst() switch(severity) if (1) - del(src) + qdel(src) if (2) if (prob(50)) - del(src) + qdel(src) /obj/item/latexballon/bullet_act() burst() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f739b443630..949ab9cba0a 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -105,7 +105,7 @@ if (user.get_inactive_hand()==src) user.unEquip(src) user.put_in_inactive_hand(B) - del(src) + qdel(src) if(istype(W, /obj/item/robot_parts/l_leg)) if(src.l_leg) return user.drop_item() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 8904cbbfc21..725612d711e 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -30,7 +30,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" - del(R.module) + qdel(R.module) R.module = null R.modtype = "robot" R.updatename("Default") diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 45023c3f68f..68deaf91913 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -9,7 +9,7 @@ var/icon/virtualIcon var/list/bulletholes = list() - Del() + Destroy() // if a target is deleted and associated with a stake, force stake to forget for(var/obj/structure/target_stake/T in view(3,src)) if(T.pinned_target == src) @@ -97,7 +97,7 @@ for(var/mob/O in oviewers()) if ((O.client && !( O.blinded ))) O << "\red [src] breaks into tiny pieces and collapses!" - del(src) + qdel(src) // Create a temporary object to represent the damage var/obj/bmark = new diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index cfec5ac7ffe..de97b6a8962 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -302,7 +302,7 @@ continue G.attackby(NG, user) user << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheet\s." - del(src) + qdel(src) ..() /obj/item/weapon/shard/Crossed(var/mob/AM) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index d3078ace97b..e00fe5da5e5 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -22,17 +22,17 @@ G.add_fingerprint(user) if(amount <= 0) user.unEquip(src, 1) - del(src) + qdel(src) if(istype(O,/obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O M.amount-- if(M.amount <= 0) user.unEquip(M, 1) - del(M) + qdel(M) amount-- var/obj/item/stack/tile/light/L = new (user.loc) L.add_fingerprint(user) if(amount <= 0) user.unEquip(src, 1) - del(src) + qdel(src) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5923cda8c2b..797f56e1fdf 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -21,8 +21,8 @@ src.amount=amount return -/obj/item/stack/Del() - if (src && usr && usr.machine==src) +/obj/item/stack/Destroy() + if (usr && usr.machine==src) usr << browse(null, "window=stack") ..() @@ -97,7 +97,7 @@ if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) return if (href_list["make"]) - if (src.amount < 1) del(src) //Never should happen + if (src.amount < 1) qdel(src) //Never should happen var/datum/stack_recipe/R = recipes[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) @@ -131,14 +131,14 @@ var/oldsrc = src src = null //dont kill proc after del() usr.unEquip(oldsrc, 1) - del(oldsrc) + qdel(oldsrc) if (istype(O,/obj/item)) usr.put_in_hands(O) O.add_fingerprint(usr) //BubbleWrap - so newly formed boxes are empty if ( istype(O, /obj/item/weapon/storage) ) for (var/obj/item/I in O) - del(I) + qdel(I) //BubbleWrap END if (src && usr.machine==src) //do not reopen closed window spawn( 0 ) @@ -153,7 +153,7 @@ src = null //dont kill proc after del() if(usr) usr.unEquip(oldsrc, 1) - del(oldsrc) + qdel(oldsrc) return /obj/item/stack/proc/add_to_stacks(mob/usr as mob) diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index cc10e857caa..429829cc7fc 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -33,4 +33,4 @@ new/obj/item/stack/light_w(user.loc) if(amount <= 0) user.unEquip(src, 1) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ab0b7f032f2..71e978a4529 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -55,7 +55,7 @@ if(O.reagents.has_reagent("pacid", 1)) user << "The acid chews through the balloon!" O.reagents.reaction(user) - del(src) + qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." user << "\blue You fill the balloon with the contents of [O]." @@ -72,7 +72,7 @@ src.icon_state = "burst" spawn(5) if(src) - del(src) + qdel(src) return /obj/item/toy/balloon/update_icon() @@ -203,7 +203,7 @@ if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 4) user.drop_item() - del(I) + qdel(I) bullets++ user << "\blue You load the foam dart into the crossbow." else @@ -235,21 +235,21 @@ for(var/mob/O in viewers(world.view, D)) O.show_message(text("\red [] was hit by the foam dart!", M), 1) new /obj/item/toy/ammo/crossbow(M.loc) - del(D) + qdel(D) return for(var/atom/A in D.loc) if(A == user) continue if(A.density) new /obj/item/toy/ammo/crossbow(A.loc) - del(D) + qdel(D) sleep(1) spawn(10) if(D) new /obj/item/toy/ammo/crossbow(D.loc) - del(D) + qdel(D) return else if (bullets == 0) @@ -349,8 +349,8 @@ newSaber.item_color = "rainbow" user.unEquip(W) user.unEquip(src) - del(W) - del(src) + qdel(W) + qdel(src) else if(istype(W, /obj/item/device/multitool)) if(hacked == 0) hacked = 1 @@ -442,7 +442,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /obj/item/toy/snappop/Crossed(H as mob|obj) if((ishuman(H))) //i guess carp and shit shouldn't set them off @@ -456,7 +456,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /* * Mech prizes @@ -660,7 +660,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use return src.cards += C.cardname user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -674,13 +674,13 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user) ..() if(istype(C)) - if(C.parentdeck == src) + if(C.parentdeck == src) if(!user.unEquip(C)) user << "The hand of cards is stuck to your hand, you can't add it to the deck!" return src.cards += C.currenthand user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -772,7 +772,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list) cardUser.put_in_any_hand_if_possible(N) cardUser << "You also take [currenthand[1]] and hold it." cardUser << browse(null, "window=cardhand") - del(src) + qdel(src) return obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user) @@ -788,7 +788,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living src.icon_state = "[deckstyle]_hand4" else if(currenthand.len > 2) src.icon_state = "[deckstyle]_hand3" - del(C) + qdel(C) else user << "You can't mix cards from other decks." @@ -859,8 +859,8 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user) H.pickup(user) user.put_in_active_hand(H) user << "You combine the [C.cardname] and the [src.cardname] into a hand." - del(C) - del(src) + qdel(C) + qdel(src) else user << "You can't mix cards from other decks." @@ -877,7 +877,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user) H.icon_state = "[deckstyle]_hand4" else if(H.currenthand.len > 2) H.icon_state = "[deckstyle]_hand3" - del(src) + qdel(src) else user << "You can't mix cards from other decks." diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 5222fb5af81..b91a6918d08 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -293,7 +293,7 @@ AI MODULES if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt. warning("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt.") - del(src) + qdel(src) /****************** T.Y.R.A.N.T. *****************/ diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index a0bc317e8d3..0780d2fc443 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -106,7 +106,7 @@ RCD user << "The RCD cant hold any more matter-units." return user.drop_item() - del(W) + qdel(W) matter += 10 playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user << "The RCD now holds [matter]/30 matter-units." @@ -217,7 +217,7 @@ RCD if(do_after(user, 50)) if(!useResource(10, user)) return 0 activate() - del(A) + qdel(A) return 1 return 0 return 0 diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 1712f52d6f2..109284d9947 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -25,7 +25,7 @@ RSF if ((matter + 10) > 30) user << "The RSF cant hold any more matter." return - del(W) + qdel(W) matter += 10 playsound(src.loc, 'sound/machines/click.ogg', 10, 1) user << "The RSF now holds [matter]/30 fabrication-units." diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index b0fe22debc3..cfee2bba557 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -80,9 +80,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM flags |= NOREACT // so it doesn't react until you light it create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15 -/obj/item/clothing/mask/cigarette/Del() - ..() +/obj/item/clothing/mask/cigarette/Destroy() del(reagents) + ..() /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -154,7 +154,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently var/datum/effect/effect/system/reagents_explosion/e = new() @@ -163,7 +163,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return flags &= ~NOREACT // allowing reagents to react after being lit reagents.handle_reactions() @@ -204,7 +204,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(ismob(loc)) M << "Your [name] goes out." M.unEquip(src, 1) //un-equip it so the overlays can update //Force the un-equip so the overlays update - del(src) + qdel(src) return if(location) location.hotspot_expose(700, 5) @@ -220,7 +220,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM new type_butt(T) new /obj/effect/decal/cleanable/ash(T) processing_objects.Remove(src) - del(src) + qdel(src) return ..() /obj/item/clothing/mask/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user) @@ -356,7 +356,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM name = "[O.name]-packed [initial(name)]" if(O.reagents) O.reagents.trans_to(src, O.reagents.total_volume) - del(O) + qdel(O) else user << "It has to be dried first." else @@ -534,8 +534,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.put_in_active_hand(R) user << "You roll the [target.name] into a rolling paper." R.desc = "Dried [target.name] rolled up in a thin piece of paper." - del(target) - del(src) + qdel(target) + qdel(src) else user << "You need to dry this first." else @@ -559,7 +559,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper(user.loc) user.put_in_inactive_hand(P) user << "You take the last paper out of the pack, and throw the pack away." - del(src) + qdel(src) /obj/item/weapon/rollingpaperpack/examine() ..() diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 2160d7967b4..ef8daeb6791 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -30,11 +30,11 @@ user << "You need to take that [target.name] off before cleaning it." else if(istype(target,/obj/effect/decal/cleanable)) user << "You scrub \the [target.name] out." - del(target) + qdel(target) else user << "You clean \the [target.name]." var/obj/effect/decal/cleanable/C = locate() in target - del(C) + qdel(C) target.clean_blood() return diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index a3fb88db343..46d279f9773 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -102,8 +102,8 @@ target.ex_act(1) if (isobj(target)) if (target) - del(target) - del(src) + qdel(target) + qdel(src) /obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone) return \ No newline at end of file diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index c45e40cb96e..de28bde61e6 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -23,13 +23,12 @@ /obj/item/weapon/flamethrower/Del() if(weldtool) - del(weldtool) + qdel(weldtool) if(igniter) - del(igniter) + qdel(igniter) if(ptank) - del(ptank) + qdel(ptank) ..() - return /obj/item/weapon/flamethrower/process() @@ -82,7 +81,7 @@ ptank.loc = T ptank = null new /obj/item/stack/rods(T) - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/screwdriver) && igniter && !lit) diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index fb509f15dde..4338f63ed1f 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -72,7 +72,7 @@ M.unEquip(src, 1) M.put_in_hands(I) I.add_fingerprint(M) - del(src) + qdel(src) return diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index b890e43133b..a75c08fecf2 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -174,7 +174,7 @@ invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? spawn(50) //To make sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. @@ -236,7 +236,7 @@ invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? spawn(50) //To make sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. //I tried to just put it in the allowed_containers list but diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index bce8a055e71..990fc09d374 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -8,5 +8,5 @@ /obj/item/weapon/grenade/empgrenade/prime() update_mob() empulse(src, 4, 10) - del(src) + qdel(src) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 52503c244d7..6387a0ba305 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -20,7 +20,7 @@ var/damage = round(30/(get_dist(B,get_turf(src))+1)) B.health -= damage B.update_icon() - del(src) + qdel(src) /obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged. @@ -121,8 +121,7 @@ spawn(0) new /obj/item/weapon/grenade/flashbang/clusterbang/segment(src.loc)//Creates a 'segment' that launches a few more flashbangs playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(0) - del(src) + qdel(src) /obj/item/weapon/grenade/flashbang/clusterbang/segment desc = "A smaller segment of a clusterbang. Better run." @@ -152,8 +151,7 @@ spawn(0) new /obj/item/weapon/grenade/flashbang/cluster(src.loc) playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(0) - del(src) + qdel(src) /obj/item/weapon/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang ..() diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index ed05c8a7d7b..bab9c53b9a6 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -10,8 +10,8 @@ user.put_in_hands(W) user << "You stuff the [I] in the [src], emptying the contents beforehand." W.underlays += image(src.icon, icon_state = src.icon_state) - del(I) - del(src) + qdel(I) + qdel(src) /obj/item/weapon/grenade/iedcasing @@ -84,7 +84,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() explosion(src.loc,-1,0,2) - del(src) + qdel(src) /obj/item/weapon/grenade/iedcasing/examine() set src in usr diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 508d3e6f7c9..1a4226b70a3 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -30,4 +30,4 @@ B.health -= damage B.update_icon() sleep(80) - del(src) + qdel(src) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 889f03dfdc0..c104bfd9c73 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -28,7 +28,7 @@ // Spawn some hostile syndicate critters - del(src) + qdel(src) /obj/item/weapon/grenade/spawnergrenade/manhacks name = "viscerator delivery grenade" diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm index bf2e74a0d14..160c6846d3c 100644 --- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm +++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm @@ -9,4 +9,4 @@ /obj/item/weapon/grenade/syndieminibomb/prime() update_mob() explosion(src.loc,1,2,4,flame_range = 2) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index f473c56f29b..b20f3529f92 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -99,7 +99,7 @@ user.put_in_hands(W) user << "You wrap the cable restraint around the top of the rod." - del(src) + qdel(src) /obj/item/weapon/handcuffs/cyborg/attack(mob/living/carbon/C, mob/user) if(isrobot(user)) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 3665e896e41..3ff564c590c 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -28,7 +28,7 @@ /obj/item/weapon/implant/dropped(mob/user as mob) . = 1 - del src + qdel(src) return . /obj/item/weapon/implant/tracking @@ -119,7 +119,7 @@ R << "You hear a faint *beep*." if(!reagents.total_volume) R << "You hear a faint click from your chest." - del(src) + qdel(src) /obj/item/weapon/implant/loyalty diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 8d9009f707b..b2c4534d2cc 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -83,7 +83,7 @@ return var/mob/M = G:affecting if(put_mob(M)) - del(G) + qdel(G) src.updateUsrDialog() return diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index f3d581475b7..7273118ca18 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -412,7 +412,7 @@ viewers(3,user) << "[user] takes a piece of omelette with his fork!" reagents.remove_reagent("nutriment", 1) if (reagents.total_volume <= 0) - del(src)*/ + qdel(src)*/ /* if (prob(33)) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 1e03511ca79..3cf9465d1f1 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -113,8 +113,8 @@ newSaber.item_color = "rainbow" user.unEquip(W) user.unEquip(src) - del(W) - del(src) + qdel(W) + qdel(src) else if(istype(W, /obj/item/device/multitool)) if(hacked == 0) hacked = 1 @@ -180,7 +180,7 @@ spark_system.attach(src) /obj/item/weapon/melee/energy/blade/dropped() - del(src) + qdel(src) /obj/item/weapon/melee/energy/blade/proc/throw() - del(src) + qdel(src) diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 98c3391877a..d4a64ac9155 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -22,7 +22,7 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A) A.clean_blood() for(var/obj/effect/O in A) if(istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay)) - del(O) + qdel(O) reagents.reaction(A, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. reagents.remove_any(1) //reaction() doesn't use up the reagents diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm index 74dce232bbb..ddde0ba93e6 100644 --- a/code/game/objects/items/weapons/singularityhammer.dm +++ b/code/game/objects/items/weapons/singularityhammer.dm @@ -20,7 +20,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -85,23 +85,6 @@ //var/charged = 5 origin_tech = "combat=5;powerstorage=5" - -/* - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - if(charged < 5) - charged++ - return -*/ /obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob) var/datum/effect/effect/system/lightning_spread/s = new /datum/effect/effect/system/lightning_spread s.set_up(5, 1, target.loc) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 0d84580ddae..53dab7a754a 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -46,12 +46,12 @@ if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) investigate_log("has become a singularity. Caused by [user.key]","singulo") user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!" - del(W) + qdel(W) var/obj/machinery/singularity/singulo = new /obj/machinery/singularity (get_turf(src)) singulo.energy = 300 //should make it a bit bigger~ message_admins("[key_name_admin(user)] detonated a bag of holding") log_game("[key_name(user)] detonated a bag of holding") - del(src) + qdel(src) return ..() @@ -62,7 +62,7 @@ else user << "\red The Bluespace generator malfunctions!" for (var/obj/O in src.contents) //it broke, delete what was in it - del(O) + qdel(O) crit_fail = 1 icon_state = "brokenpack" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 744d8df3677..fccc32f140d 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -169,7 +169,7 @@ usr.client.screen -= S S.dropped(usr) if(!S.amount) - del S + qdel(S) else S.loc = src @@ -214,7 +214,7 @@ N.amount = stacksize S.amount -= stacksize if(!S.amount) - del S // todo: there's probably something missing here + qdel(S)// todo: there's probably something missing here orient2hud(usr) if(usr.s_active) usr.s_active.show_to(usr) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 4c16588bf55..6b1fb8b02de 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -47,7 +47,7 @@ user.put_in_hands(I) user.update_inv_l_hand() user.update_inv_r_hand() - del(src) + qdel(src) /obj/item/weapon/storage/box/survival diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index f7ea7bc7789..8b4ccbf48f6 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -163,7 +163,7 @@ new /obj/item/clothing/mask/cigarette(src) create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one -/obj/item/weapon/storage/fancy/cigarettes/Del() +/obj/item/weapon/storage/fancy/cigarettes/Destroy() del(reagents) ..() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index e9a53f9f5bf..9fe4356f693 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -415,7 +415,7 @@ orient2hud() -/obj/item/weapon/storage/Del() +/obj/item/weapon/storage/Destroy() close_all() ..() diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index e12c641f46d..d999b2ba21c 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -16,20 +16,20 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) //SN src = null - del(src) + qdel(src) if (istype(W, /obj/item/stack/rods)) if (W:amount >= 4) new /obj/item/weapon/table_parts/reinforced( user.loc ) user << "\blue You reinforce the [name]." W:use(4) - del(src) + qdel(src) else if (W:amount < 4) user << "\red You need at least four rods to do this." /obj/item/weapon/table_parts/attack_self(mob/user as mob) new /obj/structure/table( user.loc ) user.drop_item() - del(src) + qdel(src) return @@ -54,22 +54,22 @@ /obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/wood( user.loc ) - del(src) + qdel(src) if (istype(W, /obj/item/stack/tile/grass)) var/obj/item/stack/tile/grass/Grass = W if(Grass.amount > 1) Grass.amount -= 1 else - del(Grass) + qdel(Grass) new /obj/item/weapon/table_parts/wood/poker( src.loc ) visible_message("[user] adds grass to the wooden table parts") - del(src) + qdel(src) /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) new /obj/structure/table/woodentable( user.loc ) user.drop_item() - del(src) + qdel(src) return @@ -81,12 +81,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/wood( user.loc ) new /obj/item/stack/tile/grass( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/wood/poker/attack_self(mob/user as mob) new /obj/structure/table/woodentable/poker( user.loc ) user.drop_item() - del(src) + qdel(src) return @@ -97,7 +97,7 @@ ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) - del(src) + qdel(src) return return @@ -105,5 +105,5 @@ var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) R.add_fingerprint(user) user.drop_item() - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 33b3ce06b0a..617e1dd7444 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -53,7 +53,7 @@ if(allgases >= 0.005) return 1 - del(G) + qdel(G) return ui_action_click() diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index acc493b84dd..1e6166dc192 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -28,7 +28,7 @@ return -/obj/item/weapon/tank/Del() +/obj/item/weapon/tank/Destroy() if(air_contents) del(air_contents) @@ -69,12 +69,12 @@ if(prob(50)) var/turf/location = src.loc if (!( istype(location, /turf) )) - del(src) + qdel(src) if(src.air_contents) location.assume_air(air_contents) - del(src) + qdel(src) /obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -211,7 +211,7 @@ //world << "\blue Exploding Pressure: [pressure] kPa, intensity: [range]" explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5)) - del(src) + qdel(src) else if(pressure > TANK_RUPTURE_PRESSURE) //world << "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]" @@ -221,7 +221,7 @@ return T.assume_air(air_contents) playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3) - del(src) + qdel(src) else integrity-- diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 724960a58e2..b4e1e50a454 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -53,7 +53,7 @@ M.unEquip(noz) return -/obj/item/weapon/watertank/Del() +/obj/item/weapon/watertank/Destroy() if (noz) var/M = get(noz, /mob) remove_noz(M) @@ -83,7 +83,7 @@ if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank)) //To avoid weird issues from admin spawns var/mob/living/carbon/human/M = usr M.unEquip(src) - Del() + qdel(src) else tank = parent_tank reagents = tank.reagents //This mister is really just a proxy for the tank's reagents @@ -92,4 +92,4 @@ /obj/item/weapon/reagent_containers/glass/mister/dropped(mob/user as mob) user << "The mister snaps back onto the watertank!" tank.on = 0 - Del() + qdel(src) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index c28baff315c..f8e84fce7e9 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -223,7 +223,7 @@ user << "That was stupid of you." explosion(O.loc, -1, 0, 2, flame_range = 2) if(O) - del(O) + qdel(O) return if(welding) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index de707e9ebdb..e0c2b78c927 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -102,10 +102,10 @@ flags = ABSTRACT /obj/item/weapon/twohanded/offhand/unwield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/wield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/IsShield()//if the actual twohanded weapon is a shield, we count as a shield too! var/mob/user = loc @@ -174,7 +174,7 @@ obj/item/weapon/twohanded/ if (W.dir == SOUTHWEST) new /obj/item/weapon/shard( W.loc ) if(W.reinf) new /obj/item/stack/rods( W.loc) - del(A) + qdel(A) /* diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index cf578c56383..da07f221a55 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -114,8 +114,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob) user.put_in_hands(S) user << "You fasten the glass shard to the top of the rod with the cable." - del(I) - del(src) + qdel(I) + qdel(src) else if(istype(I, /obj/item/weapon/wirecutters)) var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod @@ -125,5 +125,5 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob) user.put_in_hands(P) user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward." - del(I) - del(src) \ No newline at end of file + qdel(I) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index a0792eba0de..dac4c8ba93b 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -18,6 +18,11 @@ processing_objects.Remove(src) return 0 +/obj/Destroy() + if(!istype(src, /obj/machinery)) + processing_objects.Remove(src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists + ..() + /obj/assume_air(datum/gas_mixture/giver) if(loc) return loc.assume_air(giver) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 594c95b6c80..dc81ffab22d 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -3,22 +3,22 @@ obj/structure obj/structure/blob_act() if(prob(50)) - del(src) + qdel(src) obj/structure/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if(prob(50)) - del(src) + qdel(src) return if(3.0) return obj/structure/meteorhit(obj/O as obj) - del(src) + qdel(src) diff --git a/code/game/objects/structures/OpTable.dm b/code/game/objects/structures/OpTable.dm index d0284309419..e186ed03c5c 100644 --- a/code/game/objects/structures/OpTable.dm +++ b/code/game/objects/structures/OpTable.dm @@ -40,5 +40,5 @@ visible_message("[M] has been laid on [src] by [user].") patient = M check_patient() - del(W) + qdel(W) return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index b9a4fb54d67..a97d5fcd612 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -123,19 +123,19 @@ for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion A.loc = src.loc A.ex_act(severity++) - del(src) + qdel(src) if(2) if(prob(50)) for (var/atom/movable/A as mob|obj in src) A.loc = src.loc A.ex_act(severity++) - del(src) + qdel(src) if(3) if(prob(5)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc A.ex_act(severity++) - del(src) + qdel(src) /obj/structure/closet/bullet_act(var/obj/item/projectile/Proj) health -= Proj.damage @@ -143,7 +143,7 @@ if(health <= 0) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) return @@ -152,21 +152,21 @@ visible_message("\red [user] destroys the [src]. ") for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) // this should probably use dump_contents() /obj/structure/closet/blob_act() if(prob(75)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) /obj/structure/closet/meteorhit(obj/O as obj) if(O.icon_state == "flaming") for(var/mob/M in src) M.meteorhit(O) src.dump_contents() - del(src) + qdel(src) /obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) if(src.opened) @@ -187,7 +187,7 @@ new /obj/item/stack/sheet/metal(src.loc) for(var/mob/M in viewers(src)) M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) - del(src) + qdel(src) return if(isrobot(user)) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index fc5ba425f09..234404a2249 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -41,7 +41,7 @@ desc = "If it takes forever, I will wait for you..." if(health == 0) //meaning if the statue didn't find a valid target - del(src) + qdel(src) return processing_objects.Add(src) @@ -57,7 +57,7 @@ if (timer <= 0) dump_contents() processing_objects.Remove(src) - del(src) + qdel(src) /obj/structure/closet/statue/dump_contents() @@ -146,7 +146,7 @@ user.dust() dump_contents() visible_message("\red [src] shatters!. ") - del(src) + qdel(src) /obj/structure/closet/statue/container_resist() return diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index cb64e20cde8..4e0462c63f3 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -46,12 +46,12 @@ // teehee if ("delete") - del(src) + qdel(src) //If you want to re-add fire, just add "fire" = 15 to the pick list. /*if ("fire") new /obj/structure/closet/firecloset(src.loc) - del(src)*/ + qdel(src)*/ /obj/structure/closet/emcloset/legacy/New() new /obj/item/weapon/tank/oxygen(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 67fb815ab07..e215eafdfb9 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -336,7 +336,7 @@ return user << "You rig [src]." user.drop_item() - del(W) + qdel(W) rigged = 1 return else if(istype(W, /obj/item/device/radio/electropack)) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 0df0d40e6d8..f61e3bcab19 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -18,7 +18,7 @@ user.visible_message("[user] pries \the [src] open.", \ "You pry open \the [src].", \ "You hear splitting wood.") - del(src) + qdel(src) else return attack_hand(user) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index c6cf316b2bc..4f1e65f02e5 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -17,7 +17,7 @@ if (occupied) new /obj/item/weapon/gun/energy/laser/captain( src.loc ) occupied = 0 - del(src) + qdel(src) if (2) if (prob(50)) src.health -= 15 @@ -41,13 +41,13 @@ if (occupied) new /obj/item/weapon/gun/energy/laser/captain( src.loc ) occupied = 0 - del(src) + qdel(src) /obj/structure/displaycase/meteorhit(obj/O as obj) new /obj/item/weapon/shard( src.loc ) new /obj/item/weapon/gun/energy/laser/captain( src.loc ) - del(src) + qdel(src) /obj/structure/displaycase/proc/healthcheck() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index d4c0910eea7..29da87da396 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -414,7 +414,7 @@ obj/structure/door_assembly var/M = text2path("/obj/item/stack/sheet/mineral/[mineral]") new M(get_turf(src)) new M(get_turf(src)) - del(src) + qdel(src) else user << "\blue You need more welding fuel to dissassemble the airlock assembly." return @@ -474,7 +474,7 @@ obj/structure/door_assembly else W.loc = src.loc - //del(W) + //qdel(W) else if(istype(W, /obj/item/weapon/crowbar) && state == 2 ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) @@ -549,7 +549,7 @@ obj/structure/door_assembly if(created_name) door.name = created_name src.electronics.loc = door - del(src) + qdel(src) else ..() if(mineral == "glass") diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index b617121fb5f..1a0c2441907 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -19,7 +19,7 @@ part.loc = src.loc part.master = null part = null - del(src) + qdel(src) return return diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 61a292400b7..552a72812da 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -13,7 +13,7 @@ relativewall_neighbours() ..() -/obj/structure/falsewall/Del() +/obj/structure/falsewall/Destroy() var/temploc = src.loc @@ -89,7 +89,7 @@ else T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]")) if(delete) - del(src) + qdel(src) return T /obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -113,7 +113,7 @@ if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) else user << "\blue You can't reach, close it first!" @@ -122,7 +122,7 @@ if(mineral != "plasma") var/turf/T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) /obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open @@ -210,7 +210,7 @@ var/turf/T = get_turf(src) user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the wall.") T.ChangeTurf(/turf/simulated/wall) //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you). - del(src) + qdel(src) if( istype(W, /obj/item/weapon/weldingtool) ) var/obj/item/weapon/weldingtool/WT = W @@ -219,14 +219,14 @@ T.ChangeTurf(/turf/simulated/wall) T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) ) var/turf/T = get_turf(src) T.ChangeTurf(/turf/simulated/wall) T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) //DRILLING else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill)) @@ -234,14 +234,14 @@ T.ChangeTurf(/turf/simulated/wall) T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) else if( istype(W, /obj/item/weapon/melee/energy/blade) ) var/turf/T = get_turf(src) T.ChangeTurf(/turf/simulated/wall) T = get_turf(src) T.attackby(W,user) - del(src) + qdel(src) /* diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index f9cd7e59526..414c10e4974 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -15,7 +15,7 @@ if(!src) return user << "You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "Now securing the girder..." @@ -23,7 +23,7 @@ user << "You secured the girder!" var/obj/structure/girder/G = new (loc) transfer_fingerprints_to(G) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) user << "Now slicing apart the girder..." @@ -31,12 +31,12 @@ if(!src) return user << "You slice apart the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "You drill through the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) @@ -54,7 +54,7 @@ user << "You removed the support struts!" var/obj/structure/girder/G = new (loc) transfer_fingerprints_to(G) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) @@ -64,7 +64,7 @@ user << "You dislodged the girder!" var/obj/structure/girder/displaced/D = new (loc) transfer_fingerprints_to(D) - del(src) + qdel(src) else if(istype(W, /obj/item/stack/sheet)) @@ -78,7 +78,7 @@ user << "You create a false wall! Push on it to open or close the passage." var/obj/structure/falsewall/F = new (loc) transfer_fingerprints_to(F) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "Now adding plating..." @@ -90,7 +90,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall) for(var/turf/simulated/wall/X in Tsrc.loc) if(X) transfer_fingerprints_to(X) - del(src) + qdel(src) return if(/obj/item/stack/sheet/plasteel) @@ -100,7 +100,7 @@ user << "You create a false wall! Push on it to open or close the passage." var/obj/structure/falserwall/FW = new (loc) transfer_fingerprints_to(FW) - del(src) + qdel(src) else if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() @@ -113,7 +113,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) if(X) transfer_fingerprints_to(X) - del(src) + qdel(src) return else if(S.amount < 1) return ..() @@ -124,7 +124,7 @@ user << "Girders reinforced!" var/obj/structure/girder/reinforced/R = new (loc) transfer_fingerprints_to(R) - del(src) + qdel(src) return if(S.sheettype) @@ -136,7 +136,7 @@ var/F = text2path("/obj/structure/falsewall/[M]") var/obj/structure/FW = new F (loc) transfer_fingerprints_to(FW) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "Now adding plating..." @@ -148,7 +148,7 @@ Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) for(var/turf/simulated/wall/mineral/X in Tsrc.loc) if(X) transfer_fingerprints_to(X) - del(src) + qdel(src) return add_hiddenprint(usr) @@ -165,25 +165,25 @@ blob_act() if(prob(40)) - del(src) + qdel(src) ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(30)) var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) new remains(loc) - del(src) + qdel(src) return if(3.0) if (prob(5)) var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) new remains(loc) - del(src) + qdel(src) return else return @@ -211,7 +211,7 @@ user << "You dissasembled the girder!" var/obj/effect/decal/remains/human/R = new (get_turf(src)) transfer_fingerprints_to(R) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) user << "Now slicing apart the girder..." @@ -219,34 +219,34 @@ user << "You slice apart the girder!" var/obj/effect/decal/remains/human/R = new (get_turf(src)) transfer_fingerprints_to(R) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "You drill through the girder!" if(do_after(user, 5)) var/obj/effect/decal/remains/human/R = new (get_turf(src)) transfer_fingerprints_to(R) - del(src) + qdel(src) blob_act() if(prob(40)) - del(src) + qdel(src) ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(30)) new /obj/effect/decal/remains/human(loc) - del(src) + qdel(src) return if(3.0) if (prob(5)) new /obj/effect/decal/remains/human(loc) - del(src) + qdel(src) return else return \ No newline at end of file diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d1a6f46ce24..9137ebbc52c 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -12,17 +12,14 @@ var/health = 10 var/destroyed = 0 -/obj/structure/grille/Del() - loc = null //garbage collect - /obj/structure/grille/ex_act(severity) - del(src) + qdel(src) /obj/structure/grille/blob_act() - del(src) + qdel(src) /obj/structure/grille/meteorhit(var/obj/M) - del(src) + qdel(src) /obj/structure/grille/Bumped(atom/user) @@ -191,7 +188,7 @@ else if(health <= -6) new /obj/item/stack/rods(loc) - del(src) + qdel(src) return return diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index f0060dfe935..5a9a6225387 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -26,8 +26,8 @@ src.meattype = 1 for(var/mob/O in viewers(src, null)) O.show_message(text("\red [user] has forced [G.affecting] onto the spike, killing them instantly!")) - del(G.affecting) - del(G) + qdel(G.affecting) + qdel(G) else user << "\red The spike already has something on it, finish collecting its meat first!" @@ -39,8 +39,8 @@ src.meattype = 2 for(var/mob/O in viewers(src, null)) O.show_message(text("\red [user] has forced [G.affecting] onto the spike, killing them instantly!")) - del(G.affecting) - del(G) + qdel(G.affecting) + qdel(G) else user << "\red The spike already has something on it, finish collecting its meat first!" else diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index eebe9fb343c..8c136774de3 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -15,7 +15,7 @@ if (1) new /obj/item/weapon/shard( src.loc ) Break() - del(src) + qdel(src) if (2) if (prob(50)) src.health -= 15 @@ -37,13 +37,13 @@ if (prob(75)) new /obj/item/weapon/shard( src.loc ) Break() - del(src) + qdel(src) /obj/structure/lamarr/meteorhit(obj/O as obj) new /obj/item/weapon/shard( src.loc ) Break() - del(src) + qdel(src) /obj/structure/lamarr/proc/healthcheck() diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 12ce9e0b5ff..aa5dda732da 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -11,10 +11,10 @@ /obj/structure/lattice/New() ..() if(!(istype(src.loc, /turf/space))) - del(src) + qdel(src) for(var/obj/structure/lattice/LAT in src.loc) if(LAT != src) - del(LAT) + qdel(LAT) icon = 'icons/obj/smoothlattice.dmi' icon_state = "latticeblank" updateOverlays() @@ -24,7 +24,7 @@ L = locate(/obj/structure/lattice, get_step(src, dir)) L.updateOverlays() -/obj/structure/lattice/Del() +/obj/structure/lattice/Destroy() for (var/dir in cardinal) var/obj/structure/lattice/L if(locate(/obj/structure/lattice, get_step(src, dir))) @@ -33,16 +33,16 @@ ..() /obj/structure/lattice/blob_act() - del(src) + qdel(src) return /obj/structure/lattice/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) - del(src) + qdel(src) return if(3.0) return @@ -60,24 +60,23 @@ if(WT.remove_fuel(0, user)) user << "\blue Slicing lattice joints ..." new /obj/item/stack/rods(src.loc) - del(src) + qdel(src) return /obj/structure/lattice/proc/updateOverlays() //if(!(istype(src.loc, /turf/space))) - // del(src) - spawn(1) - overlays = list() + // qdel(src) + overlays.Cut() - var/dir_sum = 0 + var/dir_sum = 0 - for (var/direction in cardinal) - if(locate(/obj/structure/lattice, get_step(src, direction))) + for (var/direction in cardinal) + if(locate(/obj/structure/lattice, get_step(src, direction))) + dir_sum += direction + else + if(!(istype(get_step(src, direction), /turf/space))) dir_sum += direction - else - if(!(istype(get_step(src, direction), /turf/space))) - dir_sum += direction - icon_state = "lattice[dir_sum]" - return \ No newline at end of file + icon_state = "lattice[dir_sum]" + return \ No newline at end of file diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index c6fcb117c68..b4feb3ef208 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -26,11 +26,10 @@ air_update_turf(1) return - Del() + Destroy() density = 0 air_update_turf(1) ..() - return Move() var/turf/T = loc @@ -170,7 +169,7 @@ var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]") for(var/i = 3, i <= oreAmount, i++) new ore(get_turf(src)) - del(src) + qdel(src) ex_act(severity = 1) switch(severity) @@ -249,7 +248,7 @@ if(!devastated) for(var/i = 1, i <= oreAmount, i++) new/obj/item/stack/sheet/wood(get_turf(src)) - del(src) + qdel(src) /obj/structure/mineral_door/resin mineralType = "resin" @@ -263,7 +262,7 @@ return ..() Dismantle(devastated = 0) - del(src) + qdel(src) CheckHardness() playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 178f9788582..8f3def98fdf 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -54,21 +54,21 @@ for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return return @@ -85,7 +85,7 @@ A.loc = src playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) //src.connected = null - del(src.connected) + qdel(src.connected) else playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) src.connected = new /obj/structure/m_tray( src.loc ) @@ -100,7 +100,7 @@ src.connected.icon_state = "morguet" else //src.connected = null - del(src.connected) + qdel(src.connected) src.add_fingerprint(user) update() return @@ -134,7 +134,7 @@ src.connected.icon_state = "morguet" else //src.connected = null - del(src.connected) + qdel(src.connected) return @@ -165,7 +165,7 @@ src.connected.update() add_fingerprint(user) //SN src = null - del(src) + qdel(src) return return @@ -223,21 +223,21 @@ for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc ex_act(severity) - del(src) + qdel(src) return return @@ -263,7 +263,7 @@ A.loc = src playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) //src.connected = null - del(src.connected) + qdel(src.connected) else if (src.locked == 0) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) src.connected = new /obj/structure/c_tray( src.loc ) @@ -278,7 +278,7 @@ src.connected.icon_state = "cremat" else //src.connected = null - del(src.connected) + qdel(src.connected) src.add_fingerprint(user) update() @@ -311,7 +311,7 @@ src.connected.icon_state = "cremat" else //src.connected = null - del(src.connected) + qdel(src.connected) return /obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob) @@ -347,10 +347,10 @@ //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") M.death(1) M.ghostize() - del(M) + qdel(M) for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - del(O) + qdel(O) new /obj/effect/decal/cleanable/ash(src) sleep(30) @@ -388,7 +388,7 @@ src.connected.update() add_fingerprint(user) //SN src = null - del(src) + qdel(src) return return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index fadd53408d5..4af7e49cafe 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -8,20 +8,20 @@ /obj/structure/sign/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) - del(src) + qdel(src) return if(3.0) - del(src) + qdel(src) return else return /obj/structure/sign/blob_act() - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index 14f7a174d8d..6284f186964 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -63,5 +63,5 @@ /obj/structure/stool/bed/nest/proc/healthcheck() if(health <=0) density = 0 - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index b37181dd926..f4467c80ed2 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -18,10 +18,9 @@ desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?" icon_state = "abed" -/obj/structure/stool/bed/Del() +/obj/structure/stool/bed/Destroy() unbuckle() ..() - return /obj/structure/stool/bed/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -33,7 +32,7 @@ /obj/structure/stool/bed/attack_animal(var/mob/living/simple_animal/M)//No more buckling hostile mobs to chairs to render them immobile forever if(M.environment_smash) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob) if(!istype(M)) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index c68305a7b28..66e23e3518a 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -25,7 +25,7 @@ E.part = SK SK.loc = E SK.master = E - del(src) + qdel(src) /obj/structure/stool/bed/chair/attack_tk(mob/user as mob) if(buckled_mob) ..() @@ -89,7 +89,7 @@ if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/wood(src.loc) - del(src) + qdel(src) else ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index f0a46e0ce2f..efbff04cfed 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -9,26 +9,26 @@ /obj/structure/stool/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(5)) - del(src) + qdel(src) return return /obj/structure/stool/blob_act() if(prob(75)) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index fd7f9533d49..2b11ec23a4a 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -121,14 +121,14 @@ ..() for(var/obj/structure/table/T in src.loc) if(T != src) - del(T) + qdel(T) update_icon() for(var/direction in list(1,2,4,8,5,6,9,10)) if(locate(/obj/structure/table,get_step(src,direction))) var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction)) T.update_icon() -/obj/structure/table/Del() +/obj/structure/table/Destroy() for(var/direction in list(1,2,4,8,5,6,9,10)) if(locate(/obj/structure/table,get_step(src,direction))) var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction)) @@ -227,7 +227,7 @@ break stack_loop else amt -= S.amount - del(S) + qdel(S) else if(ispath(A, /obj/item)) var/obj/item/I item_loop: @@ -259,7 +259,7 @@ for(var/B in Deletion) if(!istype(B, A)) Deletion.Remove(B) - del(B) + qdel(B) return Deletion /obj/structure/table/interact(mob/user) @@ -434,11 +434,11 @@ /obj/structure/table/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(25)) @@ -451,10 +451,10 @@ if(prob(75)) if(istype(src, /obj/structure/table/woodentable)) new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) + qdel(src) return new /obj/item/weapon/table_parts( src.loc ) - del(src) + qdel(src) return /obj/structure/table/attack_paw(mob/user) @@ -468,7 +468,7 @@ else new /obj/item/weapon/table_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/table/attack_alien(mob/user) @@ -480,7 +480,7 @@ else new /obj/item/weapon/table_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/table/attack_animal(mob/living/simple_animal/user) @@ -493,7 +493,7 @@ else new /obj/item/weapon/table_parts(loc) density = 0 - del(src) + qdel(src) @@ -509,7 +509,7 @@ else new /obj/item/weapon/table_parts(loc) density = 0 - del(src) + qdel(src) else ..() @@ -551,7 +551,7 @@ G.affecting.Weaken(5) G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \ "[G.assailant] pushes [G.affecting] onto [src].") - del(I) + qdel(I) return if (istype(I, /obj/item/weapon/wrench)) @@ -583,7 +583,7 @@ Destroy type values: if(destroy_type == 1) user.visible_message("The table was sliced apart by [user]!") new parts( src.loc ) - del(src) + qdel(src) return if(destroy_type == 2) @@ -595,7 +595,7 @@ Destroy type values: if (do_after(user, 50)) new parts( src.loc ) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + qdel(src) return else user << "Now disassembling table" @@ -603,7 +603,7 @@ Destroy type values: if (do_after(user, 50)) new parts( src.loc ) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + qdel(src) return @@ -671,23 +671,23 @@ Destroy type values: /obj/structure/rack/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(2.0) - del(src) + qdel(src) if(prob(50)) new /obj/item/weapon/rack_parts(src.loc) if(3.0) if(prob(25)) - del(src) + qdel(src) new /obj/item/weapon/rack_parts(src.loc) /obj/structure/rack/blob_act() if(prob(75)) - del(src) + qdel(src) return else if(prob(50)) new /obj/item/weapon/rack_parts(src.loc) - del(src) + qdel(src) return /obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -713,7 +713,7 @@ Destroy type values: if (istype(W, /obj/item/weapon/wrench)) new /obj/item/weapon/rack_parts( src.loc ) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - del(src) + qdel(src) return if(isrobot(user)) @@ -723,7 +723,7 @@ Destroy type values: return 1 /obj/structure/rack/meteorhit(obj/O as obj) - del(src) + qdel(src) /obj/structure/rack/attack_hand(mob/user) @@ -732,7 +732,7 @@ Destroy type values: user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) new /obj/item/weapon/rack_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/rack/attack_paw(mob/user) @@ -741,14 +741,14 @@ Destroy type values: visible_message("[user] smashes [src] apart!") new /obj/item/weapon/rack_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/rack/attack_alien(mob/user) visible_message("[user] slices [src] apart!") new /obj/item/weapon/rack_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/rack/attack_animal(mob/living/simple_animal/user) @@ -756,7 +756,7 @@ Destroy type values: visible_message("[user] smashes [src] apart!") new /obj/item/weapon/rack_parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/rack/attack_tk() // no telehulk sorry return diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 9b93774b6ed..39669dae1c8 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -55,7 +55,7 @@ -/obj/structure/transit_tube_pod/Del() +/obj/structure/transit_tube_pod/Destroy() for(var/atom/movable/AM in contents) AM.loc = loc @@ -71,7 +71,7 @@ obj/structure/ex_act(severity) AM.loc = loc AM.ex_act(severity++) - del(src) + qdel(src) return if(2.0) if(prob(50)) @@ -79,7 +79,7 @@ obj/structure/ex_act(severity) AM.loc = loc AM.ex_act(severity++) - del(src) + qdel(src) return if(3.0) return @@ -154,7 +154,7 @@ obj/structure/ex_act(severity) if(do_after(user, 60) && GM && G && G.affecting == GM) GM.Weaken(5) src.Bumped(GM) - del(G) + qdel(G) break /obj/structure/transit_tube/station/proc/open_animation() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 303d1ad81f4..5c9900c3c5c 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -178,7 +178,7 @@ /obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. if(mymist) - del(mymist) + qdel(mymist) if(on) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) @@ -196,8 +196,8 @@ ismist = 1 mymist = new /obj/effect/mist(loc) spawn(250) - if(src && !on) - del(mymist) + if(src && !on && mymist) + qdel(mymist) ismist = 0 @@ -295,7 +295,7 @@ loc.clean_blood() for(var/obj/effect/E in tile) if(istype(E,/obj/effect/rune) || istype(E,/obj/effect/decal/cleanable) || istype(E,/obj/effect/overlay)) - del(E) + qdel(E) /obj/machinery/shower/process() @@ -369,7 +369,7 @@ if(istype(O, /obj/item/trash)) user.drop_item() user << "You wash up [O]." //sims!!! - del(O) + qdel(O) if(istype(O, /obj/item/weapon/reagent_containers)) var/obj/item/weapon/reagent_containers/RG = O diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index eb161a4775b..af17d680569 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -31,7 +31,7 @@ obj/structure/windoor_assembly/New(dir=NORTH) src.ini_dir = src.dir air_update_turf(1) -obj/structure/windoor_assembly/Del() +obj/structure/windoor_assembly/Destroy() density = 0 air_update_turf(1) ..() @@ -87,7 +87,7 @@ obj/structure/windoor_assembly/Del() if(secure) var/obj/item/stack/rods/R = new (get_turf(src), 4) R.add_fingerprint(user) - del(src) + qdel(src) else user << "You need more welding fuel to dissassemble the windoor assembly." return @@ -258,7 +258,7 @@ obj/structure/windoor_assembly/Del() src.electronics.loc = windoor windoor.close() - del(src) + qdel(src) else diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3dc680175db..712c8f3a7ff 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -21,39 +21,39 @@ if(health <= 0) new /obj/item/weapon/shard(loc) new /obj/item/stack/rods(loc) - del(src) + qdel(src) return /obj/structure/window/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) return if(3.0) if(prob(50)) new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) return /obj/structure/window/blob_act() new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) /obj/structure/window/meteorhit() //world << "glass at [x],[y],[z] Mhit" new /obj/item/weapon/shard( loc ) if(reinf) new /obj/item/stack/rods( loc) - del(src) + qdel(src) /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(istype(mover) && mover.checkpass(PASSGLASS)) @@ -93,7 +93,7 @@ if(health <= 0) new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) /obj/structure/window/attack_tk(mob/user as mob) user.visible_message("Something knocks on [src].") @@ -111,7 +111,7 @@ if(reinf) var/obj/item/stack/rods/R = new (loc) R.add_fingerprint(user) - del(src) + qdel(src) else user.visible_message("[user] knocks on [src].") add_fingerprint(user) @@ -130,7 +130,7 @@ user.visible_message("[user] smashes through [src]!") new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) else //for nicer text~ user.visible_message("[user] smashes into [src]!") playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) @@ -226,7 +226,7 @@ else new /obj/item/weapon/shard(loc) if(reinf) new /obj/item/stack/rods(loc) - del(src) + qdel(src) return @@ -303,12 +303,12 @@ return -/obj/structure/window/Del(quiet) +/obj/structure/window/Destroy(quiet) density = 0 air_update_turf(1) if(!quiet)playsound(src, "shatter", 70, 1) update_nearby_icons() - loc = null //garbage collect + ..() /obj/structure/window/Move() diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 589cbbe622d..a578458d2b1 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -302,7 +302,7 @@ turf/simulated/floor/proc/update_icon() icon_state = "plating" //Nothing is defined, so just make it plating icon_plating = "plating" if(floor_tile) - del(floor_tile) + qdel(floor_tile) SetLuminosity(0) floor_tile = null @@ -423,7 +423,7 @@ turf/simulated/floor/proc/update_icon() var/obj/item/stack/tile/light/T = floor_tile if(T.state) user.drop_item() - del(C) + qdel(C) T.state = C //fixing it by bashing it with a light bulb, fun eh? update_icon() user << "\blue You replace the light bulb." diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 4af37aacc69..3fffc37ea3e 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -294,7 +294,7 @@ user << "The thermite melts through the wall." spawn(100) - if(O) del(O) + if(O) qdel(O) // F.sd_LumReset() //TODO: ~Carn return diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 403feb5ed34..6caaf020001 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -84,7 +84,7 @@ if (O.amount > 1) O.amount-- else - del(O) + qdel(O) return if(2) @@ -230,7 +230,7 @@ if (MS.amount > 1) MS.amount-- else - del(MS) + qdel(MS) //APC else if( istype(W,/obj/item/apc_frame) ) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 1f72827af24..e50776413bf 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -31,7 +31,7 @@ var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) if(L) var/obj/item/stack/tile/plasteel/S = C - del(L) + qdel(L) playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) S.build(src) S.use(1) @@ -59,11 +59,11 @@ if(A.z > 6) return if (A.x <= TRANSITIONEDGE || A.x >= (world.maxx - TRANSITIONEDGE - 1) || A.y <= TRANSITIONEDGE || A.y >= (world.maxy - TRANSITIONEDGE - 1)) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels ... And moving this shit down here so it only fires when they're actually trying to change z-level. - del(A) //The disk's Del() proc ensures a new one is created + qdel(A) //The disk's Del() proc ensures a new one is created return var/list/disk_search = A.search_contents_for(/obj/item/weapon/disk/nuclear) @@ -82,10 +82,10 @@ MM.inertia_dir = 2 else for(var/obj/item/weapon/disk/nuclear/N in disk_search) - del(N)//Make the disk respawn it is on a clientless mob or corpse + qdel(N)//Make the disk respawn it is on a clientless mob or corpse else for(var/obj/item/weapon/disk/nuclear/N in disk_search) - del(N)//Make the disk respawn if it is floating on its own + qdel(N)//Make the disk respawn if it is floating on its own return var/move_to_z = src.z @@ -136,7 +136,7 @@ if(src.x <= 1) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -161,7 +161,7 @@ A.loc.Entered(A) else if (src.x >= world.maxx) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -186,7 +186,7 @@ A.loc.Entered(A) else if (src.y <= 1) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return @@ -211,7 +211,7 @@ else if (src.y >= world.maxy) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 3f3e538b816..c113a5f4de3 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -178,7 +178,7 @@ /turf/proc/RemoveLattice() var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) if(L) - del L + qdel(L) //Creates a new turf /turf/proc/ChangeTurf(var/path) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 07f354b8941..f732a5cf821 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -823,7 +823,7 @@ message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") del(M.client) - //del(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends. + //qdel(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends. if("No") var/reason = input(usr,"Reason?","reason","Griefer") as text|null if(!reason) @@ -847,7 +847,7 @@ DB_ban_record(BANTYPE_PERMA, M, -1, reason) del(M.client) - //del(M) + //qdel(M) if("Cancel") return @@ -1075,8 +1075,8 @@ if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/observer = M - observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) - observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(observer), slot_shoes) + observer.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) + observer.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(observer), slot_shoes) M.Paralyse(5) sleep(5) M.loc = pick(tdomeobserve) @@ -1285,9 +1285,9 @@ usr << "This can only be used on instances of type /mob/living/carbon/human" return - H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand ) + H.equip_to_slot_or_qdel( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand ) if(!(istype(H.l_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie))) - H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_r_hand ) + H.equip_to_slot_or_qdel( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_r_hand ) if(!(istype(H.r_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie))) log_admin("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].") message_admins("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].") diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 6339d3c0113..533ac210102 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -26,7 +26,7 @@ if(!istates.Find(O.item_state)) text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.item_state]\" IN \"[O.icon]\"\n" text+="\n" - del(O) + qdel(O) if(text) var/F = file("broken_icons.txt") fdel(F) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 398539f6b4a..7c412684a46 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -435,7 +435,7 @@ var/global/list/g_fancy_list_of_safe_types = null for(var/atom/O in world) if(istype(O, hsbitem)) counter++ - del(O) + qdel(O) log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].") message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0) feedback_add_details("admin_verb","DELA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -505,7 +505,7 @@ var/global/list/g_fancy_list_of_safe_types = null var/mob/adminmob = src.mob M.ckey = src.ckey if( isobserver(adminmob) ) - del(adminmob) + qdel(adminmob) feedback_add_details("admin_verb","ADC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -649,7 +649,7 @@ var/global/list/g_fancy_list_of_safe_types = null for (var/obj/item/I in M) if (istype(I, /obj/item/weapon/implant)) continue - del(I) + qdel(I) switch(dresscode) if ("naked") //do nothing @@ -657,222 +657,222 @@ var/global/list/g_fancy_list_of_safe_types = null if ("assistant grey") var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(M) new /obj/item/weapon/storage/box/survival(BPK) - M.equip_to_slot_or_del(BPK, slot_back,1) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(BPK, slot_back,1) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Assistant)" W.assignment = "Assistant" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) var/obj/item/device/pda/P = new(M) P.owner = M.real_name P.ownjob = "Assistant" P.name = "PDA-[M.real_name] (Assistant)" - M.equip_to_slot_or_del(P, slot_belt) + M.equip_to_slot_or_qdel(P, slot_belt) if ("standard space gear") - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space(M), slot_head) var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M) - M.equip_to_slot_or_del(J, slot_back) + M.equip_to_slot_or_qdel(J, slot_back) J.toggle() - M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/breath(M), slot_wear_mask) J.Topic(null, list("stat" = 1)) if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0 if (dresscode=="tournament standard red") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/red(M), slot_w_uniform) else - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store) if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0 - M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/det(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/det_hat(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store) if ("tournament chef") //Steven Seagal FTW - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chef(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chefhat(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_s_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_s_store) if ("tournament janitor") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) var/obj/item/weapon/storage/backpack/backpack = new(M) for(var/obj/item/I in backpack) - del(I) - M.equip_to_slot_or_del(backpack, slot_back) + qdel(I) + M.equip_to_slot_or_qdel(backpack, slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/mop(M), slot_r_hand) var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M) bucket.reagents.add_reagent("water", 70) - M.equip_to_slot_or_del(bucket, slot_l_hand) + M.equip_to_slot_or_qdel(bucket, slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) if ("pirate") - M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/bandana(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) if ("space pirate") - M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) /* if ("soviet soldier") - M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/ushanka(M), slot_head) */ if("tunnel clown")//Tunnel clowns rule! - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chaplain_hood(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/bikehorn(M), slot_r_store) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Tunnel Clown!" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_del(fire_axe, slot_r_hand) + M.equip_to_slot_or_qdel(fire_axe, slot_r_hand) if("masked killer") - M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/overalls(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/latex(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/welding(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/apron(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/scalpel(M), slot_r_store) var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_del(fire_axe, slot_r_hand) + M.equip_to_slot_or_qdel(fire_axe, slot_r_hand) for(var/obj/item/carried_item in M.contents) if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant. carried_item.add_blood(M)//Oh yes, there will be blood... if("assassin") - M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M) for(var/obj/item/briefcase_item in sec_briefcase) - del(briefcase_item) + qdel(briefcase_item) for(var/i=3, i>0, i--) sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba sec_briefcase.contents += new /obj/item/ammo_box/a357 sec_briefcase.contents += new /obj/item/weapon/plastique - M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) + M.equip_to_slot_or_qdel(sec_briefcase, slot_l_hand) var/obj/item/device/pda/heads/pda = new(M) pda.owner = M.real_name pda.ownjob = "Reaper" pda.name = "PDA-[M.real_name] ([pda.ownjob])" - M.equip_to_slot_or_del(pda, slot_belt) + M.equip_to_slot_or_qdel(pda, slot_belt) var/obj/item/weapon/card/id/syndicate/W = new(M) W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Reaper" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) // DEATH SQUADS if("death commando")//Was looking to add this for a while. var/obj/item/device/radio/R = new /obj/item/device/radio/headset(M) R.set_frequency(1441) - M.equip_to_slot_or_del(R, slot_ears) + M.equip_to_slot_or_qdel(R, slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/device/flashlight(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/plastique(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/weapon/plastique(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/flashbang(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)//Here you go Deuryn @@ -886,28 +886,28 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Death Commando")//Let's add their alloted Centcom access. W.assignment = "Death Commando" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) /* if("syndicate commando") M.equip_syndicate_commando() */ if("centcom official") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/pen(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_com(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/gun(M), slot_belt) + M.equip_to_slot_or_qdel(new /obj/item/weapon/pen(M), slot_l_store) var/obj/item/device/pda/heads/pda = new(M) pda.owner = M.real_name pda.ownjob = "Centcom Official" pda.name = "PDA-[M.real_name] ([pda.ownjob])" - M.equip_to_slot_or_del(pda, slot_r_store) + M.equip_to_slot_or_qdel(pda, slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/clipboard(M), slot_l_hand) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Centcom Official)" @@ -915,20 +915,20 @@ var/global/list/g_fancy_list_of_safe_types = null W.access = get_centcom_access("Centcom Official") W.assignment = "Centcom Official" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) if("centcom commander") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/centhat(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Centcom Commander)" @@ -937,23 +937,23 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Centcom Commander") W.assignment = "Centcom Commander" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) if("special ops officer") var/obj/item/device/radio/headset/R = new /obj/item/device/radio/headset/headset_cent(M) R.set_frequency(1441) - M.equip_to_slot_or_del(R, slot_ears) + M.equip_to_slot_or_qdel(R, slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) + M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Special Ops Officer)" @@ -962,53 +962,53 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Special Ops Officer") W.assignment = "Special Ops Officer" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) if("blue wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("red wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/red(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("marisa wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/marisa(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("soviet admiral") - M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/hgpiratecap(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Admiral)" W.icon_state = "centcom" @@ -1016,20 +1016,20 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Admiral") W.assignment = "Admiral" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) if("mobster") - M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new /obj/item/clothing/head/fedora(M), slot_head) + M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/laceup(M), slot_shoes) + M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand) + M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" W.assignment = "Assistant" W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) + M.equip_to_slot_or_qdel(W, slot_wear_id) M.regenerate_icons() diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 8ac539f6c79..8307885611f 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -104,14 +104,14 @@ var/intercom_range_display_status = 0 intercom_range_display_status = 1 for(var/obj/effect/debugging/marker/M in world) - del(M) + qdel(M) if(intercom_range_display_status) for(var/obj/item/device/radio/intercom/I in world) for(var/turf/T in orange(7,I)) var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T) if (!(F in view(7,I.loc))) - del(F) + qdel(F) feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/enable_debug_verbs() diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index e3a54db7ddb..63b10dede5b 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -277,12 +277,12 @@ client/proc/one_click_antag() for (var/obj/effect/landmark/A in /area/syndicate_station/start)//Because that's the only place it can BE -Sieve if (A.name == "Syndicate-Gear-Closet") new /obj/structure/closet/syndicate/personal(A.loc) - del(A) + qdel(A) continue if (A.name == "Syndicate-Bomb") new /obj/effect/spawner/newbomb/timer/syndicate(A.loc) - del(A) + qdel(A) continue for(var/datum/mind/synd_mind in ticker.mode.syndicates) @@ -363,7 +363,7 @@ client/proc/one_click_antag() candidates.Remove(theghost) if(!theghost) - del(new_syndicate_commando) + qdel(new_syndicate_commando) break new_syndicate_commando.key = theghost.key diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 009daac93fb..c79d3117e21 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -28,14 +28,14 @@ for (var/obj/item/I in H) if (istype(I, /obj/item/weapon/implant)) continue - del(I) + qdel(I) - H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) - H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) + H.equip_to_slot_or_qdel(new /obj/item/clothing/under/kilt(H), slot_w_uniform) + H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) + H.equip_to_slot_or_qdel(new /obj/item/clothing/head/beret(H), slot_head) + H.equip_to_slot_or_qdel(new /obj/item/weapon/claymore(H), slot_l_hand) + H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(H), slot_shoes) + H.equip_to_slot_or_qdel(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) var/obj/item/weapon/card/id/W = new(H) W.name = "[H.real_name]'s ID Card" @@ -44,7 +44,7 @@ W.access += get_all_centcom_access() W.assignment = "Highlander" W.registered_name = H.real_name - H.equip_to_slot_or_del(W, slot_wear_id) + H.equip_to_slot_or_qdel(W, slot_wear_id) message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE!", 1) log_admin("[key_name(usr)] used there can be only one.") \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index cb3cb0a90b8..abc08fe49ae 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -458,7 +458,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] deleted [O] at ([O.x],[O.y],[O.z])") message_admins("[key_name_admin(usr)] deleted [O] at ([O.x],[O.y],[O.z])", 1) feedback_add_details("admin_verb","DEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - del(O) + qdel(O) /client/proc/cmd_admin_list_open_jobs() set category = "Admin" @@ -602,7 +602,7 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=[mins]&server=[replacetext(config.server_name, "#", "")]") del(M.client) - del(M) + qdel(M) else if("No") @@ -617,7 +617,7 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=perma&server=[replacetext(config.server_name, "#", "")]") del(M.client) - del(M) + qdel(M) */ /client/proc/update_world() diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index ed66e22a18f..f17048048f6 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -39,7 +39,7 @@ bombtank.master = null bombtank = null - del(src) + qdel(src) return if((istype(W, /obj/item/weapon/weldingtool) && W:welding)) if(!status) @@ -158,8 +158,8 @@ air_update_turf() if(master) - del(master) - del(src) + qdel(master) + qdel(src) /obj/item/weapon/tank/proc/release() //This happens when the bomb is not welded. Tank contents are just spat out. var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles()) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index bc306f77c65..795ca471f84 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -152,8 +152,7 @@ if(a_right) a_right:holder = null a_right.loc = T - spawn(0) - del(src) + qdel(src) return diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 516e63d2c43..25d00b4e386 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -33,7 +33,7 @@ processing_objects.Add(src) else on = 0 - if(first) del(first) + if(first) qdel(first) processing_objects.Remove(src) update_icon() return secured @@ -54,7 +54,7 @@ process()//Old code if(!on) if(first) - del(first) + qdel(first) return if(first || !secured) return var/turf/T = null @@ -88,7 +88,7 @@ attack_hand() - del(first) + qdel(first) ..() return @@ -97,14 +97,14 @@ var/t = dir ..() dir = t - del(first) + qdel(first) return holder_movement() if(!holder) return 0 // dir = holder.dir - del(first) + qdel(first) return 1 @@ -185,7 +185,7 @@ if(master) //world << "beam hit \ref[src]: calling master \ref[master].hit" master.trigger_beam() - del(src) + qdel(src) return /obj/effect/beam/i_beam/proc/vis_spread(v) @@ -203,7 +203,7 @@ if((loc.density || !(master))) // world << "beam hit loc [loc] or no master [master], deleting" - del(src) + qdel(src) return //world << "proccess: [src.left] left" @@ -243,17 +243,17 @@ return else //world << "is a next: \ref[next], deleting beam \ref[I]" - del(I) + qdel(I) else //world << "step failed, deleting \ref[next]" - del(next) + qdel(next) spawn(10) process() return return /obj/effect/beam/i_beam/Bump() - del(src) + qdel(src) return /obj/effect/beam/i_beam/Bumped() @@ -268,7 +268,6 @@ return return -/obj/effect/beam/i_beam/Del() - del(next) +/obj/effect/beam/i_beam/Destroy() + qdel(next) ..() - return diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 69f596a0138..84825acd7e3 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -9,9 +9,9 @@ w_class = 5.0 flags = CONDUCT -/obj/item/assembly/shock_kit/Del() - del(part1) - del(part2) +/obj/item/assembly/shock_kit/Destroy() + qdel(part1) + qdel(part2) ..() return @@ -26,7 +26,7 @@ part2.master = null part1 = null part2 = null - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/screwdriver)) status = !status diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 4c3025b0d2f..8dc9d9d9b3a 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -41,29 +41,29 @@ M.adjustBruteLoss(src.corpsebrute) M.adjustOxyLoss(src.corpseoxy) if(src.corpseuniform) - M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new src.corpseuniform(M), slot_w_uniform) if(src.corpsesuit) - M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new src.corpsesuit(M), slot_wear_suit) if(src.corpseshoes) - M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) + M.equip_to_slot_or_qdel(new src.corpseshoes(M), slot_shoes) if(src.corpsegloves) - M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves) + M.equip_to_slot_or_qdel(new src.corpsegloves(M), slot_gloves) if(src.corpseradio) - M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears) + M.equip_to_slot_or_qdel(new src.corpseradio(M), slot_ears) if(src.corpseglasses) - M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) + M.equip_to_slot_or_qdel(new src.corpseglasses(M), slot_glasses) if(src.corpsemask) - M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new src.corpsemask(M), slot_wear_mask) if(src.corpsehelmet) - M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) + M.equip_to_slot_or_qdel(new src.corpsehelmet(M), slot_head) if(src.corpsebelt) - M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) + M.equip_to_slot_or_qdel(new src.corpsebelt(M), slot_belt) if(src.corpsepocket1) - M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store) + M.equip_to_slot_or_qdel(new src.corpsepocket1(M), slot_r_store) if(src.corpsepocket2) - M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store) + M.equip_to_slot_or_qdel(new src.corpsepocket2(M), slot_l_store) if(src.corpseback) - M.equip_to_slot_or_del(new src.corpseback(M), slot_back) + M.equip_to_slot_or_qdel(new src.corpseback(M), slot_back) if(src.corpseid == 1) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card ([corpseidjob])" @@ -83,8 +83,8 @@ if(corpseidjob) W.assignment = corpseidjob W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - del(src) + M.equip_to_slot_or_qdel(W, slot_wear_id) + qdel(src) /obj/effect/landmark/corpse/AICorpse/createCorpse() //Creates a corrupted AI var/A = locate(/mob/living/silicon/ai) in loc //variable A looks for an AI at the location of the landmark @@ -97,7 +97,7 @@ M.real_name = src.name M.aiPDA.toff = 1 //turns the AI's PDA messenger off, stopping it showing up on player PDAs M.death() //call the AI's death proc - del(src) + qdel(src) /obj/effect/landmark/corpse/slimeCorpse var/mobcolour = "grey" @@ -111,13 +111,13 @@ var/mob/living/carbon/slime/M = new(src.loc) //variable M is a new slime at the location of the landmark M.colour = src.mobcolour //slime colour is set by landmark's mobcolour var M.adjustToxLoss(9001) //kills the slime, death() doesn't update its icon correctly - del(src) + qdel(src) /obj/effect/landmark/corpse/facehugCorpse/createCorpse() //Creates a squashed facehugger var/obj/item/clothing/mask/facehugger/O = new(src.loc) //variable O is a new facehugger at the location of the landmark O.name = src.name O.Die() //call the facehugger's death proc - del(src) + qdel(src) // I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example. diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 65e78dd968b..d67610f4525 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -14,4 +14,4 @@ loot.Remove(lootspawn) new lootspawn(get_turf(src)) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/awaymissions/maploader/swapmaps.dm b/code/modules/awaymissions/maploader/swapmaps.dm index 8f79b6b117e..6c2cba1d0be 100644 --- a/code/modules/awaymissions/maploader/swapmaps.dm +++ b/code/modules/awaymissions/maploader/swapmaps.dm @@ -174,9 +174,9 @@ swapmap x2>swapmaps_compiled_maxx) var/list/areas=new for(var/atom/A in block(locate(x1,y1,z1),locate(x2,y2,z2))) - for(var/obj/O in A) del(O) + for(var/obj/O in A) qdel(O) for(var/mob/M in A) - if(!M.key) del(M) + if(!M.key) qdel(M) else M.loc=null areas[A.loc]=null del(A) @@ -286,9 +286,9 @@ swapmap A.contents+=T else defarea.contents+=T // clear the turf - for(var/obj/O in T) del(O) + for(var/obj/O in T) qdel(O) for(var/mob/M in T) - if(!M.key) del(M) + if(!M.key) qdel(M) else M.loc=null // finish the read T.Read(S) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 938b73a1d06..2f4cdfb57ac 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -54,7 +54,7 @@ B.item_state = "melted" new /obj/item/weapon/paper/sc_safehint_paper_bible(B) new /obj/item/weapon/pen(B) - del(src) + qdel(src) /* * Guns - I'm making these specifically so that I dont spawn a pile of fully loaded weapons on the map. @@ -191,7 +191,7 @@ var/sc_safecode5 = "[rand(0,9)]" else if(istype(A,/obj/)) var/obj/O = A O.ex_act(1.0) - if(O) del(O) + if(O) qdel(O) else if(isturf(A)) var/turf/T = A if(T.intact) diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index dd9015d1714..9a2d6c758b4 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -163,8 +163,7 @@ s.set_up(3, 1, src) s.start() explosion(mob, 1, 0, 0, 0) - spawn(0) - del(src) + qdel(src) /*/obj/effect/meatgrinder name = "Meat Grinder" diff --git a/code/modules/awaymissions/trigger.dm b/code/modules/awaymissions/trigger.dm index 7080179b9a6..c31b37fbd8b 100644 --- a/code/modules/awaymissions/trigger.dm +++ b/code/modules/awaymissions/trigger.dm @@ -6,7 +6,7 @@ if(M.client) M << "[message]" if(once) - del(src) + qdel(src) /obj/effect/step_trigger/teleport_fancy var/locationx @@ -41,4 +41,4 @@ uses-- if(uses == 0) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index ae36e72a041..a3a679e4472 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -92,7 +92,7 @@ if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained ))) //H = null if (src.icon_state != "orange") return - del(H) + qdel(H) src.chained = 1 src.slowdown = 15 src.icon_state = "orange1" diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index 61a199eb674..04b8529dac9 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -37,4 +37,4 @@ /datum/round_event/anomaly/end() if(newAnomaly)//Kill the anomaly if it still exists at the end. - del(newAnomaly) \ No newline at end of file + qdel(newAnomaly) \ No newline at end of file diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 2974ce6bd8b..8adc6d88713 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -73,5 +73,5 @@ M.client.screen += blueeffect sleep(20) M.client.screen -= blueeffect - del(blueeffect) - del(newAnomaly) \ No newline at end of file + qdel(blueeffect) + qdel(newAnomaly) \ No newline at end of file diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index eeb61e90ac0..2c84d7fc70b 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -23,4 +23,4 @@ /datum/round_event/anomaly/anomaly_flux/end() if(newAnomaly)//If it hasn't been neutralized, it's time to blow up. explosion(newAnomaly, -1, 3, 5, 5) - del(newAnomaly) \ No newline at end of file + qdel(newAnomaly) \ No newline at end of file diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index c0d3531c8ea..d90b575acfc 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -58,7 +58,7 @@ M.speak_chance = 15 else explosion(upriser.loc, -1, 1, 2, 4, 0) - del(upriser) + qdel(upriser) kill() return diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index aeda5356dfa..cde70335756 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -24,7 +24,7 @@ density = 1 anchored = 1 var/strength = 2 //ex_act severity number - var/life = 2 //how many things we hit before del(src) + var/life = 2 //how many things we hit before qdel(src) weak strength = 3 @@ -93,8 +93,7 @@ life-- if(life <= 0) walk(src,0) - spawn(1) - del(src) + qdel(src) return 0 return @@ -105,5 +104,5 @@ ex_act(severity) - del(src) + qdel(src) return diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index dcd7eccb03b..a5fd2bad884 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -12,7 +12,7 @@ evil_tree.icon_living = evil_tree.icon_state evil_tree.icon_dead = evil_tree.icon_state evil_tree.icon_gib = evil_tree.icon_state - del(xmas) + qdel(xmas) //b-but I don't want to delete xmas... //this is an example of a possible round-start event /datum/round_event_control/presents diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 9c7e6fc961b..c418e498812 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -71,7 +71,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 Move() if(z != z_original || loc == destination) - spawn(0) del(src) + qdel(src) return ..() Bump(atom/clong) @@ -91,7 +91,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(clong.density || prob(10)) clong.meteorhit(src) else - del(src) + qdel(src) if(clong && prob(25)) src.loc = clong.loc diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index a0064fe3a84..9339f3b2d38 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -353,29 +353,29 @@ ________________________________________________________________________________ /mob/living/carbon/human/proc/equip_space_ninja(safety=0)//Safety in case you need to unequip stuff for existing characters. if(safety) - del(w_uniform) - del(wear_suit) - del(wear_mask) - del(head) - del(shoes) - del(gloves) + qdel(w_uniform) + qdel(wear_suit) + qdel(wear_mask) + qdel(head) + qdel(shoes) + qdel(gloves) var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src) - equip_to_slot_or_del(R, slot_ears) + equip_to_slot_or_qdel(R, slot_ears) if(gender==FEMALE) - equip_to_slot_or_del(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform) + equip_to_slot_or_qdel(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform) else - equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes) - equip_to_slot_or_del(new /obj/item/clothing/suit/space/space_ninja(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) - equip_to_slot_or_del(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask) - equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_belt) - equip_to_slot_or_del(new /obj/item/weapon/plastique(src), slot_r_store) - equip_to_slot_or_del(new /obj/item/weapon/plastique(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) - equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) + equip_to_slot_or_qdel(new /obj/item/clothing/under/color/black(src), slot_w_uniform) + equip_to_slot_or_qdel(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes) + equip_to_slot_or_qdel(new /obj/item/clothing/suit/space/space_ninja(src), slot_wear_suit) + equip_to_slot_or_qdel(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) + equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) + equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask) + equip_to_slot_or_qdel(new /obj/item/device/flashlight(src), slot_belt) + equip_to_slot_or_qdel(new /obj/item/weapon/plastique(src), slot_r_store) + equip_to_slot_or_qdel(new /obj/item/weapon/plastique(src), slot_l_store) + equip_to_slot_or_qdel(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) + equip_to_slot_or_qdel(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(src) E.imp_in = src @@ -655,10 +655,10 @@ BYOND fixed the verb bugs so this is no longer necessary. I prefer verb panels. var/obj/effect/proc_holder/ai_hack_ninja/B_C = locate() in AI var/obj/effect/proc_holder/ai_instruction/C_C = locate() in AI var/obj/effect/proc_holder/ai_holo_clear/D_C = locate() in AI - del(A_C) - del(B_C) - del(C_C) - del(D_C) + qdel(A_C) + qdel(B_C) + qdel(C_C) + qdel(D_C) AI.proc_holder_list = list() verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit verbs += /obj/item/clothing/suit/space/space_ninja/proc/spideros @@ -677,8 +677,8 @@ BYOND fixed the verb bugs so this is no longer necessary. I prefer verb panels. /obj/effect/proc_holder/ai_holo_clear/Click() var/obj/item/clothing/suit/space/space_ninja/S = loc.loc//This is so stupid but makes sure certain things work. AI.SUIT - del(S.hologram.i_attached) - del(S.hologram) + qdel(S.hologram.i_attached) + qdel(S.hologram) var/obj/effect/proc_holder/ai_holo_clear/D_C = locate() in S.AI S.AI.proc_holder_list -= D_C return @@ -750,8 +750,8 @@ mob/verb/remove_object_panel() var/obj/effect/proc_holder/ai_hack_ninja/B = locate() in src usr:proc_holder_list -= A usr:proc_holder_list -= B - del(A)//First. - del(B)//Second, to keep the proc going. + qdel(A)//First. + qdel(B)//Second, to keep the proc going. return /client/verb/grant_verb_ninja_debug1(var/mob/M in view()) @@ -868,7 +868,7 @@ That is why you attached them to objects. spawn(0) src << current_clone spawn(300) - del(current_clone) + qdel(current_clone) spawn while(!isnull(current_clone)) step_to(current_clone,src,1) sleep(5) @@ -1376,23 +1376,22 @@ ________________________________________________________________________________ cell = new/obj/item/weapon/cell/high//The suit should *always* have a battery because so many things rely on it. cell.charge = 9000//Starting charge should not be higher than maximum charge. It leads to problems with recharging. -/obj/item/clothing/suit/space/space_ninja/Del() +/obj/item/clothing/suit/space/space_ninja/Destroy() if(affecting)//To make sure the window is closed. affecting << browse(null, "window=hack spideros") if(AI)//If there are AIs present when the ninja kicks the bucket. killai() if(hologram)//If there is a hologram - del(hologram.i_attached)//Delete it and the attached image. - del(hologram) + qdel(hologram.i_attached)//Delete it and the attached image. + qdel(hologram) ..() - return //Simply deletes all the attachments and self, killing all related procs. /obj/item/clothing/suit/space/space_ninja/proc/terminate() - del(n_hood) - del(n_gloves) - del(n_shoes) - del(src) + qdel(n_hood) + qdel(n_gloves) + qdel(n_shoes) + qdel(src) /obj/item/clothing/suit/space/space_ninja/proc/killai(mob/living/silicon/ai/A = AI) if(A.client) @@ -1400,7 +1399,7 @@ ________________________________________________________________________________ A << browse(null, "window=hack spideros") AI = null A.death(1)//Kill, deleting mob. - del(A) + qdel(A) return //=======//SUIT VERBS//=======// @@ -2078,8 +2077,8 @@ ________________________________________________________________________________ spawn while(hologram&&s_initialized&&AI)//Suit on and there is an AI present. if(!s_initialized||get_dist(affecting,hologram.loc)>3)//Once suit is de-initialized or hologram reaches out of bounds. - del(hologram.i_attached) - del(hologram) + qdel(hologram.i_attached) + qdel(hologram) verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ai_holo_clear return @@ -2099,8 +2098,8 @@ ________________________________________________________________________________ set category = "AI Ninja Equip" set src = usr.loc - del(hologram.i_attached) - del(hologram) + qdel(hologram.i_attached) + qdel(hologram) verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ai_holo_clear return @@ -2663,7 +2662,7 @@ It is possible to destroy the net by the occupant or someone else. O.show_message(text("[] was recovered from the energy net!", M.name), 1, text("You hear a grunt."), 2) if(!isnull(master))//As long as they still exist. master << "\red ERROR: \black unable to initiate transport protocol. Procedure terminated." - del(src) + qdel(src) return process(var/mob/living/carbon/M as mob) @@ -2677,7 +2676,7 @@ It is possible to destroy the net by the occupant or someone else. if(isnull(M)||M.loc!=loc)//If mob is gone or not at the location. if(!isnull(master))//As long as they still exist. master << "\red ERROR: \black unable to locate \the [mob_name]. Procedure terminated." - del(src)//Get rid of the net. + qdel(src)//Get rid of the net. return if(!isnull(src))//As long as both net and person exist. @@ -2706,7 +2705,7 @@ It is possible to destroy the net by the occupant or someone else. playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1) anim(M.loc,M,'icons/mob/mob.dmi',,"phasein",,M.dir) - del(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0). + qdel(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0). for(var/mob/O in viewers(src, 3)) O.show_message(text("[] vanished!", M), 1, text("You hear sparks flying!"), 2) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index fddb051241d..a0e24f81570 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -36,7 +36,7 @@ New() return - Del() + Destroy() if(master) master.vines -= src master.growth_queue -= src @@ -46,24 +46,24 @@ /obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!W || !user || !W.type) return switch(W.type) - if(/obj/item/weapon/circular_saw) del src - if(/obj/item/weapon/kitchen/utensil/knife) del src - if(/obj/item/weapon/scalpel) del src - if(/obj/item/weapon/twohanded/fireaxe) del src - if(/obj/item/weapon/hatchet) del src - if(/obj/item/weapon/melee/energy) del src + if(/obj/item/weapon/circular_saw) qdel(src) + if(/obj/item/weapon/kitchen/utensil/knife) qdel(src) + if(/obj/item/weapon/scalpel) qdel(src) + if(/obj/item/weapon/twohanded/fireaxe) qdel(src) + if(/obj/item/weapon/hatchet) qdel(src) + if(/obj/item/weapon/melee/energy) qdel(src) //less effective weapons if(/obj/item/weapon/wirecutters) - if(prob(25)) del src + if(prob(25)) qdel(src) if(/obj/item/weapon/shard) - if(prob(25)) del src + if(prob(25)) qdel(src) else //weapons with subtypes - if(istype(W, /obj/item/weapon/melee/energy/sword)) del src + if(istype(W, /obj/item/weapon/melee/energy/sword)) qdel(src) else if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) del src + if(WT.remove_fuel(0, user)) qdel(src) else manual_unbuckle(user) return @@ -120,12 +120,12 @@ New() if(!istype(src.loc,/turf/simulated/floor)) - del(src) + qdel(src) spawn_spacevine_piece(src.loc) processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -137,10 +137,10 @@ process() if(!vines) - del(src) //space vines exterminated. Remove the controller + qdel(src) //space vines exterminated. Remove the controller return if(!growth_queue) - del(src) //Sanity check + qdel(src) //Sanity check return if(vines.len >= 250 && !reached_collapse_size) reached_collapse_size = 1 @@ -248,18 +248,18 @@ /obj/effect/spacevine/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(90)) - del(src) + qdel(src) return if(3.0) if (prob(50)) - del(src) + qdel(src) return return /obj/effect/spacevine/temperature_expose(null, temp, volume) //hotspots kill vines - del src + qdel(src) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index e24385675db..16a4c918a7a 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -77,7 +77,7 @@ mob/living/carbon/proc/handle_hallucinations() halitem.name = "Flashbang" if(client) client.screen += halitem spawn(rand(100,250)) - del halitem + qdel(src) if(26 to 40) //Flashes of danger //src << "Danger Flash" @@ -262,7 +262,7 @@ proc/check_panel(mob/M) spawn(300) if(my_target) my_target.hallucinations -= src - del(src) + qdel(src) step_away(src,my_target,2) spawn attack_loop() @@ -327,7 +327,7 @@ proc/check_panel(mob/M) var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1) target << I spawn(300) - del(O) + qdel(O) return var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_box/a357,\ diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 6fd4d108b00..f3de55dc019 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -168,7 +168,7 @@ if(I.reagents.get_reagent_amount("nutriment") < 0.1) points += 1*productivity else points += I.reagents.get_reagent_amount("nutriment")*10*productivity - del(I) + qdel(I) if(S) processing = 1 update_icon() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index ca29b283a18..a8b488dc349 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -88,8 +88,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/cherries seed = "/obj/item/seeds/cherryseed" @@ -101,9 +102,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 15), 1)) - reagents.add_reagent("sugar", 1+round((potency / 15), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 15), 1)) + reagents.add_reagent("sugar", 1+round((potency / 15), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/poppy seed = "/obj/item/seeds/poppyseed" @@ -116,9 +118,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("bicaridine", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + reagents.add_reagent("bicaridine", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 3, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/harebell seed = "obj/item/seeds/harebellseed" @@ -131,8 +134,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 3, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/potato seed = "/obj/item/seeds/potatoseed" @@ -145,19 +149,20 @@ ..() reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) spawn(5) //So potency can be set in the proc that creates these crops - bitesize = reagents.total_volume + if(reagents) + bitesize = reagents.total_volume /obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/stack/cable_coil)) if(W:amount >= 5) W:amount -= 5 - if(!W:amount) del(W) + if(!W:amount) qdel(W) user << "You add some cable to the potato and slide it inside the battery encasing." var/obj/item/weapon/cell/potato/pocell = new /obj/item/weapon/cell/potato(user.loc) pocell.maxcharge = src.potency * 10 pocell.charge = pocell.maxcharge - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/grown/grapes @@ -169,9 +174,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + reagents.add_reagent("sugar", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes seed = "/obj/item/seeds/greengrapeseed" @@ -183,9 +189,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("kelotane", 3+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + reagents.add_reagent("kelotane", 3+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage seed = "/obj/item/seeds/cabbageseed" @@ -197,8 +204,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.total_volume + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = reagents.total_volume /obj/item/weapon/reagent_containers/food/snacks/grown/berries seed = "/obj/item/seeds/berryseed" @@ -209,8 +217,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/glowberries seed = "/obj/item/seeds/glowberryseed" @@ -223,11 +232,12 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", round((potency / 10), 1)) - reagents.add_reagent("uranium", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", round((potency / 10), 1)) + reagents.add_reagent("uranium", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) -/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/Del() +/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/Destroy() if(istype(loc,/mob)) loc.AddLuminosity(round(-potency/5,1)) ..() @@ -250,9 +260,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("coco", 4+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + reagents.add_reagent("coco", 4+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane seed = "/obj/item/seeds/sugarcaneseed" @@ -264,7 +275,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("sugar", 4+round((potency / 5), 1)) + if(reagents) + reagents.add_reagent("sugar", 4+round((potency / 5), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries seed = "/obj/item/seeds/poisonberryseed" @@ -277,9 +289,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("toxin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("toxin", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/deathberries seed = "/obj/item/seeds/deathberryseed" @@ -292,10 +305,11 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("toxin", 3+round(potency / 3, 1)) - reagents.add_reagent("lexorin", 1+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("toxin", 3+round(potency / 3, 1)) + reagents.add_reagent("lexorin", 1+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris seed = "/obj/item/seeds/ambrosiavulgaris" @@ -308,12 +322,13 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("space_drugs", 1+round(potency / 8, 1)) - reagents.add_reagent("kelotane", 1+round(potency / 8, 1)) - reagents.add_reagent("bicaridine", 1+round(potency / 10, 1)) - reagents.add_reagent("toxin", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("space_drugs", 1+round(potency / 8, 1)) + reagents.add_reagent("kelotane", 1+round(potency / 8, 1)) + reagents.add_reagent("bicaridine", 1+round(potency / 10, 1)) + reagents.add_reagent("toxin", 1+round(potency / 10, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus seed = "/obj/item/seeds/ambrosiadeus" @@ -326,12 +341,13 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("bicaridine", 1+round(potency / 8, 1)) - reagents.add_reagent("synaptizine", 1+round(potency / 8, 1)) - reagents.add_reagent("hyperzine", 1+round(potency / 10, 1)) - reagents.add_reagent("space_drugs", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("bicaridine", 1+round(potency / 8, 1)) + reagents.add_reagent("synaptizine", 1+round(potency / 8, 1)) + reagents.add_reagent("hyperzine", 1+round(potency / 10, 1)) + reagents.add_reagent("space_drugs", 1+round(potency / 10, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/apple seed = "/obj/item/seeds/appleseed" @@ -343,9 +359,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.maximum_volume = 20 - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + if(reagents) + reagents.maximum_volume = 20 + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = reagents.maximum_volume // Always eat the apple in one /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned seed = "/obj/item/seeds/poisonedappleseed" @@ -357,9 +374,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.maximum_volume = 20 - reagents.add_reagent("cyanide", 1+round((potency / 5), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + if(reagents) + reagents.maximum_volume = 20 + reagents.add_reagent("cyanide", 1+round((potency / 5), 1)) + bitesize = reagents.maximum_volume // Always eat the apple in one /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple seed = "/obj/item/seeds/goldappleseed" @@ -371,9 +389,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("gold", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + reagents.add_reagent("gold", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -392,8 +411,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin seed = "/obj/item/seeds/pumpkinseed" @@ -405,8 +425,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -414,7 +435,7 @@ if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/melee/energy)) user.show_message("You carve a face into [src]!", 1) new /obj/item/clothing/head/hardhat/pumpkinhead (user.loc) - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/grown/lime @@ -427,8 +448,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/lemon seed = "/obj/item/seeds/lemonseed" @@ -440,8 +462,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/orange seed = "/obj/item/seeds/orangeseed" @@ -453,8 +476,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet seed = "/obj/item/seeds/whitebeetseed" @@ -466,9 +490,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", round((potency / 20), 1)) - reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", round((potency / 20), 1)) + reagents.add_reagent("sugar", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/banana seed = "/obj/item/seeds/bananaseed" @@ -483,8 +508,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("banana", 1+round((potency / 10), 1)) - bitesize = 5 + if(reagents) + reagents.add_reagent("banana", 1+round((potency / 10), 1)) + bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/grown/chili seed = "/obj/item/seeds/chiliseed" @@ -495,9 +521,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - reagents.add_reagent("capsaicin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) + reagents.add_reagent("capsaicin", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/chili/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -514,10 +541,11 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - reagents.add_reagent("capsaicin", 8+round(potency / 2, 1)) - reagents.add_reagent("condensedcapsaicin", 4+round(potency / 4, 1)) - bitesize = 1+round(reagents.total_volume / 4, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) + reagents.add_reagent("capsaicin", 8+round(potency / 2, 1)) + reagents.add_reagent("condensedcapsaicin", 4+round(potency / 4, 1)) + bitesize = 1+round(reagents.total_volume / 4, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chilli/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -551,8 +579,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans seed = "/obj/item/seeds/soyaseed" @@ -564,8 +593,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans seed = "/obj/item/seeds/koiseed" @@ -576,9 +606,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 30), 1)) - reagents.add_reagent("carpotoxin", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 30), 1)) + reagents.add_reagent("carpotoxin", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower seed = "/obj/item/seeds/moonflowerseed" @@ -589,9 +620,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("moonshine", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("moonshine", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/tomato seed = "/obj/item/seeds/tomatoseed" @@ -603,14 +635,15 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) throw_impact(atom/hit_atom) ..() new/obj/effect/decal/cleanable/tomato_smudge(src.loc) src.visible_message("The [src.name] has been squashed.","You hear a smack.") - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato @@ -622,14 +655,15 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) return new /mob/living/simple_animal/tomato(user.loc) - del(src) + qdel(src) user << "You plant the killer-tomato." @@ -643,9 +677,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("blood", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) + reagents.add_reagent("blood", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato/throw_impact(atom/hit_atom) ..() @@ -654,7 +689,7 @@ src.reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) src.reagents.reaction(A) - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato @@ -667,9 +702,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("lube", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + reagents.add_reagent("lube", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/throw_impact(atom/hit_atom) ..() @@ -678,7 +714,7 @@ src.reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) src.reagents.reaction(A) - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/Crossed(AM as mob|obj) @@ -703,8 +739,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/grass seed = "/obj/item/seeds/grassseed" @@ -714,8 +751,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) user << "You prepare the astroturf." @@ -723,10 +761,10 @@ var/grassAmt = 1 // The grass we're holding for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/grassToConvert in location) // The grass on the floor grassAmt += 1 - del(grassToConvert) + qdel(grassToConvert) var/obj/item/stack/tile/newAstroturf = new /obj/item/stack/tile/grass(location) newAstroturf.amount = grassAmt - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod seed = "/obj/item/seeds/kudzuseed" @@ -736,9 +774,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("anti_toxin", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("anti_toxin", 1+round((potency / 25), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper seed = "/obj/item/seeds/icepepperseed" @@ -750,9 +789,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("frostoil", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("frostoil", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -769,9 +809,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("imidazoline", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + reagents.add_reagent("imidazoline", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi seed = "/obj/item/seeds/reishimycelium" @@ -783,10 +824,11 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) - reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1)) + reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -804,10 +846,11 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1) + reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -825,10 +868,11 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) - reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) + reagents.add_reagent("mushroomhallucinogen", 1+round(potency / 25, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -846,9 +890,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) . = ..() @@ -864,8 +909,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom seed = "/obj/item/seeds/walkingmushroom" @@ -875,8 +921,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -887,7 +934,7 @@ M.melee_damage_upper += round(potency / 20) M.move_to_delay -= round(production / 50) M.health = M.maxHealth - del(src) + qdel(src) user << "You plant the walking mushroom." @@ -900,8 +947,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = "/obj/item/seeds/glowshroom" @@ -920,7 +968,8 @@ potency = 30 plant_type = 2 spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("radium", 1+round((potency / 20), 1)) + if(reagents) + reagents.add_reagent("radium", 1+round((potency / 20), 1)) if(istype(src.loc,/mob)) pickup(src.loc)//adjusts the lighting on the mob else @@ -935,11 +984,11 @@ planted.endurance = endurance planted.yield = yield planted.potency = potency - del(src) + qdel(src) user << "You plant the glowshroom." -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/Del() +/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/Destroy() if(istype(loc,/mob)) loc.AddLuminosity(round(-potency/10,1)) ..() @@ -979,7 +1028,7 @@ else new/obj/item/weapon/spacecash/c1000(src.loc) spawn(5) //Workaround to keep harvesting from working weirdly. - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato seed = "/obj/item/seeds/bluespacetomatoseed" @@ -992,9 +1041,10 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("singulo", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) + reagents.add_reagent("singulo", 1+round((potency / 5), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit seed = "/obj/item/seeds/gatfruit" @@ -1007,11 +1057,12 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("sulfur", 1+round((potency / 10), 1)) - reagents.add_reagent("carbon", 1+round((potency / 10), 1)) - reagents.add_reagent("nitrogen", 1+round((potency / 15), 1)) - reagents.add_reagent("potassium", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + if(reagents) + reagents.add_reagent("sulfur", 1+round((potency / 10), 1)) + reagents.add_reagent("carbon", 1+round((potency / 10), 1)) + reagents.add_reagent("nitrogen", 1+round((potency / 15), 1)) + reagents.add_reagent("potassium", 1+round((potency / 20), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_arabica @@ -1024,7 +1075,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) + if(reagents) + reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) /obj/item/weapon/reagent_containers/food/snacks/grown/coffee_robusta seed = "/obj/item/seeds/coffee_robusta_seed" @@ -1036,8 +1088,9 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) - reagents.add_reagent("hyperzine", 1+round((potency / 20), 1)) + if(reagents) + reagents.add_reagent("coffeepowder", 1+round((potency / 10), 2)) + reagents.add_reagent("hyperzine", 1+round((potency / 20), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco seed = "/obj/item/seeds/tobacco_seed" @@ -1058,7 +1111,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("dexalin", 1+round((potency / 20), 1)) + if(reagents) + reagents.add_reagent("dexalin", 1+round((potency / 20), 1)) /obj/item/weapon/reagent_containers/food/snacks/grown/tea_aspera @@ -1071,7 +1125,8 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) + if(reagents) + reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) /obj/item/weapon/reagent_containers/food/snacks/grown/tea_astra @@ -1084,5 +1139,6 @@ New() ..() spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) - reagents.add_reagent("kelotane", 1+round((potency / 20), 1)) + if(reagents) + reagents.add_reagent("teapowder", 1+round((potency / 10), 2)) + reagents.add_reagent("kelotane", 1+round((potency / 20), 1)) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 0b783cc6aff..ad9022bbbad 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -68,7 +68,7 @@ continue G.attackby(NG, user) usr << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks." - del(src) + qdel(src) return if(is_type_in_list(W,accepted)) var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W @@ -77,8 +77,8 @@ var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc) usr.unEquip(W) usr.put_in_active_hand(T) - del(leaf) - del(src) + qdel(leaf) + qdel(src) return else usr << "\red You must dry this first." @@ -189,4 +189,4 @@ w_class = 1.0 throwforce = 0 throw_speed = 3 - throw_range = 7 + throw_range = 7 diff --git a/code/modules/hydroponics/hydroitemcode.dm b/code/modules/hydroponics/hydroitemcode.dm index 938778ee691..dcb3c2346c2 100644 --- a/code/modules/hydroponics/hydroitemcode.dm +++ b/code/modules/hydroponics/hydroitemcode.dm @@ -21,7 +21,7 @@ else usr << "All the petals have fallen off the [name] from violent whacking." usr.unEquip(src) - del(src) + qdel(src) /obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) @@ -47,7 +47,7 @@ else usr << "All the leaves have fallen off the nettle from violent whacking." usr.unEquip(src) - del(src) + qdel(src) /obj/item/weapon/grown/nettle/changePotency(newValue) //-QualityVan ..() @@ -87,7 +87,7 @@ else usr << "All the leaves have fallen off the deathnettle from violent whacking." usr.unEquip(src) - del(src) + qdel(src) /obj/item/weapon/grown/deathnettle/changePotency(newValue) //-QualityVan ..() @@ -101,7 +101,7 @@ user << "You use [W] to fashion a pipe out of the corn cob!" new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) usr.unEquip(src) - del(src) + qdel(src) return //Bluespace Tomatoes @@ -116,7 +116,7 @@ new/obj/effect/decal/cleanable/oil(src.loc) src.visible_message("The [src.name] has been squashed.","You hear a smack.") usr.unEquip(src) - del(src) + qdel(src) return for(var/turf/T in orange(M,outer_teleport_radius)) if(T in orange(M,inner_teleport_radius)) continue @@ -153,5 +153,5 @@ s.start() new/obj/effect/decal/cleanable/oil(src.loc) src.visible_message("The [src.name] has been squashed, causing a distortion in space-time.","You hear a splat and a crackle.") - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index b90ebe182c0..da16895ba73 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -228,7 +228,7 @@ obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, var/oldPlantName if(myseed) // In case there's nothing in the tray beforehand oldPlantName = myseed.plantname - del(myseed) + qdel(myseed) else oldPlantName = "Empty tray" switch(rand(1,18)) // randomly pick predominative weed @@ -281,7 +281,7 @@ obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant! var/oldPlantName = myseed.plantname if(myseed.mutatelist.len > 0) var/mutantseed = pick(myseed.mutatelist) - del(myseed) + qdel(myseed) myseed = new mutantseed else @@ -305,7 +305,7 @@ obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant! obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant if( weedlevel > 5 ) if(myseed) - del(myseed) + qdel(myseed) var/newWeed = pick(/obj/item/seeds/libertymycelium, /obj/item/seeds/angelmycelium, /obj/item/seeds/deathnettleseed, /obj/item/seeds/kudzuseed) myseed = new newWeed dead = 0 @@ -356,7 +356,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) yieldmod = myNut.yieldmod mutmod = myNut.mutmod user << "You replace the nutrient solution in [src]." - del(O) + qdel(O) update_icon() else if(istype(O, /obj/item/weapon/reagent_containers) ) // Syringe stuff (and other reagent containers now too) @@ -411,7 +411,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) reagent_source.reagents.trans_to(S,split) if(istype(reagent_source, /obj/item/weapon/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/weapon/reagent_containers/pill)) - del(reagent_source) + qdel(reagent_source) @@ -573,7 +573,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else user << "Nothing happens..." S.clear_reagents() - del(S) + qdel(S) H.update_icon() return 1 @@ -637,7 +637,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) adjustWeeds(-myWKiller.WeedKillStr) user << "You apply the weedkiller solution into [src]." playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) - del(O) + qdel(O) update_icon() else if(istype(O, /obj/item/weapon/storage/bag/plants)) @@ -655,7 +655,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) adjustPests(-myPKiller.PestKillStr) user << "You apply the pestkiller solution into [src]." playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) - del(O) + qdel(O) update_icon() else if(istype(O, /obj/item/weapon/wrench) && unwrenchable) @@ -693,7 +693,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else if(istype(O, /obj/item/weapon/shovel)) if(istype(src, /obj/machinery/hydroponics/soil)) user << "You clear up [src]!" - del(src) + qdel(src) return @@ -710,7 +710,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) planted = 0 dead = 0 user << "You remove the dead plant from [src]." - del(myseed) + qdel(myseed) update_icon() else if(planted && !dead) @@ -922,7 +922,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else user << "You harvest [yieldmod * myseed.yield] items from the [myseed.plantname]." if(myseed.oneharvest) - del(myseed) + qdel(myseed) planted = 0 dead = 0 update_icon() diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index d583e8db2e1..7b6c2c5972a 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -14,7 +14,7 @@ t_prod.yield = F.yield t_prod.potency = F.potency t_amount++ - del(O) + qdel(O) return 1 else if(istype(O, /obj/item/weapon/grown/)) @@ -29,7 +29,7 @@ t_prod.yield = F.yield t_prod.potency = F.potency t_amount++ - del(O) + qdel(O) return 1 else return 0 diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 310e2ee11c8..cffb99f9966 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -1056,7 +1056,7 @@ return user << "You plant the kudzu. You monster." new /obj/effect/spacevine_controller(user.loc) - del(src) + qdel(src) /obj/item/seeds/chillighost name = "pack of ghost chilli seeds" diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index ddce2d7cc18..19c6921b4c0 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -44,7 +44,7 @@ if(do_after(user, 20)) user << "You pry the frame apart." new /obj/item/stack/sheet/wood(loc, 4) - del(src) + qdel(src) if(1) if(istype(I, /obj/item/stack/sheet/wood)) @@ -108,20 +108,20 @@ switch(severity) if(1.0) for(var/obj/item/weapon/book/b in contents) - del(b) - del(src) + qdel(b) + qdel(src) if(2.0) for(var/obj/item/weapon/book/b in contents) if(prob(50)) b.loc = (get_turf(src)) else - del(b) + qdel(b) del(src) if(3.0) if(prob(50)) for(var/obj/item/weapon/book/b in contents) b.loc = (get_turf(src)) - del(src) + qdel(src) /obj/structure/bookcase/update_icon() diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 16e4dd7dcdb..e0e3b36e19f 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -472,6 +472,6 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f b.dat = O:info b.name = "Print Job #" + "[rand(100, 999)]" b.icon_state = "book[rand(1,7)]" - del(O) + qdel(O) else ..() diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 586ebf3527a..e745e1a5f25 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -50,7 +50,7 @@ var/obj/item/stack/sheet/M = new O.refined_type(src) points += O.points return M - del(O)//No refined type? Purge it. + qdel(O)//No refined type? Purge it. return /obj/machinery/mineral/ore_redemption/attack_hand(user as mob) @@ -236,7 +236,7 @@ new /mob/living/simple_animal/hostile/mining_drone(src.loc) if("Cancel") return - del(voucher) + qdel(voucher) /obj/machinery/mineral/equipment_locker/ex_act() return @@ -309,7 +309,7 @@ J.target = chosen_beacon try_move_adjacent(J) playsound(src,'sound/effects/sparks4.ogg',50,1) - del(src) + qdel(src) /obj/effect/portal/wormhole/jaunt_tunnel name = "jaunt tunnel" @@ -387,7 +387,7 @@ playsound(src,'sound/effects/sparks4.ogg',50,1) M.gets_drilled() spawn(5) - del(src) + qdel(src) else var/datum/gas_mixture/environment = proj_turf.return_air() var/pressure = environment.return_pressure() @@ -405,7 +405,7 @@ for(var/mob/living/L in src.loc) L << "The [src.name] ruptured with you in it!" L.adjustBruteLoss(resonance_damage) - del(src) + qdel(src) /**********************Facehugger toy**********************/ @@ -488,7 +488,7 @@ visible_message("[src] is destroyed!") new /obj/effect/decal/cleanable/robot_debris(src.loc) DropOre() - del src + qdel(src) return /mob/living/simple_animal/hostile/mining_drone/New() diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 8a736e5bc76..1e84dcb749d 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -26,7 +26,7 @@ if (machine && release_door) machine.CONSOLE = src else - del(src) + qdel(src) /obj/machinery/mineral/labor_claim_console/proc/check_auth() if(emagged) return 1 //Shuttle is emagged, let any ol' person through diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 2a0c97eddba..3dfcec72548 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -16,7 +16,7 @@ if (machine) machine.CONSOLE = src else - del(src) + qdel(src) /obj/machinery/mineral/processing_unit_console/attack_hand(user as mob) diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index e1f32e1bdbe..c1f1474eeb4 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -16,7 +16,7 @@ if (machine) machine.CONSOLE = src else - del(src) + qdel(src) /obj/machinery/mineral/stacking_unit_console/attack_hand(user as mob) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index d80d171a8e2..c12e2d994d6 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -12,7 +12,7 @@ var/obj/item/weapon/weldingtool/W = I if(W.remove_fuel(15)) new refined_type(get_turf(src.loc)) - del(src) + qdel(src) else user << "Not enough fuel to smelt [src]." ..() @@ -43,10 +43,10 @@ var/sandAmt = 1 // The sand we're holding for(var/obj/item/weapon/ore/glass/sandToConvert in location) // The sand on the floor sandAmt += 1 - del(sandToConvert) + qdel(sandToConvert) var/obj/item/stack/sheet/mineral/newSandstone = new /obj/item/stack/sheet/mineral/sandstone(location) newSandstone.amount = sandAmt - del(src) + qdel(src) /obj/item/weapon/ore/plasma name = "Plasma ore" @@ -158,7 +158,7 @@ explosion(src.loc,1,2,5,adminlog = notify_admins) if(quality == 1) explosion(src.loc,-1,1,3,adminlog = notify_admins) - del(src) + qdel(src) /obj/item/weapon/ore/New() pixel_x = rand(0,16)-8 @@ -232,7 +232,7 @@ if(CC.amount <= 0) user << "\blue This cable coil appears to be empty." - del(CC) + qdel(CC) return overlays += image('icons/obj/economy.dmi',"coin_string_overlay") diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index cf51df634eb..11c6c3c834c 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -2,4 +2,4 @@ ..() spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. - del(src) + qdel(src) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 2de3f3ef8d4..efb0ce29746 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -209,7 +209,7 @@ Des: Removes all infected images from the alien. if (client) for(var/image/I in client.images) if(dd_hasprefix_case(I.icon_state, "infected")) - del(I) + qdel(I) return #undef HEAT_DAMAGE_LEVEL_1 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 82ecbe8bb4b..3b52e1bb872 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -42,7 +42,7 @@ O.show_message(text("\green [src] begins to twist and contort!"), 1) var/mob/living/carbon/alien/humanoid/queen/new_xeno = new (loc) mind.transfer_to(new_xeno) - del(src) + qdel(src) else src << "We already have an alive queen." return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 93d736cdaa7..68e75e5a5f3 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -463,7 +463,7 @@ if(M.stat == 2) M.death(1) stomach_contents.Remove(M) - del(M) + qdel(M) continue if(air_master.current_cycle%3==1) if(!(status_flags & GODMODE)) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 70471a8f086..42601587766 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -312,4 +312,4 @@ else var/mob/living/carbon/alien/humanoid/A = new(loc) A.key = key - del(src) */ \ No newline at end of file + qdel(src) */ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 56e02fd1552..c16b202793a 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -377,7 +377,7 @@ if(M.stat == 2) M.death(1) stomach_contents.Remove(M) - del(M) + qdel(M) continue if(air_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index a1806692dfa..21e5494e2bb 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -49,7 +49,7 @@ if("Drone") new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) if(mind) mind.transfer_to(new_xeno) - del(src) + qdel(src) return else src << "\red You are not fully grown." diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 861f63f0c10..6c1ca41053a 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -18,9 +18,9 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds spawn(0) AddInfectionImages(affected_mob) else - del(src) + qdel(src) -/obj/item/alien_embryo/Del() +/obj/item/alien_embryo/Destroy() if(affected_mob) affected_mob.status_flags &= ~(XENO_HOST) spawn(0) @@ -103,7 +103,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds if(istype(new_xeno.loc,/mob/living/carbon)) var/mob/living/carbon/digester = new_xeno.loc digester.stomach_contents += new_xeno - del(src) + qdel(src) /*---------------------------------------- Proc: RefreshInfectionImage() @@ -114,7 +114,7 @@ Des: Removes all infection images from aliens and places an infection image on a if(alien.client) for(var/image/I in alien.client.images) if(dd_hasprefix_case(I.icon_state, "infected")) - del(I) + qdel(I) for(var/mob/living/L in mob_list) if(iscorgi(L) || iscarbon(L)) if(L.status_flags & XENO_HOST) @@ -145,4 +145,4 @@ Des: Removes the alien infection image from all aliens in the world located in p for(var/image/I in alien.client.images) if(I.loc == C) if(dd_hasprefix_case(I.icon_state, "infected")) - del(I) \ No newline at end of file + qdel(I) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index d837c80ebb1..eef8c672010 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -10,7 +10,7 @@ create_reagents(1000) ..() - Del() + Destroy() if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. if(stat!=DEAD) //If not dead. death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index c39f1039943..5e44ce96ccd 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -21,8 +21,8 @@ /mob/living/carbon/brain/gib(var/animation = 0) if(container && istype(container, /obj/item/device/mmi)) - del(container)//Gets rid of the MMI if there is one + qdel(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) - del(loc)//Gets rid of the brain item + qdel(loc)//Gets rid of the brain item ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 46df51498cf..7e0a61c3577 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -362,7 +362,7 @@ if(istype(item, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = item item = G.throw() //throw the person instead of the grab - del(G) //We delete the grab, as it needs to stay around until it's returned. + qdel(G) //We delete the grab, as it needs to stay around until it's returned. if(ismob(item)) var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -552,4 +552,4 @@ var/const/GALOSHES_DONT_HELP = 8 loc.handle_slip(src, s_amount, w_amount, O, lube) /mob/living/carbon/fall(var/forced) - loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing + loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b8e7c5ef085..e278074ce52 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -115,7 +115,7 @@ if (client.statpanel == "Status") if (internal) if (!internal.air_contents) - del(internal) + qdel(internal) else stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 62d68701827..0d1ef146670 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -138,14 +138,14 @@ visible_message("[M] has broken [src]'s grip on [lgrab.affecting]!") talked = 1 spawn(1) - del(lgrab) + qdel(lgrab) if(istype(r_hand, /obj/item/weapon/grab)) var/obj/item/weapon/grab/rgrab = r_hand if(rgrab.affecting) visible_message("[M] has broken [src]'s grip on [rgrab.affecting]!") talked = 1 spawn(1) - del(rgrab) + qdel(rgrab) //End BubbleWrap if(!talked) //BubbleWrap diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 6abba440448..35a630ba4ae 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -30,12 +30,12 @@ H << "\red You are unable to equip that." -/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, del_on_fail = 1) +/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1) for(var/slot in slots) - if(equip_to_slot_if_possible(I, slots[slot], del_on_fail = 0)) + if(equip_to_slot_if_possible(I, slots[slot], qdel_on_fail = 0)) return slot - if(del_on_fail) - del(I) + if(qdel_on_fail) + qdel(I) return null diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 497d52b7131..bb9d407fd77 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -863,7 +863,7 @@ else for(var/atom/a in hallucinations) - del a + qdel(a) if(halloss > 100) src << "You're too tired to keep going..." @@ -1219,7 +1219,7 @@ if(M.stat == 2) M.death(1) stomach_contents.Remove(M) - del(M) + qdel(M) continue if(air_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index fd6f3c0c9f9..f0cfd8df268 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -200,7 +200,7 @@ var/f_loss = null switch (severity) if (1.0) - del(src) + qdel(src) return if (2.0) @@ -593,7 +593,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You apply the enhancer. It now has triple the amount of uses." Uses = 3 enhanced = 1 - del (O) + qdel(O) /obj/item/slime_extract/New() ..() @@ -714,14 +714,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del (M) + qdel(M) var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del (src) + qdel(src) /obj/item/weapon/slimepotion2 name = "advanced docility potion" @@ -745,14 +745,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del (M) + qdel(M) var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del (src) + qdel(src) /obj/item/weapon/slimesteroid @@ -777,7 +777,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You feed the slime the steroid. It now has triple the amount of extract." M.cores = 3 - del (src) + qdel(src) /obj/item/weapon/slimesteroid2 name = "extract enhancer" @@ -796,7 +796,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You apply the enhancer. It now has triple the amount of uses." target.Uses = 3 target.enahnced = 1 - del (src)*/ + qdel(src)*/ ////////Adamantine Golem stuff I dunno where else to put it @@ -916,16 +916,16 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 if(prob(50)) G.gender = "female" hardset_dna(G, null, null, null, "adamantine") G.real_name = text("Adamantine Golem ([rand(1, 1000)])") - G.equip_to_slot_or_del(new /obj/item/clothing/under/golem(G), slot_w_uniform) - G.equip_to_slot_or_del(new /obj/item/clothing/suit/golem(G), slot_wear_suit) - G.equip_to_slot_or_del(new /obj/item/clothing/shoes/golem(G), slot_shoes) - G.equip_to_slot_or_del(new /obj/item/clothing/mask/breath/golem(G), slot_wear_mask) - G.equip_to_slot_or_del(new /obj/item/clothing/gloves/golem(G), slot_gloves) - //G.equip_to_slot_or_del(new /obj/item/clothing/head/space/golem(G), slot_head) + G.equip_to_slot_or_qdel(new /obj/item/clothing/under/golem(G), slot_w_uniform) + G.equip_to_slot_or_qdel(new /obj/item/clothing/suit/golem(G), slot_wear_suit) + G.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/golem(G), slot_shoes) + G.equip_to_slot_or_qdel(new /obj/item/clothing/mask/breath/golem(G), slot_wear_mask) + G.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/golem(G), slot_gloves) + //G.equip_to_slot_or_qdel(new /obj/item/clothing/head/space/golem(G), slot_head) G.loc = src.loc G.key = ghost.key G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost." - del (src) + qdel(src) proc/announce_to_ghosts() @@ -1013,7 +1013,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 spawn(rand(50,100)) src.visible_message("\blue The [name] bursts open!") new/mob/living/carbon/slime(T) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/egg/slime/process() diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 6f186f0087c..b6ad88362d2 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -221,7 +221,7 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key - del(src) + qdel(src) else src << "I am not ready to reproduce yet..." else diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 9b2ba66aae2..042ca99f4c8 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -366,7 +366,7 @@ return if (stat == DEAD && !client) gibs(loc, viruses) - del(src) + qdel(src) return diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 281ccc35774..ab544be2a01 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -8,7 +8,7 @@ spawn_gibs() - end_animation(animate) // Will del(src) + end_animation(animate) // Will qdel(src) /mob/living/proc/spawn_gibs() gibs(loc, viruses) @@ -55,8 +55,8 @@ /mob/living/proc/end_animation(var/animate) if(!animate) - del(src) + qdel(src) else spawn(15) - if(animate) del(animate) - if(src) del(src) \ No newline at end of file + if(animate) qdel(animate) + if(src) qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f241d3c7a54..0d5a851dc7d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -362,7 +362,7 @@ for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) //G = null - del(G) + qdel(G) else ok = 0 if (locate(/obj/item/weapon/grab, M.grabbed_by.len)) @@ -434,22 +434,22 @@ if(!L.stat && L.canmove && !L.restrained()) var/resisting = 0 for(var/obj/O in L.requests) - del(O) + qdel(O) resisting++ for(var/obj/item/weapon/grab/G in usr.grabbed_by) resisting++ if(G.state == GRAB_PASSIVE) - del(G) + qdel(G) else if(G.state == GRAB_AGGRESSIVE) if(prob(25)) L.visible_message("[L] has broken free of [G.assailant]'s grip!") - del(G) + qdel(G) else if(G.state == GRAB_NECK) if(prob(5)) L.visible_message("[L] has broken free of [G.assailant]'s headlock!") - del(G) + qdel(G) if(resisting) L.visible_message("[L] resists!") return @@ -507,7 +507,7 @@ CM.visible_message("[CM] manages to break [CM.handcuffed]!" , \ "You successfully break [CM.handcuffed]!") CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.handcuffed) + qdel(CM.handcuffed) CM.handcuffed = null CM.update_inv_handcuffed(0) else @@ -541,7 +541,7 @@ CM.visible_message("[CM] manages to break [CM.legcuffed]!", \ "You successfully break [CM.legcuffed].") CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.legcuffed) + qdel(CM.legcuffed) CM.legcuffed = null CM.update_inv_legcuffed(0) else diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index fa2c82f287a..9d00c59eaae 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -97,7 +97,7 @@ var/list/ai_list = list() if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. new/obj/structure/AIcore/deactivated(loc)//New empty terminal. - del(src)//Delete AI. + qdel(src)//Delete AI. return else if (B.brainmob.mind) @@ -118,7 +118,7 @@ var/list/ai_list = list() ..() return -/mob/living/silicon/ai/Del() +/mob/living/silicon/ai/Destroy() ai_list -= src shuttle_caller_list -= src emergency_shuttle.autoshuttlecall() diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 7f911fa56ad..d1eb8e21c19 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -51,9 +51,9 @@ spawn(5) eyeobj.loc = src.loc -/mob/living/silicon/ai/Del() +/mob/living/silicon/ai/Destroy() eyeobj.ai = null - del(eyeobj) // No AI, no Eye + qdel(eyeobj) // No AI, no Eye ..() /atom/proc/move_camera_by_click() diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index cf7776f0629..f67578c5286 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -23,7 +23,7 @@ // STRUCTURES -/obj/structure/Del() +/obj/structure/Destroy() if(ticker) cameranet.updateVisibility(src) ..() @@ -35,7 +35,7 @@ // EFFECTS -/obj/effect/Del() +/obj/effect/Destroy() if(ticker) cameranet.updateVisibility(src) ..() @@ -91,7 +91,7 @@ cameranet.cameras += src cameranet.addCamera(src) -/obj/machinery/camera/Del() +/obj/machinery/camera/Destroy() cameranet.cameras -= src cameranet.removeCamera(src) ..() diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index 127091a854c..75e30dda3f9 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -15,4 +15,4 @@ if(mind) del(mind) living_mob_list -= src ghostize() - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index eb70e667da6..0f56249f060 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -6,7 +6,7 @@ var/turf/T = get_turf(src.loc) for (var/mob/M in viewers(T)) M.show_message("\red [src.cable] rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) - del(src.cable) + qdel(src.cable) regular_hud_updates() if(src.secHUD == 1) @@ -29,4 +29,4 @@ while(card) loc = get_turf(card) sleep(5) - del(src) //if there's no pAI we shouldn't exist + qdel(src) //if there's no pAI we shouldn't exist diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 1fcafeb374a..3d92ef79620 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -9,7 +9,7 @@ /mob/living/silicon/robot/dust(var/animation = 1) if(mmi) - del(mmi) + qdel(mmi) ..() /mob/living/silicon/robot/spawn_dust() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 086f4ea77ce..50f506a7e85 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -116,7 +116,7 @@ //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //Improved /N -/mob/living/silicon/robot/Del() +/mob/living/silicon/robot/Destroy() if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. var/turf/T = get_turf(loc)//To hopefully prevent run time errors. if(T) mmi.loc = T @@ -927,7 +927,7 @@ for(var/A in tile) if(istype(A, /obj/effect)) if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) - del(A) + qdel(A) else if(istype(A, /obj/item)) var/obj/item/cleaned_item = A cleaned_item.clean_blood() @@ -953,7 +953,7 @@ /mob/living/silicon/robot/proc/self_destruct() if(emagged) if(mmi) - del(mmi) + qdel(mmi) explosion(src.loc,1,2,4,flame_range = 2) else explosion(src.loc,-1,0,2) @@ -969,7 +969,7 @@ scrambledcodes = 1 //Disconnect it's camera so it's not so easily tracked. if(src.camera) - del(src.camera) + qdel(src.camera) src.camera = null // I'm trying to get the Cyborg to not be listed in the camera list // Instead of being listed as "deactivated". The downside is that I'm going @@ -1066,7 +1066,7 @@ if (cell) //Sanity check. cell.loc = T cell = null - del(src) + qdel(src) /mob/living/silicon/robot/syndicate icon_state = "syndie_bloodhound" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index e88c672bc0f..2401c132ad5 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -223,7 +223,7 @@ on_emag() ..() for(var/obj/item/weapon/pickaxe/borgdrill/D in modules) - del(D) + qdel(D) modules += new /obj/item/weapon/pickaxe/diamonddrill(src) rebuild() diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index fe3fac63c90..8c3ad6b4e52 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -40,7 +40,7 @@ if((M.client && !( M.blinded ))) M.show_message("\red [src] collapses in a shattered heap. ") ghostize() - del src + qdel(src) return /mob/living/simple_animal/construct/examine() diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 047e18e651c..c94683f4672 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -35,29 +35,29 @@ M.real_name = src.name M.stat = 2 //Kills the new mob if(src.corpseuniform) - M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) + M.equip_to_slot_or_qdel(new src.corpseuniform(M), slot_w_uniform) if(src.corpsesuit) - M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) + M.equip_to_slot_or_qdel(new src.corpsesuit(M), slot_wear_suit) if(src.corpseshoes) - M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) + M.equip_to_slot_or_qdel(new src.corpseshoes(M), slot_shoes) if(src.corpsegloves) - M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves) + M.equip_to_slot_or_qdel(new src.corpsegloves(M), slot_gloves) if(src.corpseradio) - M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears) + M.equip_to_slot_or_qdel(new src.corpseradio(M), slot_ears) if(src.corpseglasses) - M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) + M.equip_to_slot_or_qdel(new src.corpseglasses(M), slot_glasses) if(src.corpsemask) - M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) + M.equip_to_slot_or_qdel(new src.corpsemask(M), slot_wear_mask) if(src.corpsehelmet) - M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) + M.equip_to_slot_or_qdel(new src.corpsehelmet(M), slot_head) if(src.corpsebelt) - M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) + M.equip_to_slot_or_qdel(new src.corpsebelt(M), slot_belt) if(src.corpsepocket1) - M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store) + M.equip_to_slot_or_qdel(new src.corpsepocket1(M), slot_r_store) if(src.corpsepocket2) - M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store) + M.equip_to_slot_or_qdel(new src.corpsepocket2(M), slot_l_store) if(src.corpseback) - M.equip_to_slot_or_del(new src.corpseback(M), slot_back) + M.equip_to_slot_or_qdel(new src.corpseback(M), slot_back) if(src.corpseid == 1) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" @@ -77,8 +77,8 @@ if(corpseidjob) W.assignment = corpseidjob W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - del(src) + M.equip_to_slot_or_qdel(W, slot_wear_id) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index a033f81ac63..31d833a5198 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -57,7 +57,7 @@ health = min(maxHealth, health + MED.heal_brute) MED.amount -= 1 if(MED.amount <= 0) - del(MED) + qdel(MED) for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) M.show_message("\blue [user] applies [MED] on [src]") diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index e997036477f..84a0315361e 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -48,7 +48,7 @@ if(locate(/obj/effect/spacevine) in loc) var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -68,7 +68,7 @@ if(!stat) if(locate(/obj/effect/spacevine) in loc) var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -182,7 +182,7 @@ amount_grown += rand(1,2) if(amount_grown >= 100) new /mob/living/simple_animal/chicken(src.loc) - del(src) + qdel(src) var/const/MAX_CHICKENS = 50 var/global/chicken_count = 0 @@ -230,7 +230,7 @@ var/global/chicken_count = 0 if(!stat && eggsleft < 8) user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.") user.drop_item() - del(O) + qdel(O) eggsleft += rand(1, 4) //world << eggsleft else @@ -259,6 +259,6 @@ var/global/chicken_count = 0 visible_message("[src] hatches with a quiet cracking sound.") new /mob/living/simple_animal/chick(get_turf(src)) processing_objects.Remove(src) - del(src) + qdel(src) else processing_objects.Remove(src) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index e1b266d7edf..3e18c879197 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -39,7 +39,7 @@ if(!ckey) var/obj/item/trash/deadmouse/M = new(src.loc) M.icon_state = src.icon_dead - del (src) + qdel(src) /mob/living/simple_animal/mouse/Crossed(AM as mob|obj) if( ishuman(AM) ) diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index b49c3e9eabc..6408325623e 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -72,4 +72,4 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 33425228628..9bab42fe934 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -57,5 +57,5 @@ icon_living = "holocarp" /mob/living/simple_animal/hostile/carp/holocarp/Die() - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index d2f7e80559a..278849e1b65 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -53,7 +53,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - del src + qdel(src) return /mob/living/simple_animal/hostile/hivebot/tele//this still needs work @@ -97,7 +97,7 @@ if("rapid") new /mob/living/simple_animal/hostile/hivebot/rapid(get_turf(src)) spawn(100) - del(src) + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 0809f9578fb..7495de7a8cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -254,7 +254,7 @@ if(!A) return if (!istype(target, /turf)) - del(A) + qdel(A) return A.current = target A.yo = target:y - start:y diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 2e2fc11a56b..207fbab072f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -44,7 +44,7 @@ /mob/living/simple_animal/hostile/mimic/Die() ..() visible_message("\red [src] stops moving!") - del(src) + qdel(src) @@ -198,7 +198,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca src.creator = creator faction = "\ref[creator]" // very unique if(destroy_original) - del(O) + qdel(O) return 1 return diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index b299b361e09..a46b53cdc82 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -174,7 +174,7 @@ ore_eaten++ if(!(O.type in ore_types_eaten)) ore_types_eaten += O.type - del(O) + qdel(O) if(ore_eaten > 5)//Limit the scope of the reward you can get, or else things might get silly ore_eaten = 5 visible_message("The ore was swallowed whole!") @@ -185,7 +185,7 @@ spawn(chase_time) if(alerted) visible_message("The [src.name] buries into the ground, vanishing from sight!") - del(src) + qdel(src) /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Reward() if(!ore_eaten || ore_types_eaten.len == 0) @@ -280,7 +280,7 @@ user << "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments." playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) H.revive() - del(src) + qdel(src) ..() /mob/living/simple_animal/hostile/asteroid/hivelordbrood @@ -310,10 +310,10 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() ..() spawn(100) - del(src) + qdel(src) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die() - del(src) + qdel(src) /mob/living/simple_animal/hostile/asteroid/goliath name = "goliath" @@ -382,7 +382,7 @@ for(var/mob/living/M in src.loc) M.Weaken(5) visible_message("The [src.name] knocks [M.name] down!") - del(src) + qdel(src) /obj/effect/goliath_tentacle/Crossed(AM as mob|obj) if(isliving(AM)) @@ -411,7 +411,7 @@ if(current_armor.["melee"] < 90) current_armor.["melee"] = min(current_armor.["melee"] + 10, 90) user << "You strengthen [target], improving its resistance against melee attacks." - del(src) + qdel(src) else user << "You can't improve [C] any further." return diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 88770679633..81bb4a1bfcc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -76,7 +76,7 @@ level_gain = 1 M.LevelUp(level_gain) M.health = M.maxHealth - del(src) + qdel(src) ..() /mob/living/simple_animal/hostile/mushroom/revive() @@ -125,7 +125,7 @@ if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom)) if(stat == DEAD && !recovery_cooldown) Recover() - del(I) + qdel(I) else user << "[src] won't eat it!" return @@ -156,4 +156,4 @@ S.reagents.add_reagent("mushroomhallucinogen", powerlevel) S.reagents.add_reagent("doctorsdelight", powerlevel) S.reagents.add_reagent("synaptizine", powerlevel) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 691490c61c8..94e6d01a00c 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -55,5 +55,5 @@ new corpse (src.loc) if(weapon1) new weapon1 (src.loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 8e5c5c70a8b..4d67544bbca 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -53,5 +53,5 @@ new corpse (src.loc) if(weapon1) new weapon1 (src.loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 4896ea69979..22a9de28e25 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -42,7 +42,7 @@ new weapon1 (src.loc) if(weapon2) new weapon2 (src.loc) - del src + qdel(src) return ///////////////Sword and shield//////////// @@ -160,5 +160,5 @@ /mob/living/simple_animal/hostile/viscerator/Die() ..() visible_message("\red [src] is smashed into pieces!") - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index c1f43125684..58954421516 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -54,7 +54,7 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) - del(src) + qdel(src) /mob/living/simple_animal/hostile/tree/festivus name = "festivus pole" @@ -68,4 +68,4 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/rods(loc) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 597a3c49e8b..7b3b06ce6fb 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -284,7 +284,7 @@ lines 294-301 in living/say.dm (speech buffer) icon_state = "parrot_fly" drop_held_item(0) else if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/cracker)) //Poly wants a cracker. - del(O) + qdel(O) user.drop_item() if(health < maxHealth) adjustBruteLoss(-10) @@ -704,7 +704,7 @@ lines 294-301 in living/say.dm (speech buffer) //parrots will eat crackers instead of dropping them if(istype(held_item,/obj/item/weapon/reagent_containers/food/snacks/cracker) && (drop_gently)) - del(held_item) + qdel(held_item) held_item = null if(health < maxHealth) adjustBruteLoss(-10) diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 2390a5957c2..1f5121fc10a 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -36,7 +36,7 @@ if((M.client && !( M.blinded ))) M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") ghostize() - del src + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 2aad136b1c3..0fd93e0d50e 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -387,7 +387,7 @@ adjustBruteLoss(-MED.heal_brute) MED.amount -= 1 if(MED.amount <= 0) - del(MED) + qdel(MED) for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) M.show_message("\blue [user] applies [MED] on [src]") @@ -517,7 +517,7 @@ /mob/living/simple_animal/proc/harvest() new meat_type (get_turf(src)) if(prob(95)) - del(src) + qdel(src) return gib() return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/worm.dm b/code/modules/mob/living/simple_animal/worm.dm index 814b619d558..fb16a4da40d 100644 --- a/code/modules/mob/living/simple_animal/worm.dm +++ b/code/modules/mob/living/simple_animal/worm.dm @@ -96,7 +96,7 @@ return - Del() //if a chunk a destroyed, make a new worm out of the split halves + Delete() //if a chunk a destroyed, make a new worm out of the split halves if(previous) previous.Detach() ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index eb0aebe1e3f..b3c5e443be3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,8 +1,12 @@ -/mob/Del()//This makes sure that mobs with clients/keys are not just deleted from the game. +/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. mob_list -= src dead_mob_list -= src living_mob_list -= src ghostize() + for(var/atom/movable/AM in src) + if(isobj(AM)) + unEquip(AM) + qdel(AM) ..() var/next_mob_id = 0 @@ -126,7 +130,7 @@ var/next_mob_id = 0 var/list/temp = list( ) temp += L.container //L = null - del(L) + qdel(L) return temp else return L.container @@ -151,10 +155,10 @@ var/next_mob_id = 0 return 0 -/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, del_on_fail = 0, disable_warning = 1, redraw_mob = 1) - if(equip_to_slot_if_possible(W, slot_l_hand, del_on_fail, disable_warning, redraw_mob)) +/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, qdel_on_fail = 0, disable_warning = 1, redraw_mob = 1) + if(equip_to_slot_if_possible(W, slot_l_hand, qdel_on_fail, disable_warning, redraw_mob)) return 1 - else if(equip_to_slot_if_possible(W, slot_r_hand, del_on_fail, disable_warning, redraw_mob)) + else if(equip_to_slot_if_possible(W, slot_r_hand, qdel_on_fail, disable_warning, redraw_mob)) return 1 return 0 @@ -162,11 +166,11 @@ var/next_mob_id = 0 //set del_on_fail to have it delete W if it fails to equip //set disable_warning to disable the 'you are unable to equip that' warning. //unset redraw_mob to prevent the mob from being redrawn at the end. -/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1) +/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, qdel_on_fail = 0, disable_warning = 0, redraw_mob = 1) if(!istype(W)) return 0 if(!W.mob_can_equip(src, slot, disable_warning)) - if(del_on_fail) - del(W) + if(qdel_on_fail) + qdel(W) else if(!disable_warning) src << "\red You are unable to equip that." //Only print if del_on_fail is false @@ -180,7 +184,7 @@ var/next_mob_id = 0 return //This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. -/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) +/mob/proc/equip_to_slot_or_qdel(obj/item/W as obj, slot) equip_to_slot_if_possible(W, slot, 1, 1, 0) //The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. @@ -207,7 +211,7 @@ var/list/slot_equipment_priority = list( \ if(!istype(W)) return 0 for(var/slot in slot_equipment_priority) - if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //del_on_fail = 0; disable_warning = 0; redraw_mob = 1 + if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 0; redraw_mob = 1 return 1 return 0 @@ -339,7 +343,7 @@ var/list/slot_equipment_priority = list( \ var/mob/new_player/M = new /mob/new_player() if(!client) log_game("[usr.key] AM failed due to disconnect.") - del(M) + qdel(M) return M.key = key @@ -662,6 +666,7 @@ note dizziness decrements automatically in the mob's Life() proc. stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]") stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]") stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]") + stat(null,"GC-[master_controller.gc_cost]\t#[garbage.queue.len]-[garbage.destroyed.len]") stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]") else stat(null,"MasterController-ERROR") diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index c5a9c364919..8f7c703591f 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -24,7 +24,7 @@ affecting = victim if(affecting.anchored) - del(src) + qdel(src) return hud = new /obj/screen/grab(src) @@ -35,10 +35,10 @@ affecting.grabbed_by += src -/obj/item/weapon/grab/Del() +/obj/item/weapon/grab/Destroy() if(affecting) affecting.grabbed_by -= src - del(hud) + qdel(hud) ..() //Used by throw code to hand over the mob, instead of throwing the grab. The grab is then deleted by the throw code. @@ -120,7 +120,7 @@ if(world.time < (last_upgrade + UPGRADE_COOLDOWN)) return if(!assailant.canmove || assailant.lying) - del(src) + qdel(src) return last_upgrade = world.time @@ -154,10 +154,10 @@ if(state == GRAB_KILL) return if(!affecting) - del(src) + qdel(src) return if(!assailant.canmove || assailant.lying) - del(src) + qdel(src) return state = GRAB_KILL assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!") @@ -174,12 +174,12 @@ //This is used to make sure the victim hasn't managed to yackety sax away before using the grab. /obj/item/weapon/grab/proc/confirm() if(!assailant || !affecting) - del(src) + qdel(src) return 0 if(affecting) if(!isturf(assailant.loc) || ( !isturf(affecting.loc) || assailant.loc != affecting.loc && get_dist(assailant, affecting) > 1) ) - del(src) + qdel(src) return 0 return 1 @@ -204,11 +204,11 @@ user.visible_message("[user] devours [affecting]!") affecting.loc = user attacker.stomach_contents.Add(affecting) - del(src) + qdel(src) /obj/item/weapon/grab/dropped() - del(src) + qdel(src) #undef UPGRADE_COOLDOWN #undef UPGRADE_KILL_TIMER \ No newline at end of file diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 80e9f8d41ea..b2fb02612d3 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -272,21 +272,21 @@ for(var/obj/item/weapon/grab/G in mob.grabbed_by) if(G.state == GRAB_PASSIVE && !grabbing.Find(G.assailant)) - del(G) + qdel(G) if(G.state == GRAB_AGGRESSIVE) move_delay = world.time + 10 if(!prob(25)) return 1 mob.visible_message("[mob] has broken free of [G.assailant]'s grip!") - del(G) + qdel(G) if(G.state == GRAB_NECK) move_delay = world.time + 10 if(!prob(5)) return 1 mob.visible_message("[mob] has broken free of [G.assailant]'s headlock!") - del(G) + qdel(G) return 0 diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 7d1907c74ef..a81a46609d1 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -30,7 +30,7 @@ if(!M || !ismob(M)) usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder." - del(M) + qdel(M) return if( istext(new_name) ) @@ -54,5 +54,5 @@ if(delete_old_mob) spawn(1) - del(src) + qdel(src) return M diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 9f064a99cd5..ad1c9b3098d 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -3,5 +3,5 @@ ..() if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. key = null//We null their key before deleting the mob, so they are properly kicked out. - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 340bd4f9c1c..597ee6a8b5d 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -120,7 +120,7 @@ observer.name = observer.real_name observer.key = key - del(src) + qdel(src) return 1 if(href_list["late_join"]) @@ -267,7 +267,7 @@ if(config.allow_latejoin_antagonists && emergency_shuttle.timeleft() > 300) //Don't make them antags if the station is evacuating ticker.mode.make_antag_chance(character) - del(src) + qdel(src) proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) if (ticker.current_state == GAME_STATE_PLAYING) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6622d549dc4..ede46742abd 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -28,7 +28,7 @@ sleep(22) //animation = null var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) - del(animation) + qdel(animation) @@ -77,7 +77,7 @@ updateappearance(O) . = O if ( !(tr_flags & TR_KEEPSRC) ) //flag should be used if monkeyize() is called inside another proc of src so that one does not crash - del(src) + qdel(src) return @@ -126,7 +126,7 @@ var/mob/living/carbon/human/O = new( loc ) for(var/obj/item/C in O.loc) O.equip_to_appropriate_slot(C) - del(animation) + qdel(animation) O.gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE @@ -176,7 +176,7 @@ updateappearance(O) . = O if ( !(tr_flags & TR_KEEPSRC) ) //don't delete src yet if it's needed to finish calling proc - del(src) + qdel(src) return /mob/new_player/AIize() @@ -187,7 +187,7 @@ if (notransform) return for(var/t in organs) - del(t) + qdel(t) return ..() @@ -259,7 +259,7 @@ O.rename_self("ai",1) . = O - del(src) + qdel(src) return @@ -269,7 +269,7 @@ return for(var/obj/item/W in src) if(delete_items) - del(W) + qdel(W) else unEquip(W) regenerate_icons() @@ -278,7 +278,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) @@ -306,7 +306,7 @@ O.mmi.transfer_identity(src)//Does not transfer key/client. . = O - del(src) + qdel(src) //human -> alien /mob/living/carbon/human/proc/Alienize() @@ -320,7 +320,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/alien_caste = pick("Hunter","Sentinel","Drone") var/mob/living/carbon/alien/humanoid/new_xeno @@ -337,7 +337,7 @@ new_xeno << "You are now an alien." . = new_xeno - del(src) + qdel(src) /mob/living/carbon/human/proc/slimeize(reproduce as num) if (notransform) @@ -350,7 +350,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/living/carbon/slime/new_slime if(reproduce) @@ -369,7 +369,7 @@ new_slime << "You are now a slime. Skreee!" . = new_slime - del(src) + qdel(src) /mob/living/carbon/human/proc/Blobize() if (notransform) @@ -397,7 +397,7 @@ icon = null invisibility = 101 for(var/t in organs) //this really should not be necessary - del(t) + qdel(t) var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) new_corgi.a_intent = "harm" @@ -405,7 +405,7 @@ new_corgi << "You are now a Corgi. Yap Yap!" . = new_corgi - del(src) + qdel(src) /mob/living/carbon/human/Animalize() @@ -428,7 +428,7 @@ invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/new_mob = new mobpath(src.loc) @@ -438,7 +438,7 @@ new_mob << "You suddenly feel more... animalistic." . = new_mob - del(src) + qdel(src) /mob/proc/Animalize() @@ -456,7 +456,7 @@ new_mob << "You feel more... animalistic" . = new_mob - del(src) + qdel(src) /* Certain mob types have problems and should not be allowed to be controlled by players. * diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 99abdf8f1c7..67923d56280 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -57,7 +57,7 @@ if(istype(I, /obj/item/hand_labeler_refill)) user << "You insert [I] into [src]." user.drop_item() - del(I) + qdel(I) labels_left = initial(labels_left) return diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 0ddb43bd82f..b002c91a8dc 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -242,7 +242,7 @@ else if(istype(O, /obj/item/device/toner)) if(toner <= 0) user.drop_item() - del(O) + qdel(O) toner = 40 user << "You insert [O] into [src]." updateUsrDialog() @@ -270,10 +270,10 @@ /obj/machinery/photocopier/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(2.0) if(prob(50)) - del(src) + qdel(src) else if(toner > 0) new /obj/effect/decal/cleanable/oil(get_turf(src)) @@ -287,7 +287,7 @@ /obj/machinery/photocopier/blob_act() if(prob(50)) - del(src) + qdel(src) else if(toner > 0) new /obj/effect/decal/cleanable/oil(get_turf(src)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 2a3420680e3..65ced77af37 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -139,7 +139,7 @@ return user << "You insert [I] into [src]." user.drop_item() - del(I) + qdel(I) pictures_left = pictures_max return ..() @@ -323,7 +323,7 @@ P.show(usr) usr << P.desc - del P //so 10 thousdand pictures items are not left in memory should an AI take them and then view them all. + qdel(src) //so 10 thousdand pictures items are not left in memory should an AI take them and then view them all. /obj/item/device/camera/afterattack(atom/target, mob/user, flag) if(!on || !pictures_left || ismob(target.loc)) return diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm index 8cb372b0c1a..dd0e503bd47 100644 --- a/code/modules/power/antimatter/containment_jar.dm +++ b/code/modules/power/antimatter/containment_jar.dm @@ -20,13 +20,13 @@ if(1.0) explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess if(src) - del(src) + qdel(src) return if(2.0) if(prob((fuel/10)-stability)) explosion(get_turf(src), 1, 2, 3, 5) if(src) - del(src) + qdel(src) return stability -= 40 if(3.0) diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 77a834fd8d1..c41a479aa97 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -35,16 +35,16 @@ linked_cores = list() -/obj/machinery/power/am_control_unit/Del()//Perhaps damage and run stability checks rather than just del on the others +/obj/machinery/power/am_control_unit/Destroy()//Perhaps damage and run stability checks rather than just del on the others for(var/obj/machinery/am_shielding/AMS in linked_shielding) - del(AMS) + qdel(AMS) ..() /obj/machinery/power/am_control_unit/process() if(exploding) explosion(get_turf(src),8,12,18,12) - if(src) del(src) + if(src) qdel(src) if(update_shield_icons && !shield_icon_delay) check_shield_icons() @@ -106,9 +106,7 @@ if(prob(100-stability))//Might infect the rest of the machine for(var/obj/machinery/am_shielding/AMS in linked_shielding) AMS.blob_act() - spawn(0) - //Likely explode - del(src) + qdel(src) return check_stability() return @@ -213,7 +211,7 @@ /obj/machinery/power/am_control_unit/proc/check_stability()//TODO: make it break when low also might want to add a way to fix it like a part or such that can be replaced if(stability <= 0) - del(src) + qdel(src) return diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index fac070f0928..5233d1b6f38 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -36,12 +36,11 @@ proc/cardinalrange(var/center) /obj/machinery/am_shielding/proc/controllerscan(var/priorscan = 0) //Make sure we are the only one here if(!istype(src.loc, /turf)) - del(src) + qdel(src) return for(var/obj/machinery/am_shielding/AMS in loc.contents) if(AMS == src) continue - spawn(0) - del(src) + qdel(src) return //Search for shielding first @@ -60,18 +59,16 @@ proc/cardinalrange(var/center) spawn(20) controllerscan(1)//Last chance return - spawn(0) - del(src) + qdel(src) return -/obj/machinery/am_shielding/Del() +/obj/machinery/am_shielding/Destroy() if(control_unit) control_unit.remove_shielding(src) if(processing) shutdown_core() visible_message("\red The [src.name] melts!") //Might want to have it leave a mess on the floor but no sprites for now ..() - return /obj/machinery/am_shielding/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -97,8 +94,7 @@ proc/cardinalrange(var/center) new /obj/effect/blob/node(src.loc,150) else new /obj/effect/blob(src.loc,60) - spawn(0) - del(src) + qdel(src) return check_stability() return @@ -185,7 +181,7 @@ proc/cardinalrange(var/center) if(injecting_fuel && control_unit) control_unit.exploding = 1 if(src) - del(src) + qdel(src) return @@ -215,7 +211,7 @@ proc/cardinalrange(var/center) /obj/item/device/am_shielding_container/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/device/multitool) && istype(src.loc,/turf)) new/obj/machinery/am_shielding(src.loc) - del(src) + qdel(src) return ..() return \ No newline at end of file diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 5009ddeb074..70acfee9961 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -136,7 +136,23 @@ spawn(5) src.update() - +/obj/machinery/power/apc/Destroy() + if(malfai && operating) + if (ticker.mode.config_tag == "malfunction") + if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) + ticker.mode:apcs-- + area.power_light = 0 + area.power_equip = 0 + area.power_environ = 0 + area.power_change() + if(occupier) + malfvacate(1) + del(wires) + if(cell) + qdel(cell) + if(terminal) + disconnect_terminal() + ..() /obj/machinery/power/apc/proc/make_terminal() // create a terminal object at the same position as original turf loc @@ -214,9 +230,9 @@ status_overlays_lock[1] = image(icon, "apcox-0") // 0=blue 1=red status_overlays_lock[2] = image(icon, "apcox-1") - status_overlays_charging[1] = image(icon, "apco3-0") + status_overlays_charging[1] = image(icon, "apco3-0") status_overlays_charging[2] = image(icon, "apco3-1") - status_overlays_charging[3] = image(icon, "apco3-2") + status_overlays_charging[3] = image(icon, "apco3-2") status_overlays_equipment[1] = image(icon, "apco0-0") status_overlays_equipment[2] = image(icon, "apco0-1") @@ -227,7 +243,7 @@ status_overlays_lighting[2] = image(icon, "apco1-1") status_overlays_lighting[3] = image(icon, "apco1-2") status_overlays_lighting[4] = image(icon, "apco1-3") - + status_overlays_environ[1] = image(icon, "apco2-0") status_overlays_environ[2] = image(icon, "apco2-1") status_overlays_environ[3] = image(icon, "apco2-2") @@ -279,10 +295,10 @@ /obj/machinery/power/apc/proc/check_updates() - var/last_update_state = update_state + var/last_update_state = update_state var/last_update_overlay = update_overlay update_state = 0 - update_overlay = 0 + update_overlay = 0 if(cell) update_state |= UPSTATE_CELL_IN @@ -319,7 +335,7 @@ update_overlay |= APC_UPOVERLAY_EQUIPMENT1 else if(equipment == 2) update_overlay |= APC_UPOVERLAY_EQUIPMENT2 - + if(!lighting) update_overlay |= APC_UPOVERLAY_LIGHTING0 else if(lighting == 1) @@ -505,14 +521,14 @@ user.visible_message(\ "\red [user.name] cut the cables and dismantled the power terminal.",\ "You cut the cables and dismantle the power terminal.") - del(terminal) + qdel(terminal) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack)) user << "You trying to insert the power control board into the frame..." playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 10)) has_electronics = 1 user << "You place the power control board inside the frame." - del(W) + qdel(W) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) user << "\red You cannot put the board inside, the frame is damaged." return @@ -537,7 +553,7 @@ "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ "You cut the APC frame from the wall.",\ "\red You hear welding.") - del(src) + qdel(src) return else if (istype(W, /obj/item/apc_frame) && opened && emagged) emagged = 0 @@ -546,7 +562,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frontal panel with a new one.",\ "You replace the damaged APC frontal panel with a new one.") - del(W) + qdel(W) update_icon() else if (istype(W, /obj/item/apc_frame) && opened && ((stat & BROKEN) || malfhack)) if (has_electronics) @@ -557,7 +573,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frame with new one.",\ "You replace the damaged APC frame with new one.") - del(W) + qdel(W) stat &= ~BROKEN malfai = null malfhack = 0 @@ -907,7 +923,7 @@ malf.mind.transfer_to(src.occupier) src.occupier.eyeobj.name = "[src.occupier.name] (AI Eye)" if(malf.parent) - del(malf) + qdel(malf) src.occupier.verbs += /mob/living/silicon/ai/proc/corereturn src.occupier.verbs += /datum/game_mode/malfunction/proc/takeover src.occupier.cancel_camera() @@ -923,7 +939,7 @@ src.occupier.mind.transfer_to(src.occupier.parent) src.occupier.parent.adjustOxyLoss(src.occupier.getOxyLoss()) src.occupier.parent.cancel_camera() - del(src.occupier) + qdel(src.occupier) if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) for(var/obj/item/weapon/pinpointer/point in world) for(var/datum/mind/AI_mind in ticker.mode.malf_ai) @@ -1189,7 +1205,7 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) //set_broken() //now Del() do what we need if (cell) cell.ex_act(1.0) // more lags woohoo - del(src) + qdel(src) return if(2.0) if (prob(50)) @@ -1209,6 +1225,11 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) if (cell && prob(5)) cell.blob_act() +/obj/machinery/power/apc/disconnect_terminal() + if(terminal) + terminal.master = null + terminal = null + /obj/machinery/power/apc/proc/set_broken() if(malfai && operating) if (ticker.mode.config_tag == "malfunction") @@ -1235,19 +1256,6 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) L.broken() sleep(1) -/obj/machinery/power/apc/Del() - if(malfai && operating) - if (ticker.mode.config_tag == "malfunction") - if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) - ticker.mode:apcs-- - area.power_light = 0 - area.power_equip = 0 - area.power_environ = 0 - area.power_change() - if(occupier) - malfvacate(1) - ..() - /obj/machinery/power/apc/proc/shock(mob/user, prb) if(!prob(prb)) return 0 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ea78170cf41..8adf3ec6d29 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -35,7 +35,6 @@ var/d2 = 1 layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 var/cable_color = "red" - var/obj/structure/powerswitch/power_switch /obj/structure/cable/yellow cable_color = "yellow" @@ -85,10 +84,10 @@ cable_list += src -/obj/structure/cable/Del() // called when a cable is deleted - if(!defer_powernet_rebuild) // set if network will be rebuilt manually - if(powernet) - powernet.cut_cable(src) // update the powernets +/obj/structure/cable/Destroy() // called when a cable is deleted +// if(!defer_powernet_rebuild) // set if network will be rebuilt manually + if(powernet) + powernet.cut_cable(src) // update the powernets cable_list -= src ..() // then go ahead and delete the cable @@ -120,10 +119,6 @@ if(istype(W, /obj/item/weapon/wirecutters)) -// if(power_switch) -// user << "\red This piece of cable is tied to a power switch. Flip the switch to remove it." -// return - if (shock(user, 50)) return @@ -137,7 +132,7 @@ investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") - del(src) + qdel(src) return @@ -179,16 +174,16 @@ /obj/structure/cable/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(2.0) if (prob(50)) new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) - del(src) + qdel(src) if(3.0) if (prob(25)) new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) - del(src) + qdel(src) return // the cable coil object, used for laying cable @@ -313,11 +308,11 @@ if(src.amount < used) return 0 else if (src.amount == used) - .=1 //Because del(src) stops the proc, set the default return value to 1 if(ismob(loc)) //handle mob icon update var/mob/M = loc M.unEquip(src) - del(src) + qdel(src) + return 1 else amount -= used update_icon() @@ -379,7 +374,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) - del(C) + qdel(C) //src.laying = 1 //last = C @@ -439,7 +434,7 @@ if (NC.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) - del(NC) + qdel(NC) return else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub @@ -478,7 +473,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) - del(C) + qdel(C) return C.denode()// this call may have disconnected some cables that terminated on the centre of the turf, if so split the powernets. diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 2d252417e5a..939ff0701e3 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -103,8 +103,7 @@ //explosion(T, 0, 1, 2, 2) explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range) - spawn(1) - del(src) + qdel(src) /obj/item/weapon/cell/proc/corrupt() charge /= 2 @@ -124,17 +123,17 @@ switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if (prob(50)) corrupt() if(3.0) if (prob(25)) - del(src) + qdel(src) return if (prob(25)) corrupt() diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index 2cfe16fd87a..fddff6a34c2 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -8,12 +8,12 @@ switch(severity) if(1.0) ChangeTurf(/turf/space) - del(src) + qdel(src) return if(2.0) if (prob(50)) ChangeTurf(/turf/space) - del(src) + qdel(src) return else return @@ -21,6 +21,6 @@ /turf/simulated/floor/engine/blob_act() if (prob(25)) ChangeTurf(/turf/space) - del(src) + qdel(src) return return \ No newline at end of file diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 4d0fee71a46..2af337929b7 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -24,7 +24,7 @@ /obj/item/light_fixture_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded ) - del(src) + qdel(src) return ..() @@ -56,7 +56,7 @@ usr.visible_message("[usr.name] attaches [src] to the wall.", \ "You attach [src] to the wall.") - del(src) + qdel(src) /obj/item/light_fixture_frame/small name = "small light fixture frame" @@ -111,7 +111,7 @@ user.visible_message("[user.name] deconstructs [src].", \ "You deconstruct [src].", "You hear a noise.") playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - del(src) + qdel(src) if (src.stage == 2) usr << "You have to remove the wires first." return @@ -169,7 +169,7 @@ newlight.dir = src.dir src.transfer_fingerprints_to(newlight) - del(src) + qdel(src) return ..() @@ -251,7 +251,7 @@ spawn(1) update(0) -/obj/machinery/light/Del() +/obj/machinery/light/Destroy() var/area/A = get_area(src) if(A) on = 0 @@ -355,7 +355,7 @@ update() user.drop_item() //drop the item to update overlays and such - del(L) + qdel(L) if(on && rigged) explode() @@ -405,7 +405,7 @@ newlight.fingerprints = src.fingerprints newlight.fingerprintshidden = src.fingerprintshidden newlight.fingerprintslast = src.fingerprintslast - del(src) + qdel(src) return user << "You stick \the [W] into the light socket!" @@ -576,7 +576,7 @@ /obj/machinery/light/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(75)) @@ -604,10 +604,9 @@ // called when area power state changes /obj/machinery/light/power_change() - spawn(10) - var/area/A = src.loc.loc - A = A.master - seton(A.lightswitch && A.power_light) + var/area/A = get_area(src) + A = A.master + seton(A.lightswitch && A.power_light) // called when on fire @@ -624,7 +623,7 @@ sleep(2) explosion(T, 0, 0, 2, 2) sleep(1) - del(src) + qdel(src) // the light item // can be tube or bulb subtypes diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 9ef4629d0b2..f2ac3d4315f 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -123,7 +123,7 @@ display round(lastgen) and plasmatank amount sheet_name = sheet.name RefreshParts() -/obj/machinery/power/port_gen/pacman/Del() +/obj/machinery/power/port_gen/pacman/Destroy() DropFuel() ..() @@ -192,7 +192,7 @@ display round(lastgen) and plasmatank amount if (heat > 300) overheat() - del(src) + qdel(src) return /obj/machinery/power/port_gen/pacman/handleInactive() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 21076dd0446..f96a76779ab 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -9,7 +9,7 @@ idle_power_usage = 0 active_power_usage = 0 -/obj/machinery/power/Del() +/obj/machinery/power/Destroy() disconnect_from_network() ..() @@ -34,6 +34,9 @@ else return 0 +/obj/machinery/power/proc/disconnect_terminal() // machines without a terminal will just return, no harm no fowl. + return + // returns true if the area has power on given channel (or doesn't require power). // defaults to power_channel diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 84cf31648e3..2d3ceab2d87 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -21,7 +21,7 @@ var/global/list/rad_collectors = list() ..() rad_collectors += src -/obj/machinery/power/rad_collector/Del() +/obj/machinery/power/rad_collector/Destroy() rad_collectors -= src ..() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index f488da64e29..ca45409875b 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -14,7 +14,7 @@ var/obj/machinery/field/generator/FG1 = null var/obj/machinery/field/generator/FG2 = null -/obj/machinery/field/containment/Del() +/obj/machinery/field/containment/Destroy() if(FG1 && !FG1.clean_up) FG1.cleanup() if(FG2 && !FG2.clean_up) @@ -52,7 +52,7 @@ /obj/machinery/field/containment/shock(mob/living/user as mob) if(!FG1 || !FG2) - del(src) + qdel(src) return 0 ..() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 9a141f3849e..b249672db3f 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -39,7 +39,7 @@ connect_to_network() src.directwired = 1 -/obj/machinery/power/emitter/Del() +/obj/machinery/power/emitter/Destroy() if(ticker && ticker.current_state == GAME_STATE_PLAYING) message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) log_game("Emitter deleted at ([x],[y],[z])") diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 3aa61ef49b9..3cb5edc8fee 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -169,7 +169,7 @@ field_generator power level display return 0 -/obj/machinery/field/generator/Del() +/obj/machinery/field/generator/Destroy() src.cleanup() ..() @@ -327,7 +327,7 @@ field_generator power level display for (var/obj/machinery/field/containment/F in fields) if (isnull(F)) continue - del(F) + qdel(F) fields = list() for(var/obj/machinery/field/generator/FG in connected_gens) if (isnull(FG)) diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index 08181a3d7b6..d618cd54eef 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -13,7 +13,7 @@ var/turf/T = get_turf(src) if(src.energy >= 200) new /obj/machinery/singularity/(T, 50) - if(src) del(src) + if(src) qdel(src) /obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/weapon/wrench)) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 65de436a9d7..929fdc1fb2a 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -71,7 +71,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin var/strength = null var/desc_holder = null -/obj/structure/particle_accelerator/Del() +/obj/structure/particle_accelerator/Destroy() construction_state = 0 if(master) master.part_scan() @@ -143,15 +143,15 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/structure/particle_accelerator/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(25)) - del(src) + qdel(src) return else return @@ -159,13 +159,13 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/structure/particle_accelerator/blob_act() if(prob(50)) - del(src) + qdel(src) return /obj/structure/particle_accelerator/meteorhit() if(prob(50)) - del(src) + qdel(src) return /obj/structure/particle_accelerator/update_icon() @@ -330,15 +330,15 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(25)) - del(src) + qdel(src) return else return @@ -346,13 +346,13 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator/blob_act() if(prob(50)) - del(src) + qdel(src) return /obj/machinery/particle_accelerator/meteorhit() if(prob(50)) - del(src) + qdel(src) return diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 5cb6f3f4a6d..afaac0be300 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -26,7 +26,7 @@ connected_parts = list() ..() -/obj/machinery/particle_accelerator/control_box/Del() +/obj/machinery/particle_accelerator/control_box/Destroy() if(active) toggle_power() ..() diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index ea570916841..b204357819e 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -40,7 +40,7 @@ var/global/list/uneatable = list( src.energy = starting_energy if(temp) spawn(temp) - del(src) + qdel(src) ..() for(var/obj/machinery/singularity_beacon/singubeacon in world) if(singubeacon.active) @@ -63,7 +63,7 @@ var/global/list/uneatable = list( if(1.0) if(prob(25)) investigate_log("has been destroyed by an explosion.","singulo") - del(src) + qdel(src) return else energy += 50 @@ -191,7 +191,7 @@ var/global/list/uneatable = list( /obj/machinery/singularity/proc/check_energy() if(energy <= 0) investigate_log("collapsed.","singulo") - del(src) + qdel(src) return 0 switch(energy)//Some of these numbers might need to be changed up later -Mport if(1 to 199) @@ -211,8 +211,8 @@ var/global/list/uneatable = list( /obj/machinery/singularity/proc/eat() set background = BACKGROUND_ENABLED - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 1 // Let's just make this one loop. for(var/atom/X in orange(grav_pull,src)) var/dist = get_dist(X, src) @@ -232,8 +232,8 @@ var/global/list/uneatable = list( else if(dist <= consume_range && (isturf(X) || istype(X, /atom/movable))) consume(X) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 0 return @@ -267,7 +267,7 @@ var/global/list/uneatable = list( if(istype(A, /obj/machinery/singularity))//Welp now you did it var/obj/machinery/singularity/S = A src.energy += (S.energy/2)//Absorb most of it - del(S) + qdel(S) var/dist = max((current_size - 2),1) explosion(src.loc,(dist),(dist*2),(dist*4)) return//Quits here, the obj should be gone, hell we might be @@ -279,7 +279,7 @@ var/global/list/uneatable = list( O.z = 2 else A.ex_act(1.0) - if(A) del(A) + if(A) qdel(A) gain = 2 else if(isturf(A)) var/turf/T = A @@ -505,7 +505,7 @@ var/global/list/uneatable = list( if(istype(A,/obj/)) var/obj/O = A O.ex_act(1.0) - if(O) del(O) + if(O) qdel(O) else if(isturf(A)) var/turf/T = A @@ -593,11 +593,11 @@ var/global/list/uneatable = list( /obj/machinery/singularity/narsie/wizard/eat() set background = BACKGROUND_ENABLED - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 1 for(var/atom/X in orange(consume_range,src)) if(isturf(X) || istype(X, /atom/movable)) consume(X) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 +// if(defer_powernet_rebuild != 2) +// defer_powernet_rebuild = 0 return diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index cfb7ba0057b..ed5f38cbded 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -94,14 +94,22 @@ default_deconstruction_crowbar(I) -/obj/machinery/power/smes/Del() +/obj/machinery/power/smes/Destroy() if(ticker && ticker.current_state == GAME_STATE_PLAYING) var/area/area = get_area(src) message_admins("SMES deleted at ([area.name])") log_game("SMES deleted at ([area.name])") investigate_log("deleted at ([area.name])","singulo") + if(terminal) + disconnect_terminal() ..() +/obj/machinery/power/smes/disconnect_terminal() + if(terminal) + terminal.master = null + terminal = null + + /obj/machinery/power/smes/update_icon() overlays.Cut() if(stat & BROKEN) return diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 98c6771296f..fa40707236e 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -72,7 +72,7 @@ var/list/solars_list = list() S.give_glass() playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the solar panel.") - del(src) + qdel(src) return else if (W) src.add_fingerprint(user) @@ -94,7 +94,7 @@ var/list/solars_list = list() else new /obj/item/weapon/shard(src.loc) new /obj/item/weapon/shard(src.loc) - del(src) + qdel(src) return return @@ -151,20 +151,20 @@ var/list/solars_list = list() if(stat & !BROKEN) broken() else - del(src) + qdel(src) /obj/machinery/power/solar/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(prob(15)) new /obj/item/weapon/shard( src.loc ) return if(2.0) if (prob(25)) new /obj/item/weapon/shard( src.loc ) - del(src) + qdel(src) return if (prob(50)) broken() @@ -247,7 +247,7 @@ var/list/solars_list = list() if(istype(W, /obj/item/weapon/tracker_electronics)) tracker = 1 user.drop_item() - del(W) + qdel(W) user.visible_message("[user] inserts the electronics into the solar assembly.") return 1 else @@ -346,7 +346,7 @@ var/list/solars_list = list() A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -357,7 +357,7 @@ var/list/solars_list = list() A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) else src.attack_hand(user) return @@ -491,7 +491,7 @@ var/list/solars_list = list() switch(severity) if(1.0) //SN src = null - del(src) + qdel(src) return if(2.0) if (prob(50)) diff --git a/code/modules/power/switch.dm b/code/modules/power/switch.dm index e4899acdf23..844c88a0b83 100644 --- a/code/modules/power/switch.dm +++ b/code/modules/power/switch.dm @@ -80,5 +80,5 @@ else icon_state = icon_state_off for(var/obj/structure/cable/C in src.loc) - del(C) + qdel(C) */ \ No newline at end of file diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index f739ba93fda..c87d48e8ad3 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -21,6 +21,10 @@ if(level==1) hide(T.intact) return +/obj/machinery/power/terminal/Destroy() + if(master) + master.disconnect_terminal() + return ..() /obj/machinery/power/terminal/hide(var/i) if(i) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 24895c8b350..29f715b368d 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -65,7 +65,7 @@ S.give_glass() playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the tracker.") - del(src) + qdel(src) return ..() diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index c4e70ca153c..88853f6378f 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -33,7 +33,7 @@ return 0 if(targloc == curloc) //Fire the projectile user.bullet_act(BB) - del(BB) + qdel(BB) return 1 BB.loc = get_turf(user) BB.starting = get_turf(user) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index cfb0e93b773..ff99769f629 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -34,7 +34,7 @@ obj/item/weapon/gun/energy/laser/retro processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -110,7 +110,7 @@ obj/item/weapon/gun/energy/laser/retro processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -147,7 +147,7 @@ obj/item/weapon/gun/energy/laser/retro processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 9bc774e8095..69b2ec82bbd 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -27,7 +27,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index eaef43c40c3..3c9759b74f0 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -38,7 +38,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -74,7 +74,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 4fc9a2a7375..382db0571cd 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -21,7 +21,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() @@ -71,7 +71,7 @@ processing_objects.Add(src) - Del() + Destroy() processing_objects.Remove(src) ..() diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index cfee0eb3e0c..770b1ae5af0 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -34,7 +34,7 @@ if(can_charge) processing_objects.Add(src) -/obj/item/weapon/gun/magic/Del() +/obj/item/weapon/gun/magic/Destroy() if(can_charge) processing_objects.Remove(src) ..() diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index a76b6e19cd9..eb8a702762a 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -63,7 +63,7 @@ M << "[src] blows up in your face!" M.take_organ_damage(0,20) M.drop_item() - del(src) + qdel(src) return 0 return 1 diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 8e61f71ff02..81dd8d1493f 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -116,11 +116,11 @@ proc/wabbajack(mob/living/M) if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) del(Robot.mmi) + if(Robot.mmi) qdel(Robot.mmi) else for(var/obj/item/W in M) if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - del(W) + qdel(W) continue W.layer = initial(W.layer) W.loc = M.loc @@ -212,7 +212,7 @@ proc/wabbajack(mob/living/M) new_mob << "Your form morphs into that of a [randomize]." - del(M) + qdel(M) return new_mob /obj/item/projectile/magic/animate @@ -235,8 +235,8 @@ proc/wabbajack(mob/living/M) if(H.mind) H.mind.transfer_to(S) S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." - del(H) - del(change) + qdel(H) + qdel(change) else var/obj/O = change new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index d1ce1991beb..c5ffc4bf95f 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -177,4 +177,4 @@ obj/item/projectile/kinetic/New() /obj/item/effect/kinetic_blast/New() spawn(4) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 7899a152a8c..32d865093b5 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -53,19 +53,19 @@ /obj/machinery/chem_dispenser/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return /obj/machinery/chem_dispenser/blob_act() if (prob(50)) - del(src) + qdel(src) /obj/machinery/chem_dispenser/meteorhit() - del(src) + qdel(src) return /** @@ -262,19 +262,19 @@ /obj/machinery/chem_master/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return /obj/machinery/chem_master/blob_act() if (prob(50)) - del(src) + qdel(src) /obj/machinery/chem_master/meteorhit() - del(src) + qdel(src) return /obj/machinery/chem_master/power_change() @@ -1094,7 +1094,7 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) /obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O) holdingitems -= O - del(O) + qdel(O) /obj/machinery/reagentgrinder/proc/juice() power_change() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 89f6569aee0..d97556cd327 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -226,7 +226,7 @@ datum lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) return reaction_obj(var/obj/O, var/volume) src = null @@ -237,7 +237,7 @@ datum lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O if(!cube.wrapped) @@ -272,7 +272,7 @@ datum M.confused += 3 ..() return - + reaction_turf(var/turf/simulated/T, var/volume) ..() if(!istype(T)) return @@ -761,7 +761,7 @@ datum reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/effect/decal/cleanable)) - del(O) + qdel(O) else if(O) O.clean_blood() @@ -769,7 +769,7 @@ datum if(volume >= 1) T.clean_blood() for(var/obj/effect/decal/cleanable/C in T) - del(C) + qdel(C) for(var/mob/living/carbon/slime/M in T) M.adjustToxLoss(rand(5,10)) @@ -1451,9 +1451,9 @@ datum alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) + qdel(O) else if(istype(O,/obj/effect/spacevine)) - if(prob(50)) del(O) //Kills kudzu too. + if(prob(50)) qdel(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) @@ -1572,7 +1572,7 @@ datum if(H.head) if(prob(meltprob) && !H.head.unacidable) H << "Your headgear melts away but protects you from the acid!" - del(H.head) + qdel(H.head) H.update_inv_head(0) H.update_hair(0) else @@ -1582,7 +1582,7 @@ datum if(H.wear_mask) if(prob(meltprob) && !H.wear_mask.unacidable) H << "Your mask melts away but protects you from the acid!" - del (H.wear_mask) + qdel(H.wear_mask) H.update_inv_wear_mask(0) H.update_hair(0) else @@ -1592,7 +1592,7 @@ datum if(H.glasses) //Doesn't protect you from the acid but can melt anyways! if(prob(meltprob) && !H.glasses.unacidable) H << "Your glasses melts away!" - del (H.glasses) + qdel(H.glasses) H.update_inv_glasses(0) else if(ismonkey(M)) @@ -1600,7 +1600,7 @@ datum if(MK.wear_mask) if(!MK.wear_mask.unacidable) MK << "Your mask melts away but protects you from the acid!" - del (MK.wear_mask) + qdel(MK.wear_mask) MK.update_inv_wear_mask(0) else MK << "Your mask protects you from the acid." @@ -1632,7 +1632,7 @@ datum I.desc = "Looks like this was \an [O] some time ago." for(var/mob/M in viewers(5, O)) M << "\red \the [O] melts." - del(O) + qdel(O) toxin/acid/polyacid name = "Polytrinic acid" @@ -2046,7 +2046,7 @@ datum lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) enzyme name = "Universal Enzyme" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 6e8e54dea8b..fb8a5a26029 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -796,7 +796,7 @@ datum M.client.screen += blueeffect sleep(20) M.client.screen -= blueeffect - del(blueeffect) + qdel(blueeffect) slimecrit name = "Slime Crit" id = "m_tele" @@ -1468,7 +1468,7 @@ datum M.client.screen += blueeffect sleep(20) M.client.screen -= blueeffect - del(blueeffect) + qdel(blueeffect) slimecrystal name = "Slime Crystal" id = "m_crystal" diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 643db71b524..89742ffce5a 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -41,7 +41,7 @@ Borg Hypospray processing_objects.Add(src) -/obj/item/weapon/reagent_containers/borghypo/Del() +/obj/item/weapon/reagent_containers/borghypo/Destroy() processing_objects.Remove(src) ..() diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index a85453571d8..68a2db93b30 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -175,16 +175,16 @@ if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) user << "You tear open [src], but there's nothing in it." - del src + qdel(src) return if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. - del src + qdel(src) return else user << "You tear open [src] above [target] and the condiments drip onto it." src.reagents.trans_to(target, amount_per_transfer_from_this) - del src + qdel(src) /obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() if(reagents.reagent_list.len > 0) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index aa65a77fc81..84836d8a96d 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -295,7 +295,7 @@ playsound(user.loc,'sound/weapons/pierce.ogg', rand(10,50), 1) var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc) crushed_can.icon_state = icon_state - del(src) + qdel(src) ..() /obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index a50c3690d39..bddfd9864a9 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -30,7 +30,7 @@ user.put_in_active_hand(B) src.transfer_fingerprints_to(B) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/drinks/bottle/attack(mob/living/target as mob, mob/living/user as mob) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 8182f24b216..0dc069790fc 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -28,7 +28,7 @@ usr.put_in_hands(TrashItem) else if(istype(trash,/obj/item)) usr.put_in_hands(trash) - del(src) + qdel(src) return @@ -42,7 +42,7 @@ if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. user << "None of [src] left, oh no!" M.unEquip(src) //so icons update :[ - del(src) + qdel(src) return 0 if(istype(M, /mob/living/carbon)) if(M == user) //If you're eating it yourself. @@ -178,10 +178,10 @@ for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) reagents.trans_to(slice,reagents_per_slice) - del(src) // so long and thanks for all the fish + qdel(src) // so long and thanks for all the fish -/obj/item/weapon/reagent_containers/food/snacks/Del() +/obj/item/weapon/reagent_containers/food/snacks/Destroy() if(contents) for(var/atom/movable/something in contents) something.loc = get_turf(src) @@ -198,7 +198,7 @@ var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") if(sattisfaction_text) M.emote("[sattisfaction_text]") - del(src) + qdel(src) ////////////////////////////////////////////////// @@ -433,7 +433,7 @@ ..() new/obj/effect/decal/cleanable/egg_smudge(src.loc) reagents.reaction(hit_atom, TOUCH) - del(src) + qdel(src) attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype( W, /obj/item/toy/crayon )) @@ -774,7 +774,7 @@ ) reagents.remove_reagent("nutriment", 1) if(reagents.total_volume <= 0) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/muffin name = "muffin" @@ -809,7 +809,7 @@ /obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) ..() new/obj/effect/decal/cleanable/pie_smudge(src.loc) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis name = "berry clafoutis" @@ -1357,7 +1357,7 @@ proc/Expand() visible_message("[src] expands!") new /mob/living/carbon/monkey(get_turf(src)) - del(src) + qdel(src) proc/Unwrap(mob/user) icon_state = "monkeycube" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index d5f1bf22dff..f394bef42b9 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -203,10 +203,10 @@ attackby(var/obj/D, mob/user as mob) if(isprox(D)) user << "You add [D] to [src]." - del(D) + qdel(D) user.put_in_hands(new /obj/item/weapon/bucket_sensor) user.unEquip(src) - del(src) + qdel(src) /* /obj/item/weapon/reagent_containers/glass/blender_jug diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 96deeb0e5cb..5aae7951a6d 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -26,9 +26,9 @@ reagents.reaction(M, INGEST) spawn(5) reagents.trans_to(M, reagents.total_volume) - del(src) + qdel(src) else - del(src) + qdel(src) return 1 else if(istype(M, /mob/living/carbon/human) ) @@ -47,9 +47,9 @@ reagents.reaction(M, INGEST) spawn(5) reagents.trans_to(M, reagents.total_volume) - del(src) + qdel(src) else - del(src) + qdel(src) return 1 @@ -66,7 +66,7 @@ O << "[user] slips something into [target]." reagents.trans_to(target, reagents.total_volume) spawn(5) - del(src) + qdel(src) //////////////////////////////////////////////////////////////////////////////// @@ -163,4 +163,4 @@ ..() reagents.add_reagent("hyperzine", 10) reagents.add_reagent("ethylredoxrazine", 10) - reagents.add_reagent("coffee", 30) + reagents.add_reagent("coffee", 30) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 579e74246e4..ee507b1de62 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -57,7 +57,7 @@ for(var/atom/T in get_turf(D)) D.reagents.reaction(T) sleep(3) - del(D) + qdel(D) playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) @@ -211,7 +211,7 @@ for(var/atom/t in get_turf(D)) D.reagents.reaction(t) sleep(2) - del(D) + qdel(D) playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 473e77e778a..c2a1e7dde1c 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -13,22 +13,22 @@ /obj/structure/reagent_dispensers/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) - del(src) + qdel(src) return if(3.0) if (prob(5)) - del(src) + qdel(src) return else return /obj/structure/reagent_dispensers/blob_act() if(prob(50)) - del(src) + qdel(src) /obj/structure/reagent_dispensers/attackby(obj/item/weapon/W as obj, mob/user as mob) return @@ -72,17 +72,17 @@ /obj/structure/reagent_dispensers/watertank/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) if (prob(50)) new /obj/effect/effect/water(src.loc) - del(src) + qdel(src) return if(3.0) if (prob(5)) new /obj/effect/effect/water(src.loc) - del(src) + qdel(src) return else return @@ -90,7 +90,7 @@ /obj/structure/reagent_dispensers/watertank/blob_act() if(prob(50)) new /obj/effect/effect/water(src.loc) - del(src) + qdel(src) /obj/structure/reagent_dispensers/fueltank name = "fueltank" @@ -110,19 +110,19 @@ log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") explosion(src.loc,-1,0,2, flame_range = 2) if(src) - del(src) + qdel(src) /obj/structure/reagent_dispensers/fueltank/blob_act() explosion(src.loc,0,1,5,7,10, flame_range = 5) if(src) - del(src) + qdel(src) /obj/structure/reagent_dispensers/fueltank/ex_act() explosion(src.loc,-1,0,2, flame_range = 2) if(src) - del(src) + qdel(src) /obj/structure/reagent_dispensers/peppertank name = "Pepper Spray Refiller" @@ -163,7 +163,7 @@ /obj/structure/reagent_dispensers/water_cooler/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/paper)) user.drop_item() - del I + qdel(I) cups++ return else @@ -180,7 +180,7 @@ /obj/structure/reagent_dispensers/beerkeg/blob_act() explosion(src.loc,0,3,5,7,10) - del(src) + qdel(src) /obj/structure/reagent_dispensers/virusfood name = "Virus Food Dispenser" diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index 55848e5d6f0..83c5f3dcfb4 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -29,7 +29,7 @@ chambered.BB.name = S.name syringes.Remove(S) - del(S) + qdel(S) return /obj/item/weapon/gun/syringe/process_chamber() diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 83dfd5f4bb2..f54574d5e93 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -252,7 +252,7 @@ src.transfer_fingerprints_to(P) P.dir = dir - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index dd116b9c6d6..4517456775e 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -44,7 +44,7 @@ flush = initial(flush) trunk.linked = src // link the pipe trunk to self -/obj/machinery/disposal/Del() +/obj/machinery/disposal/Destroy() for(var/atom/movable/AM in contents) AM.loc = src.loc ..() @@ -99,7 +99,7 @@ C.anchored = 1 C.density = 1 C.update() - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." @@ -131,7 +131,7 @@ GM.loc = src for (var/mob/C in viewers(src)) C.show_message("\red [GM.name] has been placed in \the [src] by [user].", 3) - del(G) + qdel(G) return if(!I) return @@ -246,7 +246,7 @@ /obj/machinery/disposal/attack_animal(var/mob/living/simple_animal/M) if(M.environment_smash) visible_message("[M.name] smashes \the [src] apart!") - del(src) + qdel(src) return // user interaction @@ -462,7 +462,7 @@ AM.throw_at(target, 5, 1) H.vent_gas(loc) - del(H) + qdel(H) /obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover,/obj/item) && mover.throwing) @@ -599,7 +599,7 @@ if(other.has_fat_guy) has_fat_guy = 1 - del(other) + qdel(other) // called when player tries to move while in a pipe @@ -642,7 +642,7 @@ // pipe is deleted // ensure if holder is present, it is expelled - Del() + Destroy() var/obj/structure/disposalholder/H = locate() in src if(H) // holder was present @@ -655,7 +655,7 @@ for(var/atom/movable/AM in H) AM.loc = T AM.pipe_eject(0) - del(H) + qdel(H) ..() return @@ -758,7 +758,7 @@ if(AM) AM.throw_at(target, 5, 1) H.vent_gas(T) - del(H) + qdel(H) return // call to break the pipe @@ -785,7 +785,7 @@ for(var/atom/movable/AM in H) AM.loc = T AM.pipe_eject(0) - del(H) + qdel(H) return // otherwise, do normal expel from turf @@ -793,7 +793,7 @@ expel(H, T, 0) spawn(2) // delete pipe after 2 ticks to ensure expel proc finished - del(src) + qdel(src) // pipe affected by explosion @@ -876,7 +876,7 @@ C.anchored = 1 C.update() - del(src) + qdel(src) // *** TEST verb //client/verb/dispstop() @@ -1220,7 +1220,7 @@ welded() // var/obj/item/scrap/S = new(src.loc) // S.set_components(200,0,0) - del(src) + qdel(src) // the disposal outlet machine @@ -1268,7 +1268,7 @@ if(AM) AM.throw_at(target, eject_range, 1) H.vent_gas(src.loc) - del(H) + qdel(H) return attackby(var/obj/item/I, var/mob/user) @@ -1300,7 +1300,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 1b4e584a9ec..043116087bf 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -10,9 +10,9 @@ /obj/structure/bigDelivery/attack_hand(mob/user as mob) - del(src) + qdel(src) -/obj/structure/bigDelivery/Del() +/obj/structure/bigDelivery/Destroy() if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 wrapped.loc = (get_turf(loc)) if(istype(wrapped, /obj/structure/closet)) @@ -66,7 +66,7 @@ else wrapped.loc = get_turf(src) - del(src) + qdel(src) attackby(obj/item/W as obj, mob/user as mob) @@ -156,7 +156,7 @@ user << "The object you are trying to wrap is unsuitable for the sorting machinery." if(amount <= 0) new /obj/item/weapon/c_tube( loc ) - del(src) + qdel(src) return return @@ -315,7 +315,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index bd319a9422f..1735b1cd110 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -43,10 +43,10 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). blob_act() if (prob(50)) - del(src) + qdel(src) meteorhit() - del(src) + qdel(src) return proc/check_mat(datum/design/being_built, var/M) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 7f9a5ed16a2..092efaa27ea 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -29,7 +29,7 @@ Note: Must be placed within 3 tiles of the R&D Console decon_mod = T /obj/machinery/r_n_d/destructive_analyzer/meteorhit() - del(src) + qdel(src) return /obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(var/list/source_list) diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index cfc33660d10..884d4eb2f8b 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -66,7 +66,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() ..() return -/obj/machinery/message_server/Del() +/obj/machinery/message_server/Destroy() message_servers -= src ..() return @@ -200,10 +200,10 @@ var/obj/machinery/blackbox_recorder/blackbox /obj/machinery/blackbox_recorder/New() if(blackbox) if(istype(blackbox,/obj/machinery/blackbox_recorder)) - del(src) + qdel(src) blackbox = src -/obj/machinery/blackbox_recorder/Del() +/obj/machinery/blackbox_recorder/Destroy() var/turf/T = locate(1,1,2) if(T) blackbox = null diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 89f43c40e30..7b17fdab211 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -280,11 +280,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, S.amount-- linked_destroy.loaded_item = S else - del(S) + qdel(S) linked_destroy.icon_state = "d_analyzer" else if(!(I in linked_destroy.component_parts)) - del(I) + qdel(I) linked_destroy.icon_state = "d_analyzer" use_power(250) updateUsrDialog() @@ -503,7 +503,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, sheet.amount = min(available_num_sheets, desired_num_sheets) linked_lathe.vars[res_amount] = max(0, (linked_lathe.vars[res_amount]-sheet.amount * sheet.perunit)) else - del sheet + qdel(sheet) else if(href_list["imprinter_ejectsheet"] && linked_imprinter) //Causes the protolathe to eject a sheet of material var/desired_num_sheets = text2num(href_list["imprinter_ejectsheet_amt"]) var/res_amount, type @@ -524,7 +524,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, sheet.amount = min(available_num_sheets, desired_num_sheets) linked_imprinter.vars[res_amount] = max(0, (linked_imprinter.vars[res_amount]-sheet.amount * sheet.perunit)) else - del sheet + qdel(sheet) else if(href_list["find_device"]) //The R&D console looks for devices nearby to link up with. screen = 0.0 diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 10e956bfcd7..76b5a55451e 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -24,7 +24,7 @@ RefreshParts() src.initialize(); //Agouri -/obj/machinery/r_n_d/server/Del() +/obj/machinery/r_n_d/server/Destroy() griefProtection() ..() diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index 55bd4a572dd..054ad9a19d7 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -28,7 +28,7 @@ user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!") if(istype(I, /obj/item/weapon/implant/loyalty)) target << "You feel a sense of liberation as Nanotrasen's grip on your mind fades away." - del(I) + qdel(I) else user.visible_message("[user] can't find anything in [target]'s [target_zone].") return 1 \ No newline at end of file diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index 80a308dad21..ae2cd5caebd 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -67,7 +67,7 @@ for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it A.cure(1) user.drop_item() - del(tool) + qdel(tool) H.update_damage_overlays(0) H.update_augments() //Gives them the Cyber limb overlay add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]") diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index d9e968f4daf..ac7e565a099 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -18,7 +18,7 @@ blink_mob(user) user.drop_item() user.visible_message("[user] crushes the [src]!") - del(src) + qdel(src) /obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L) do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') @@ -27,7 +27,7 @@ ..() if(isliving(hit_atom)) blink_mob(hit_atom) - del(src) + qdel(src) // Artifical bluespace crystal, doesn't give you much research. diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index ab3ce7abfc3..64c2c2f2929 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -17,7 +17,7 @@ var/list/GPS_list = list() name = "global positioning system ([gpstag])" overlays += "working" -/obj/item/device/gps/Del() +/obj/item/device/gps/Destroy() GPS_list.Remove(src) ..() diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 9051b819d78..1af0d1ecd75 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -75,7 +75,7 @@ user << " You disassemble the telepad." new /obj/item/stack/sheet/metal(get_turf(src)) new /obj/item/stack/sheet/glass(get_turf(src)) - del(src) + qdel(src) ///TELEPAD CALLER/// /obj/item/device/telepad_beacon @@ -91,7 +91,7 @@ user << " Locked In" new /obj/machinery/telepad_cargo(user.loc) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return ///HANDHELD TELEPAD USER/// @@ -121,7 +121,7 @@ desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left." ..() -/obj/item/weapon/rcs/Del() +/obj/item/weapon/rcs/Destroy() processing_objects.Remove(src) ..() /obj/item/weapon/rcs/process() diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index d5cf9caab3b..ab1d9c05ec0 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -33,7 +33,7 @@ ..() recalibrate() -/obj/machinery/computer/telescience/Del() +/obj/machinery/computer/telescience/Destroy() eject() if(inserted_gps) inserted_gps.loc = loc diff --git a/code/unused/Ultralight.dm b/code/unused/Ultralight.dm index d7597ee6fcc..63c679b68be 100644 --- a/code/unused/Ultralight.dm +++ b/code/unused/Ultralight.dm @@ -223,7 +223,7 @@ atom ul_Illuminate() return - Del() + Delete() if(ul_IsLuminous()) ul_Extinguish() diff --git a/code/unused/assemblies.dm b/code/unused/assemblies.dm index 8450da294cc..52e48f700c4 100644 --- a/code/unused/assemblies.dm +++ b/code/unused/assemblies.dm @@ -121,7 +121,7 @@ part2.master = src //part2.status = 0 -/obj/item/assembly/time_ignite/Del() +/obj/item/assembly/time_ignite/Delete() del(part1) del(part2) ..() @@ -301,7 +301,7 @@ user.show_message("\blue The armor is now unsecured!", 1) src.add_fingerprint(user) -/obj/item/assembly/a_i_a/Del() +/obj/item/assembly/a_i_a/Delete() //src.part1 = null del(src.part1) //src.part2 = null @@ -311,7 +311,7 @@ return //***** -/obj/item/assembly/rad_time/Del() +/obj/item/assembly/rad_time/Delete() //src.part1 = null del(src.part1) //src.part2 = null @@ -361,7 +361,7 @@ src.icon_state = "prox-radio[n]" return -/obj/item/assembly/rad_prox/Del() +/obj/item/assembly/rad_prox/Delete() //src.part1 = null del(src.part1) //src.part2 = null @@ -431,7 +431,7 @@ src.icon_state = text("infrared-radio[]", n) return -/obj/item/assembly/rad_infra/Del() +/obj/item/assembly/rad_infra/Delete() del(src.part1) del(src.part2) ..() @@ -516,7 +516,7 @@ return return -/obj/item/assembly/prox_ignite/Del() +/obj/item/assembly/prox_ignite/Delete() del(src.part1) del(src.part2) ..() @@ -565,7 +565,7 @@ src.part2.Activate() return -/obj/item/assembly/rad_ignite/Del() +/obj/item/assembly/rad_ignite/Delete() del(src.part1) del(src.part2) ..() @@ -664,7 +664,7 @@ ..() part3.examine() -/obj/item/assembly/m_i_ptank/Del() +/obj/item/assembly/m_i_ptank/Delete() //src.part1 = null del(src.part1) @@ -752,7 +752,7 @@ ..() src.part3.examine() -/obj/item/assembly/t_i_ptank/Del() +/obj/item/assembly/t_i_ptank/Delete() //src.part1 = null del(src.part1) @@ -831,7 +831,7 @@ ..() src.part3.examine() -/obj/item/assembly/r_i_ptank/Del() +/obj/item/assembly/r_i_ptank/Delete() //src.part1 = null del(src.part1) diff --git a/code/unused/biomass_rift.dm b/code/unused/biomass_rift.dm index 247f485b570..e021d333971 100644 --- a/code/unused/biomass_rift.dm +++ b/code/unused/biomass_rift.dm @@ -36,7 +36,7 @@ spawn(1) //DEBUG starting.icon_state = "[newicon]" -/obj/effect/rift/Del() +/obj/effect/rift/Delete() for(var/obj/effect/biomass/biomass in linkedBiomass) del(biomass) ..() diff --git a/code/unused/carpetsplosion.dm b/code/unused/carpetsplosion.dm index 01e0e757573..fda6b41f254 100644 --- a/code/unused/carpetsplosion.dm +++ b/code/unused/carpetsplosion.dm @@ -21,7 +21,7 @@ /obj/effect/spreader var/list/obj/effect/spreader/spreadList = list() -/obj/effect/spreader/Del() +/obj/effect/spreader/Delete() for(var/obj/effect/spreader/spread in spreadList) if(spread != src) del(spread) diff --git a/code/unused/computer2/peripherals.dm b/code/unused/computer2/peripherals.dm index b581e0c448b..cc3b50190fb 100644 --- a/code/unused/computer2/peripherals.dm +++ b/code/unused/computer2/peripherals.dm @@ -17,7 +17,7 @@ // var/setup_id = "\ref[src]" // src.id = copytext(setup_id,4,(length(setup_id)-1) ) - Del() + Delete() if(host) host.peripherals.Remove(src) ..() diff --git a/code/unused/pipe.dm b/code/unused/pipe.dm index 60e552e3406..d8ee5fd7826 100644 --- a/code/unused/pipe.dm +++ b/code/unused/pipe.dm @@ -379,7 +379,7 @@ var/linenums = 0 stat |= BROKEN update() -/obj/machinery/pipes/Del() +/obj/machinery/pipes/Delete() stat |= BROKEN update() ..() diff --git a/code/unused/splash_simulation.dm b/code/unused/splash_simulation.dm index d7352ff7128..b2d185d260c 100644 --- a/code/unused/splash_simulation.dm +++ b/code/unused/splash_simulation.dm @@ -131,7 +131,7 @@ obj/effect/liquid/proc/apply_calculated_effect() obj/effect/liquid/Move() return 0 -obj/effect/liquid/Del() +obj/effect/liquid/Delete() src.controller.liquid_objects.Remove(src) ..() diff --git a/tgstation.dme b/tgstation.dme index ac4fcf7d834..f72cc5d5ec9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES @@ -146,6 +104,7 @@ #include "code\controllers\_DynamicAreaLighting_TG.dm" #include "code\controllers\configuration.dm" #include "code\controllers\failsafe.dm" +#include "code\controllers\garbage.dm" #include "code\controllers\lighting_controller.dm" #include "code\controllers\master_controller.dm" #include "code\controllers\shuttle_controller.dm" @@ -777,6 +736,7 @@ #include "code\modules\awaymissions\maploader\writer.dm" #include "code\modules\awaymissions\mission_code\Academy.dm" #include "code\modules\awaymissions\mission_code\blackmarketpackers.dm" +#include "code\modules\awaymissions\mission_code\box2550Away.dm" #include "code\modules\awaymissions\mission_code\centcomAway.dm" #include "code\modules\awaymissions\mission_code\challenge.dm" #include "code\modules\awaymissions\mission_code\spacebattle.dm" From 08a06487c0d230e019583ae25bd2595a2513f80f Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 23 Feb 2014 16:24:09 -0800 Subject: [PATCH 005/102] Added a cap of 10 force del() per tick. Should maybe make this higher. Also accidentally left testing mode on, woopsies. --- code/_compile_options.dm | 2 +- code/controllers/garbage.dm | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 02e99437b91..b7e6e4850bb 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -1,6 +1,6 @@ #define DEBUG //Enables byond profiling and full runtime logs - note, this may also be defined in your .dme file //#define dellogging //Enables logging of forced del() calls (used for debugging) -#define TESTING //Enables in-depth debug messages to runtime log (used for debugging) +//#define TESTING //Enables in-depth debug messages to runtime log (used for debugging) //By using the testing("message") proc you can create debug-feedback for people with this //uncommented, but not visible in the release version) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 3b897bf3944..1c74b84cb4d 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -1,5 +1,6 @@ #define GC_COLLECTIONS_PER_TICK 100 // maybe make this a config option at some point #define GC_COLLECTION_TIMEOUT 300 // deciseconds to wait to let running procs finish before we just say fuck it and force del() the object +#define GC_FORCE_DEL_PER_TICK 10 // max force del() calls per tick var/datum/controller/garbage_collector/garbage = new() var/list/uncollectable_vars=list( // "bounds", // bounds and its ilk are all caught by the issaved() check later on @@ -50,6 +51,7 @@ var/list/uncollectable_vars=list( /datum/controller/garbage_collector/proc/process() var/i = 1 + var/dels = 0 while(queue.len && i <= GC_COLLECTIONS_PER_TICK) Pop() i++ @@ -61,15 +63,19 @@ var/list/uncollectable_vars=list( var/refID = destroyed[i] var/GCd_at_time = destroyed[refID] if(GCd_at_time > time_to_kill) -// testing("GC: [refID] not old enough, breaking at [world.timeofday] for [time_to_kill - GCd_at_time] deciseconds") +// testing("GC: [refID] not old enough, breaking at [world.timeofday] for [GCd_at_time - time_to_kill] deciseconds") i++ break // Everything else is newer, skip them var/atom/A = locate(refID) // testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.timeofday]") if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake // Something's still referring to the qdel'd object. Kill it. + if(dels >= GC_FORCE_DEL_PER_TICK) +// testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]") + break testing("GC: -- \ref[A] | [A.type] was unable to be garbage collected and was force del() --") del(A) + dels++ // else // testing("GC: [refID] properly GC'd at [world.timeofday] with timeout [GCd_at_time]") destroyed.Cut(i, ++i) // also increases i in general From edc7cfd63a7d7f3fc9b1a92aa4201bcbfa41b548 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 23 Feb 2014 18:07:33 -0800 Subject: [PATCH 006/102] Make GC'd objects super invisible to help unreference them more. qdel() and clear contents of things when they themselves are qdel() Forgot to add the gc_cost to the total cost of the MC. --- code/controllers/garbage.dm | 2 ++ code/controllers/master_controller.dm | 2 +- code/game/atoms.dm | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 1c74b84cb4d..827eca89210 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -45,6 +45,7 @@ var/list/uncollectable_vars=list( continue // testing("GC: Unsetting [vname] in [A.type]") A.vars[vname] = null + A.invisibility = 101 // Idea by ChuckTheSheep to make the object even more unreferencable // testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.timeofday]") destroyed["\ref[A]"] = A.gc_destroyed queue.Cut(1, 2) @@ -79,6 +80,7 @@ var/list/uncollectable_vars=list( // else // testing("GC: [refID] properly GC'd at [world.timeofday] with timeout [GCd_at_time]") destroyed.Cut(i, ++i) // also increases i in general + /** * NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable * OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE. diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 2947715b661..45d1af27ccf 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -208,7 +208,7 @@ datum/controller/game_controller/proc/process() gc_cost = (world.timeofday - timer) / 10 //TIMING - total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost + total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost + gc_cost var/end_time = world.timeofday if(end_time < start_time) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index af1b824b185..d4aa0788b7e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -55,6 +55,8 @@ // Also called on del() /atom/proc/Destroy() gc_destroyed = world.timeofday + for(var/atom/movable/AM in contents) + qdel(AM) if(reagents) reagents.delete() del(reagents) // Technically I think the reagent holder will gc, but let's be careful here and delete all the reagents and the holder too From cac49a611edc63df5d1ba9959eee99c2267bd450 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 24 Feb 2014 16:56:34 -0800 Subject: [PATCH 007/102] Make items equipped by mobs unequip themselves as part of Destroy() Change the GC's loops to for() loops instead of while() loops. Also fixed a really stupid mistake where it would cut random shit out of the destroyed list instead of what was just processed. Made it use world.time instead of world.timeofday to get rid of stupid midnight rollover errors. Also there's a split between caps on var clearing and deletion checks Moved the invisibility = 101 bit out of the GC and into atom/Destroy() --- code/controllers/garbage.dm | 36 +++++++++++++++++------------------- code/game/atoms.dm | 3 ++- code/game/objects/items.dm | 6 ++++++ 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 827eca89210..3997bc8e025 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -1,11 +1,15 @@ -#define GC_COLLECTIONS_PER_TICK 100 // maybe make this a config option at some point +#define GC_COLLECTIONS_PER_TICK 100 // how many objects we're going to null the vars of per tick #define GC_COLLECTION_TIMEOUT 300 // deciseconds to wait to let running procs finish before we just say fuck it and force del() the object -#define GC_FORCE_DEL_PER_TICK 10 // max force del() calls per tick +#define GC_DEL_CHECK_PER_TICK 100 // number of tests per tick to make sure our GC'd objects are actually GC'd +#define GC_FORCE_DEL_PER_TICK 20 // max force del() calls per tick + var/datum/controller/garbage_collector/garbage = new() + var/list/uncollectable_vars=list( // "bounds", // bounds and its ilk are all caught by the issaved() check later on "contents", "gc_destroyed", + "invisiblity", "gender", // Causes runtimes if the logging is on "parent", "step_size", @@ -45,41 +49,35 @@ var/list/uncollectable_vars=list( continue // testing("GC: Unsetting [vname] in [A.type]") A.vars[vname] = null - A.invisibility = 101 // Idea by ChuckTheSheep to make the object even more unreferencable -// testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.timeofday]") +// testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.time] first:[queue[1]] second:[queue.len > 1 ? "[queue[2]]" : "NOTHING"]") destroyed["\ref[A]"] = A.gc_destroyed queue.Cut(1, 2) /datum/controller/garbage_collector/proc/process() - var/i = 1 + var/i var/dels = 0 - while(queue.len && i <= GC_COLLECTIONS_PER_TICK) + for(i = 1, queue.len && i <= GC_COLLECTIONS_PER_TICK, i++) Pop() - i++ - i = 1 - var/time_to_kill = world.timeofday - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() - if(time_to_kill < 1) // Within the first GC_COLLECTION_TIMEOUT deciseconds of midnight - time_to_kill += MIDNIGHT_ROLLOVER - while(i <= destroyed.len && i <= GC_COLLECTIONS_PER_TICK) - var/refID = destroyed[i] + var/time_to_kill = world.time - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() + for(i = 1, destroyed.len && i <= GC_DEL_CHECK_PER_TICK, i++) + var/refID = destroyed[1] var/GCd_at_time = destroyed[refID] if(GCd_at_time > time_to_kill) -// testing("GC: [refID] not old enough, breaking at [world.timeofday] for [GCd_at_time - time_to_kill] deciseconds") - i++ +// testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]") break // Everything else is newer, skip them var/atom/A = locate(refID) -// testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.timeofday]") +// testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]") if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake // Something's still referring to the qdel'd object. Kill it. if(dels >= GC_FORCE_DEL_PER_TICK) // testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]") - break + break // Server's already pretty pounded, everything else can wait 2 seconds testing("GC: -- \ref[A] | [A.type] was unable to be garbage collected and was force del() --") del(A) dels++ // else -// testing("GC: [refID] properly GC'd at [world.timeofday] with timeout [GCd_at_time]") - destroyed.Cut(i, ++i) // also increases i in general +// testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]") + destroyed.Cut(1, 2) /** * NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d4aa0788b7e..949aacc1ce9 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -54,7 +54,8 @@ // Called BEFORE qdel moves shit. // Also called on del() /atom/proc/Destroy() - gc_destroyed = world.timeofday + gc_destroyed = world.time + invisibility = 101 for(var/atom/movable/AM in contents) qdel(AM) if(reagents) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 3d921ebbb8c..0411c90eb33 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -35,6 +35,12 @@ /obj/item/device icon = 'icons/obj/device.dmi' +/obj/item/Destroy() + if(ismob(loc)) + var/mob/m = loc + m.unEquip(src) + return ..() + /obj/item/ex_act(severity) switch(severity) if(1.0) From af8001d619c78f9c28b488de1af31511d115cae6 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 24 Feb 2014 18:48:58 -0800 Subject: [PATCH 008/102] WOOPS TYPO --- code/controllers/garbage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 3997bc8e025..c848fd44c7b 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -9,7 +9,7 @@ var/list/uncollectable_vars=list( // "bounds", // bounds and its ilk are all caught by the issaved() check later on "contents", "gc_destroyed", - "invisiblity", + "invisibility", "gender", // Causes runtimes if the logging is on "parent", "step_size", From f0fd0c9949ab21268ea3c5f5e1765617a0ebefae Mon Sep 17 00:00:00 2001 From: MrPerson Date: Tue, 25 Feb 2014 02:00:28 -0800 Subject: [PATCH 009/102] Fixed the nuke disk qdel() fucking up Made the singulo spawn correctly Really minor fix for things that are qdel()'d at 0 time, which should be nothing if everything is going right. --- code/game/atoms.dm | 4 +--- code/game/atoms_movable.dm | 12 ++++++------ code/game/gamemodes/nuclear/nuclearbomb.dm | 1 + code/modules/admin/verbs/debug.dm | 3 +-- code/modules/power/singularity/singularity.dm | 3 --- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 949aacc1ce9..ab8288e6330 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -46,7 +46,7 @@ /atom/Del() // Pass to Destroy(). - if(!gc_destroyed) // If we're just straight up calling del(atom), make sure anything in Destroy() gets called anyways just to be sure. + if(isnull(gc_destroyed)) // If we're just straight up calling del(atom), make sure anything in Destroy() gets called anyways just to be sure. Destroy() ..() @@ -56,8 +56,6 @@ /atom/proc/Destroy() gc_destroyed = world.time invisibility = 101 - for(var/atom/movable/AM in contents) - qdel(AM) if(reagents) reagents.delete() del(reagents) // Technically I think the reagent holder will gc, but let's be careful here and delete all the reagents and the holder too diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 15dad142851..53e58d0a13e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -31,6 +31,12 @@ // testing("GC: [type] was deleted via GC with qdel()") ..() +/atom/movable/Destroy() + loc = null // can never null their loc enough really + for(var/atom/movable/AM in contents) + qdel(AM) + . = ..() + // Previously known as HasEntered() // This is automatically called when something enters your square /atom/movable/Crossed(atom/movable/AM) @@ -59,12 +65,6 @@ return 1 return 0 -/atom/movable/Destroy() - loc = null // can never null their loc enough really - for(var/atom/movable/AM in contents) - qdel(AM) - . = ..() - /atom/movable/proc/hit_check() // todo: this is partly obsolete due to passflags already, add throwing stuff to mob CanPass and finish it if(src.throwing) for(var/atom/A in get_turf(src)) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 71d45f0f2cf..cf4080a840d 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -210,3 +210,4 @@ var/bomb_set var/obj/D = new /obj/item/weapon/disk/nuclear(pick(blobstart)) message_admins("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") log_game("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") + ..() diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 7c412684a46..d81126ba5e1 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1058,8 +1058,7 @@ var/global/list/g_fancy_list_of_safe_types = null for(var/obj/machinery/the_singularitygen/G in world) if(G.anchored) var/obj/machinery/singularity/S = new /obj/machinery/singularity(get_turf(G), 50) - spawn(0) - del(G) +// qdel(G) S.energy = 1750 S.current_size = 7 S.icon = 'icons/effects/224x224.dmi' diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index b204357819e..7383574951b 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -38,9 +38,6 @@ var/global/list/uneatable = list( admin_investigate_setup() src.energy = starting_energy - if(temp) - spawn(temp) - qdel(src) ..() for(var/obj/machinery/singularity_beacon/singubeacon in world) if(singubeacon.active) From 76a02b768d46c325c30f589171b5550bee60f019 Mon Sep 17 00:00:00 2001 From: Razharas Date: Tue, 25 Feb 2014 18:53:32 +0400 Subject: [PATCH 010/102] Runtime fix --- code/game/machinery/atmo_control.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 35bcf2972c4..e57a70e2e34 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -174,10 +174,6 @@ obj/machinery/computer/general_air_control/large_tank_control var/pressure_setting = ONE_ATMOSPHERE * 45 -obj/machinery/computer/general_air_control/large_tank_control/New() - ..() - set_frequency(frequency) - obj/machinery/computer/general_air_control/large_tank_control/attackby(obj/item/I, mob/user) ..() if(istype(I, /obj/item/device/multitool)) From a6b8bba94f994d6847acb7b20e6c6c0545c6f77b Mon Sep 17 00:00:00 2001 From: Razharas Date: Wed, 26 Feb 2014 20:57:56 +0400 Subject: [PATCH 011/102] Made it a button --- code/game/machinery/atmo_control.dm | 57 ++++++++++++++++------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index e57a70e2e34..96ca9d3073a 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -86,6 +86,12 @@ obj/machinery/computer/general_air_control var/list/sensor_information = list() var/datum/radio_frequency/radio_connection +obj/machinery/computer/general_air_control/New() + ..() + + if(radio_controller) + set_frequency(frequency) + obj/machinery/computer/general_air_control/attack_hand(mob/user) if(..(user)) return @@ -174,32 +180,31 @@ obj/machinery/computer/general_air_control/large_tank_control var/pressure_setting = ONE_ATMOSPHERE * 45 -obj/machinery/computer/general_air_control/large_tank_control/attackby(obj/item/I, mob/user) - ..() - if(istype(I, /obj/item/device/multitool)) - var/list/IO = list() - var/list/devices = radio_connection.devices["_default"] - for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) - var/list/text = text2list(U.id_tag, "_") //I know its colon but oh well - IO |= text[1] - for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) - var/list/text = text2list(U.id, "_") //I know its colon but oh well - IO |= text[1] - if(!IO.len) - user << "No machinery detected." - var/S = input("Select the device set: ", "Selection", IO[1]) as anything in IO - if(src) - src.input_tag = "[S]_in" - src.output_tag = "[S]_out" - name = "[uppertext(S)] Supply Control" - for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) - U.broadcast_status() +obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob/user) + var/list/IO = list() + var/list/devices = radio_connection.devices["_default"] + for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) + var/list/text = text2list(U.id_tag, "_") + IO |= text[1] + for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) + var/list/text = text2list(U.id, "_") + IO |= text[1] + if(!IO.len) + user << "No machinery detected." + var/S = input("Select the device set: ", "Selection", IO[1]) as anything in IO + if(src) + src.input_tag = "[S]_in" + src.output_tag = "[S]_out" + name = "[uppertext(S)] Supply Control" + for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) + U.broadcast_status() - for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) - U.broadcast_status() + for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) + U.broadcast_status() obj/machinery/computer/general_air_control/large_tank_control/return_text() - var/output = ..() + var/output = "Reconnect
    " + output += ..() //if(signal.data) // input_info = signal.data // Attempting to fix intake control -- TLE @@ -212,7 +217,7 @@ Rate: [volume_rate] L/sec
    "} output += "Command: Toggle Power
    " else - output += "ERROR: Can not find input port Search
    " + output += "ERROR: Can not find input port
    " output += "
    " @@ -224,7 +229,7 @@ Rate: [volume_rate] L/sec
    "} output += "Command: Toggle Power Set Pressure
    " else - output += "ERROR: Can not find output port Search
    " + output += "ERROR: Can not find output port
    " output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
    " @@ -258,6 +263,8 @@ obj/machinery/computer/general_air_control/large_tank_control/Topic(href, href_l var/datum/signal/signal = new signal.transmission_method = 1 //radio signal signal.source = src + if(href_list["reconnect"]) + reconnect(usr) if(href_list["in_refresh_status"]) input_info = null signal.data = list ("tag" = input_tag, "status") From f27d35b760d7a19479439f525a516b67f46aa6be Mon Sep 17 00:00:00 2001 From: MrPerson Date: Wed, 26 Feb 2014 23:44:19 -0800 Subject: [PATCH 012/102] Made gibbing not look stupid. Also some basic stuff in an attempt to get complex mobs to GC. Still doesn't work atm. --- code/controllers/garbage.dm | 19 ++++++++++++++++++- code/game/atoms.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 7 +++++++ code/modules/mob/living/carbon/human/human.dm | 5 +++++ code/modules/mob/living/death.dm | 1 + code/modules/mob/mob.dm | 17 +++++++++++++---- 6 files changed, 45 insertions(+), 6 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index c848fd44c7b..7a1c329e1ca 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -110,4 +110,21 @@ var/list/uncollectable_vars=list( src << "qdel(everything)" for(var/atom/movable/everything in world) qdel(everything) -*/ \ No newline at end of file +*/ + +// Uncomment this verb and run it on things to report blockages. +/atom/verb/qdel_test() + set name = "qdel with test" + set category = "Debug" + set background = 1 + set src in world + + qdel(src) + for(var/atom/movable/everything) + for(var/everyvar in everything.vars) + var/variable = everything.vars[everyvar] + if(variable == src) + testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") + else if(islist(variable)) + if(src in variable) + testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index ab8288e6330..7b8854eb22a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -55,10 +55,10 @@ // Also called on del() /atom/proc/Destroy() gc_destroyed = world.time - invisibility = 101 if(reagents) reagents.delete() del(reagents) // Technically I think the reagent holder will gc, but let's be careful here and delete all the reagents and the holder too + invisibility = 101 /atom/proc/assume_air(datum/gas_mixture/giver) del(giver) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 7e0a61c3577..089d2857bd6 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,3 +1,10 @@ +/mob/living/carbon/Destroy() + for(var/atom/movable/guts in internal_organs) + qdel(guts) + for(var/atom/movable/food in stomach_contents) + qdel(food) + return ..() + /mob/living/carbon/Move(NewLoc, direct) . = ..() if(.) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e278074ce52..1d10f6ded42 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -32,6 +32,11 @@ ..() +/mob/living/carbon/human/Destroy() + for(var/atom/movable/organelle in organs) + qdel(organelle) + return ..() + /mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes) if ((!( yes ) || now_pushing)) return diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index ab544be2a01..6cfe2ea8729 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -45,6 +45,7 @@ canmove = 0 icon = null invisibility = 101 + alpha = 0 if(!prev_lying && animation) animate = new(loc) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b3c5e443be3..361aef49c94 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -2,11 +2,20 @@ mob_list -= src dead_mob_list -= src living_mob_list -= src + //Set the mob up for GC. Mobs have lots of references + if(client) + for(var/atom/movable/AM in client.screen) + qdel(AM) + client.screen = list() + del(hud_used) + for(var/magic in mob_spell_list) + del(magic) + for(var/infection in viruses) + del(infection) + + if(mind) + mind.current = null ghostize() - for(var/atom/movable/AM in src) - if(isobj(AM)) - unEquip(AM) - qdel(AM) ..() var/next_mob_id = 0 From 37525c8e401217fae35c0a61da83fdd6b2207f81 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Thu, 27 Feb 2014 09:36:57 -0800 Subject: [PATCH 013/102] Tweak that useless loop test. It doesn't tell me anything :( --- code/controllers/garbage.dm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 7a1c329e1ca..b627c0ae768 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -118,9 +118,9 @@ var/list/uncollectable_vars=list( set category = "Debug" set background = 1 set src in world - +/* qdel(src) - for(var/atom/movable/everything) + for(var/datum/everything) //Yes this works. for(var/everyvar in everything.vars) var/variable = everything.vars[everyvar] if(variable == src) @@ -128,3 +128,12 @@ var/list/uncollectable_vars=list( else if(islist(variable)) if(src in variable) testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") + for(var/atom/movable/everything) //The slow part. + for(var/everyvar in everything.vars) + var/variable = everything.vars[everyvar] + if(variable == src) + testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") + else if(islist(variable)) + if(src in variable) + testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") +*/ \ No newline at end of file From ca917c828fcd8a70374f339f019a659dfeb3f833 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 1 Mar 2014 23:12:30 -0500 Subject: [PATCH 014/102] Staff of animated statue fixes and nerfs Player controlled animated statues that ghost won't start attacking everyone, they'll just stalk people without attacking. A player controlled animated statue will only last as long as the statue would have lasted,at the end of the time the player is released from the statue as usual, and no longer has any onus to not fuck up the wizard. NOTE: this means you can't use animate statues to "kill" a target, they'll recover eventually, and even if the round ends before they do, it still won't count. --- code/modules/mob/living/simple_animal/hostile/statue.dm | 9 +++++++++ code/modules/projectiles/projectile/magic.dm | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index d3726cb90db..725a21cc0ba 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -81,6 +81,13 @@ if(get_dist(watching, src) > get_dist(target, src)) LoseTarget() GiveTarget(watching) + for(var/obj/structure/closet/statue/S in contents) + if(S.timer <= 10) + S.loc = src.loc + if(mind) + for(var/mob/M in S.contents) + mind.transfer_to(M) + del(src) /mob/living/simple_animal/hostile/statue/AttackingTarget() if(!can_be_seen()) @@ -140,6 +147,8 @@ // Stop attacking clientless mobs /mob/living/simple_animal/hostile/statue/CanAttack(var/atom/the_target) + if(mind && mind.key && !ckey) + return 0 if(isliving(the_target)) var/mob/living/L = the_target if(!L.client && !L.ckey) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 21bc7bf5ce6..0fc097f38e7 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -235,8 +235,8 @@ proc/wabbajack(mob/living/M) if(H.mind) H.mind.transfer_to(S) S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." - del(H) - del(change) + H = change + H.loc = S del(src) else var/obj/O = change From 917a2dd2a434195e48f396b291d6286970468dca Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 2 Mar 2014 21:08:25 -0800 Subject: [PATCH 015/102] Rename equip_to_slot_or_qdel() -> del() Still qdel()'s them, just naming the proc back. Should hopefully reduce the number of lines different in the pr. --- .../Sigyn/Department Sec/jobs.dm | 44 +- code/_onclick/telekinesis.dm | 2 +- code/game/gamemodes/antag_spawner.dm | 18 +- code/game/gamemodes/cult/runes.dm | 8 +- code/game/gamemodes/nuclear/nuclear.dm | 30 +- code/game/gamemodes/wizard/wizard.dm | 22 +- code/game/jobs/job/assistant.dm | 4 +- code/game/jobs/job/captain.dm | 46 +- code/game/jobs/job/civilian.dm | 202 ++++----- code/game/jobs/job/civilian_chaplain.dm | 8 +- code/game/jobs/job/engineering.dm | 64 +-- code/game/jobs/job/medical.dm | 88 ++-- code/game/jobs/job/science.dm | 50 +-- code/game/jobs/job/security.dm | 126 +++--- code/game/jobs/job_controller.dm | 16 +- code/modules/admin/topic.dm | 8 +- code/modules/admin/verbs/debug.dm | 398 +++++++++--------- code/modules/admin/verbs/onlyone.dm | 14 +- code/modules/awaymissions/corpse.dm | 26 +- code/modules/events/ninja.dm | 26 +- .../mob/living/carbon/metroid/metroid.dm | 12 +- .../mob/living/simple_animal/corpse.dm | 26 +- code/modules/mob/mob.dm | 6 +- 23 files changed, 622 insertions(+), 622 deletions(-) diff --git a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm index 288234142e6..ee005a2e037 100644 --- a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm +++ b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm @@ -3,8 +3,8 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") /datum/job/officer/proc/assign_sec_to_department(var/mob/living/carbon/human/H) if(!H) return 0 if(!sec_departments.len) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) else var/department = pick(sec_departments) sec_departments -= department @@ -12,23 +12,23 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") var/destination = null switch(department) if("supply") - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) dep_access = list(access_mailsorting, access_mining) destination = /area/security/checkpoint/supply if("engineering") - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) dep_access = list(access_construction, access_engine) destination = /area/security/checkpoint/engineering if("medical") - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) dep_access = list(access_medical) destination = /area/security/checkpoint/medical if("science") - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) dep_access = list(access_research) destination = /area/security/checkpoint/science var/teleport = 0 @@ -64,21 +64,21 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) assign_sec_to_department(H) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_qdel(new /obj/item/device/flash(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 987a84d45aa..ff62ff8327e 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -195,7 +195,7 @@ var/const/tk_maxrange = 15 return 1 */ -//equip_to_slot_or_qdel(obj/item/W, slot, qdel_on_fail = 1) +//equip_to_slot_or_del(obj/item/W, slot, qdel_on_fail = 1) /* if(istype(user, /mob/living/carbon)) if(user:mutations & TK && get_dist(source, user) <= 7) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 94cf62a034f..9d33e32f6af 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -78,7 +78,7 @@ if("healing") M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(null) M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(null) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." if("robeless") M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(null) @@ -104,14 +104,14 @@ M.mind.special_role = "apprentice" /obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob) - target.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(target), slot_ears) - target.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) - target.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(target), slot_shoes) - target.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) - target.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(target), slot_head) - target.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(target), slot_back) - target.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(target), slot_in_backpack) - target.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) + target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) + target.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) + target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(target), slot_shoes) + target.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) + target.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(target), slot_head) + target.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(target), slot_back) + target.equip_to_slot_or_del(new /obj/item/weapon/storage/box(target), slot_in_backpack) + target.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) /obj/item/weapon/antag_spawner/borg_tele name = "Syndicate Cyborg Teleporter" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 30cb1d24803..2a25d107199 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1060,10 +1060,10 @@ var/list/sacrificed = list() usr.visible_message("\red The rune disappears with a flash of red light, and a set of armor appears on [usr]...", \ "\red You are blinded by the flash of red light! After you're able to see again, you see that you are now wearing a set of armor.") - user.equip_to_slot_or_qdel(new /obj/item/clothing/head/culthood/alt(user), slot_head) - user.equip_to_slot_or_qdel(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) - user.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/cult(user), slot_shoes) - user.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) + user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) + user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) + user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(user), slot_shoes) + user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) //the above update their overlay icons cache but do not call update_icons() //the below calls update_icons() at the end, which will update overlay icons by using the (now updated) cache user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index c418ab1fe73..664d606bb16 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -161,7 +161,7 @@ else var/mob/living/carbon/human/H = synd_mind.current P.loc = H.loc - H.equip_to_slot_or_qdel(P, slot_r_store, 0) + H.equip_to_slot_or_del(P, slot_r_store, 0) H.update_icons() else @@ -194,24 +194,24 @@ var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(synd_mob) R.set_frequency(radio_freq) - synd_mob.equip_to_slot_or_qdel(R, slot_ears) + synd_mob.equip_to_slot_or_del(R, slot_ears) - synd_mob.equip_to_slot_or_qdel(new /obj/item/clothing/under/syndicate(synd_mob), slot_w_uniform) - synd_mob.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(synd_mob), slot_shoes) - synd_mob.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(synd_mob), slot_wear_suit) - synd_mob.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(synd_mob), slot_gloves) - synd_mob.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/swat(synd_mob), slot_head) - synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/card/id/syndicate(synd_mob), slot_wear_id) - if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(synd_mob), slot_back) - if(synd_mob.backbag == 3) synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back) - synd_mob.equip_to_slot_or_qdel(new /obj/item/ammo_box/magazine/m10mm(synd_mob), slot_in_backpack) - synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), slot_in_backpack) - synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt) - synd_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(synd_mob), slot_w_uniform) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(synd_mob), slot_shoes) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(synd_mob), slot_wear_suit) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(synd_mob), slot_gloves) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(synd_mob), slot_head) + synd_mob.equip_to_slot_or_del(new /obj/item/weapon/card/id/syndicate(synd_mob), slot_wear_id) + if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back) + if(synd_mob.backbag == 3) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back) + synd_mob.equip_to_slot_or_del(new /obj/item/ammo_box/magazine/m10mm(synd_mob), slot_in_backpack) + synd_mob.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), slot_in_backpack) + synd_mob.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt) + synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack) var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(synd_mob) U.hidden_uplink.uses = 10 - synd_mob.equip_to_slot_or_qdel(U, slot_in_backpack) + synd_mob.equip_to_slot_or_del(U, slot_in_backpack) var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(synd_mob) E.imp_in = synd_mob diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 0b0a06aa980..6306d8d5a6b 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -153,17 +153,17 @@ qdel(wizard_mob.r_store) qdel(wizard_mob.l_store) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(wizard_mob), slot_ears) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(wizard_mob), slot_head) - if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back) - if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(wizard_mob), slot_back) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(wizard_mob), slot_in_backpack) -// wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/scrying_gem(wizard_mob), slot_l_store) For scrying gem. - wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store) - wizard_mob.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand) + wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_ears) + wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform) + wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes) + wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit) + wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head) + if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back) + if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(wizard_mob), slot_back) + wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(wizard_mob), slot_in_backpack) +// wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/scrying_gem(wizard_mob), slot_l_store) For scrying gem. + wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store) + wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand) wizard_mob << "You will find a list of available spells in your spell book. Choose your magic arsenal carefully." wizard_mob << "In your pockets you will find a teleport scroll. Use it as needed." diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 3ecdd21d8a6..6692227bc4a 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -12,8 +12,8 @@ /datum/job/assistant/equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) return 1 /datum/job/assistant/get_access() diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 5a8d3b2b95b..da37da1b1af 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -16,22 +16,22 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/captain(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H) U.hastie = new /obj/item/clothing/tie/medal/gold/captain(U) - H.equip_to_slot_or_qdel(U, slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/captain(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/caphat(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) + H.equip_to_slot_or_del(U, slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/ids(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 @@ -71,17 +71,17 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/hop(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/heads/hop(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/ids(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) return 1 \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index b49a80c9545..81909f02c94 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -14,27 +14,27 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/bar(H), slot_belt) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/bar(H), slot_belt) if(H.backbag == 1) var/obj/item/weapon/storage/box/survival/Barpack = new /obj/item/weapon/storage/box/survival(H) - H.equip_to_slot_or_qdel(Barpack, slot_r_hand) + H.equip_to_slot_or_del(Barpack, slot_r_hand) new /obj/item/ammo_casing/shotgun/beanbag(Barpack) new /obj/item/ammo_casing/shotgun/beanbag(Barpack) new /obj/item/ammo_casing/shotgun/beanbag(Barpack) new /obj/item/ammo_casing/shotgun/beanbag(Barpack) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) return 1 @@ -55,12 +55,12 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chef(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/chefhat(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/chef(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt) return 1 @@ -80,13 +80,13 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/apron(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/botanist(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt) return 1 @@ -107,13 +107,13 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/quartermaster(H), slot_belt) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) - H.equip_to_slot_or_qdel(new /obj/item/weapon/clipboard(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/quartermaster(H), slot_belt) +// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) + H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) return 1 @@ -133,11 +133,11 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/cargo(H), slot_belt) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt) +// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) return 1 @@ -157,22 +157,22 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cargo (H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/industrial (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/shaftminer(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) +// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/crowbar(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/crowbar(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/mining_voucher(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack) return 1 @@ -194,17 +194,17 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 H.fully_replace_character_name(H.real_name, pick(clown_names)) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/clown(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/clown(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/clown_shoes(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/clown(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask) - H.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H, 50), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/bikehorn(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/stamp/clown(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/toy/crayon/rainbow(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/clown(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/clown(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H, 50), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/stamp/clown(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack) H.mutations.Add(CLUMSY) H.rename_self("clown") return 1 @@ -226,23 +226,23 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/mime(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/mime(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/white(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/mime(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/mime(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/toy/crayon/mime(H), slot_l_store) - H.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/toy/crayon/mime(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_l_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/toy/crayon/mime(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/toy/crayon/mime(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack) if(H.mind) H.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null) H.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/mime/speak(null) @@ -267,10 +267,10 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/janitor(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_srv(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt) return 1 @@ -291,12 +291,12 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/librarian(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/bag/books(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/barcodescanner(H), slot_r_store) - H.equip_to_slot_or_qdel(new /obj/item/device/laser_pointer(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/books(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) return 1 @@ -317,24 +317,24 @@ var/global/lawyer = 0//Checks for another lawyer equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(!lawyer) lawyer = 1 - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/lawyer/bluesuit(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/lawyer/bluejacket(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/bluesuit(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/lawyer/bluejacket(H), slot_wear_suit) else - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/lawyer/purpsuit(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/lawyer/purpjacket(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/lawyer(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/device/laser_pointer(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/purpsuit(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/lawyer/purpjacket(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index a9c891630a4..8ed5737d8da 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -16,10 +16,10 @@ if(!H) return 0 var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H) - H.equip_to_slot_or_qdel(B, slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/chaplain(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(B, slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) spawn(0) var/religion_name = "Christianity" var/new_religion = copytext(sanitize(input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN) diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index f4a0a79f289..eb069bc7abd 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -22,19 +22,19 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/ce(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/industrial (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/heads/ce(H), slot_l_store) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/hardhat/white(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) return 1 @@ -55,19 +55,19 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_eng(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/orange(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/hardhat(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/device/t_scanner(H), slot_r_store) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/engineering(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/device/pda/engineering(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) return 1 @@ -87,16 +87,16 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_eng(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/atmos(H), slot_l_store) - H.equip_to_slot_or_qdel(new /obj/item/device/analyzer(H), slot_r_store) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/atmos(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/device/analyzer(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack) return 1 \ No newline at end of file diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 4292767725f..916c8b89e09 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -19,19 +19,19 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/cmo(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/medic (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/heads/cmo(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat/cmo(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/device/flashlight/pen(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/cmo(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -51,19 +51,19 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_med(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/medic (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/medical(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/device/flashlight/pen(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -84,11 +84,11 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_med(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/chemist(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) return 1 @@ -108,12 +108,12 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_medsci(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/geneticist(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/device/flashlight/pen(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) return 1 @@ -133,19 +133,19 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_med(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/medic (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/viro(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat/virologist(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/device/flashlight/pen(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/viro(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/virologist(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index a51a4bf1e13..1a953fc0d8b 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -21,13 +21,13 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/rd(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/heads/rd(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/weapon/clipboard(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/device/laser_pointer(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) return 1 @@ -47,13 +47,13 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sci(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/toxins(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas(H), slot_wear_mask) -// H.equip_to_slot_or_qdel(new /obj/item/weapon/tank/oxygen(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) +// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) +// H.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(H), slot_l_hand) return 1 @@ -72,17 +72,17 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sci(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/roboticist(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) +// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 2d25e65b293..1a82088422d 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -27,24 +27,24 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security (H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/hos(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/heads/hos(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/hos(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/HoS(H), slot_head) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk - H.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) - H.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/gun(H), slot_s_store) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security (H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hos(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/hos(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/HoS(H), slot_head) +// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) + H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(H), slot_s_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_store) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 @@ -67,24 +67,24 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/warden(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/warden(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) -// H.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk - H.equip_to_slot_or_qdel(new /obj/item/device/flash(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/warden(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/warden(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) +// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk + H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 @@ -111,28 +111,28 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/det(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/detective(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/det_hat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(H), slot_head) var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H) CIG.light("") - H.equip_to_slot_or_qdel(CIG, slot_wear_mask) - H.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(H), slot_l_store) + H.equip_to_slot_or_del(CIG, slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(H), slot_l_store) if(H.backbag == 1)//Why cant some of these things spawn in his office? - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/device/detective_scanner(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_r_store) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/device/detective_scanner(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H @@ -157,22 +157,22 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_qdel(new /obj/item/device/flash(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_qdel(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 41daef2bf49..635e741ec28 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -324,15 +324,15 @@ var/global/datum/controller/occupations/job_master else switch(H.backbag) if(1) - H.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) if(2) var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H) new /obj/item/weapon/storage/box/survival(BPK) - H.equip_to_slot_or_qdel(BPK, slot_back,1) + H.equip_to_slot_or_del(BPK, slot_back,1) if(3) var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack/satchel_norm(H) new /obj/item/weapon/storage/box/survival(BPK) - H.equip_to_slot_or_qdel(BPK, slot_back,1) + H.equip_to_slot_or_del(BPK, slot_back,1) H << "You are the [rank]." H << "As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this." @@ -340,7 +340,7 @@ var/global/datum/controller/occupations/job_master H << "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp." spawnId(H,rank) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears) H.update_hud() // Tmp fix for Github issue 1006. TODO: make all procs in update_icons.dm do client.screen |= equipment no matter what. return 1 @@ -367,12 +367,12 @@ var/global/datum/controller/occupations/job_master C.registered_name = H.real_name C.assignment = rank C.name = "[C.registered_name]'s ID Card ([C.assignment])" - H.equip_to_slot_or_qdel(C, slot_wear_id) + H.equip_to_slot_or_del(C, slot_wear_id) /* if(prob(50)) - H.equip_to_slot_or_qdel(new /obj/item/weapon/pen(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/weapon/pen(H), slot_r_store) else - H.equip_to_slot_or_qdel(new /obj/item/weapon/pen/blue(H), slot_r_store)*/ - H.equip_to_slot_or_qdel(new /obj/item/device/pda(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/weapon/pen/blue(H), slot_r_store)*/ + H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt) if(locate(/obj/item/device/pda,H))//I bet this could just use locate. It can --SkyMarshal var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H) pda.owner = H.real_name diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index f732a5cf821..b1087afccad 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1075,8 +1075,8 @@ if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/observer = M - observer.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) - observer.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(observer), slot_shoes) + observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) + observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(observer), slot_shoes) M.Paralyse(5) sleep(5) M.loc = pick(tdomeobserve) @@ -1285,9 +1285,9 @@ usr << "This can only be used on instances of type /mob/living/carbon/human" return - H.equip_to_slot_or_qdel( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand ) + H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand ) if(!(istype(H.l_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie))) - H.equip_to_slot_or_qdel( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_r_hand ) + H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_r_hand ) if(!(istype(H.r_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie))) log_admin("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].") message_admins("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index d81126ba5e1..8ac93b79d22 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -657,166 +657,166 @@ var/global/list/g_fancy_list_of_safe_types = null if ("assistant grey") var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(M) new /obj/item/weapon/storage/box/survival(BPK) - M.equip_to_slot_or_qdel(BPK, slot_back,1) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(BPK, slot_back,1) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Assistant)" W.assignment = "Assistant" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) var/obj/item/device/pda/P = new(M) P.owner = M.real_name P.ownjob = "Assistant" P.name = "PDA-[M.real_name] (Assistant)" - M.equip_to_slot_or_qdel(P, slot_belt) + M.equip_to_slot_or_del(P, slot_belt) if ("standard space gear") - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head) var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M) - M.equip_to_slot_or_qdel(J, slot_back) + M.equip_to_slot_or_del(J, slot_back) J.toggle() - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/breath(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask) J.Topic(null, list("stat" = 1)) if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0 if (dresscode=="tournament standard red") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/red(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) else - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store) if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0 - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/det(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/det_hat(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) if ("tournament chef") //Steven Seagal FTW - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chef(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chefhat(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_s_store) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_s_store) if ("tournament janitor") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) var/obj/item/weapon/storage/backpack/backpack = new(M) for(var/obj/item/I in backpack) qdel(I) - M.equip_to_slot_or_qdel(backpack, slot_back) + M.equip_to_slot_or_del(backpack, slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/mop(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand) var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M) bucket.reagents.add_reagent("water", 70) - M.equip_to_slot_or_qdel(bucket, slot_l_hand) + M.equip_to_slot_or_del(bucket, slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) if ("pirate") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/bandana(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) if ("space pirate") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) /* if ("soviet soldier") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/ushanka(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head) */ if("tunnel clown")//Tunnel clowns rule! - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/chaplain_hood(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/bikehorn(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Tunnel Clown!" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_qdel(fire_axe, slot_r_hand) + M.equip_to_slot_or_del(fire_axe, slot_r_hand) if("masked killer") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/overalls(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/white(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/latex(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/welding(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/apron(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/weapon/kitchenknife(M), slot_l_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/scalpel(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store) var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_qdel(fire_axe, slot_r_hand) + M.equip_to_slot_or_del(fire_axe, slot_r_hand) for(var/obj/item/carried_item in M.contents) if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant. carried_item.add_blood(M)//Oh yes, there will be blood... if("assassin") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/tie/waistcoat(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M) for(var/obj/item/briefcase_item in sec_briefcase) @@ -827,52 +827,52 @@ var/global/list/g_fancy_list_of_safe_types = null sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba sec_briefcase.contents += new /obj/item/ammo_box/a357 sec_briefcase.contents += new /obj/item/weapon/plastique - M.equip_to_slot_or_qdel(sec_briefcase, slot_l_hand) + M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) var/obj/item/device/pda/heads/pda = new(M) pda.owner = M.real_name pda.ownjob = "Reaper" pda.name = "PDA-[M.real_name] ([pda.ownjob])" - M.equip_to_slot_or_qdel(pda, slot_belt) + M.equip_to_slot_or_del(pda, slot_belt) var/obj/item/weapon/card/id/syndicate/W = new(M) W.name = "[M.real_name]'s ID Card" W.access = get_all_accesses() W.assignment = "Reaper" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) // DEATH SQUADS if("death commando")//Was looking to add this for a while. var/obj/item/device/radio/R = new /obj/item/device/radio/headset(M) R.set_frequency(1441) - M.equip_to_slot_or_qdel(R, slot_ears) + M.equip_to_slot_or_del(R, slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/security(M), slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/device/flashlight(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/weapon/plastique(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/plastique(M), slot_in_backpack) - M.equip_to_slot_or_qdel(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/grenade/flashbang(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(M), slot_s_store) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_r_hand) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)//Here you go Deuryn @@ -886,28 +886,28 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Death Commando")//Let's add their alloted Centcom access. W.assignment = "Death Commando" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) /* if("syndicate commando") M.equip_syndicate_commando() */ if("centcom official") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_com(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/gun(M), slot_belt) - M.equip_to_slot_or_qdel(new /obj/item/weapon/pen(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/weapon/pen(M), slot_l_store) var/obj/item/device/pda/heads/pda = new(M) pda.owner = M.real_name pda.ownjob = "Centcom Official" pda.name = "PDA-[M.real_name] ([pda.ownjob])" - M.equip_to_slot_or_qdel(pda, slot_r_store) + M.equip_to_slot_or_del(pda, slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/clipboard(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_l_hand) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Centcom Official)" @@ -915,20 +915,20 @@ var/global/list/g_fancy_list_of_safe_types = null W.access = get_centcom_access("Centcom Official") W.assignment = "Centcom Official" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) if("centcom commander") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/centhat(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/ammo_box/a357(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Centcom Commander)" @@ -937,23 +937,23 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Centcom Commander") W.assignment = "Centcom Commander" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) if("special ops officer") var/obj/item/device/radio/headset/R = new /obj/item/device/radio/headset/headset_cent(M) R.set_frequency(1441) - M.equip_to_slot_or_qdel(R, slot_ears) + M.equip_to_slot_or_del(R, slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) - M.equip_to_slot_or_qdel(new /obj/item/weapon/lighter/zippo(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Special Ops Officer)" @@ -962,53 +962,53 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Special Ops Officer") W.assignment = "Special Ops Officer" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) if("blue wizard") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("red wizard") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/red(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("marisa wizard") - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/wizard/marisa(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_qdel(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/box(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) if("soviet admiral") - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/hgpiratecap(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) - M.equip_to_slot_or_qdel(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/soviet(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card (Admiral)" W.icon_state = "centcom" @@ -1016,20 +1016,20 @@ var/global/list/g_fancy_list_of_safe_types = null W.access += get_centcom_access("Admiral") W.assignment = "Admiral" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) if("mobster") - M.equip_to_slot_or_qdel(new /obj/item/clothing/head/fedora(M), slot_head) - M.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/laceup(M), slot_shoes) - M.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_qdel(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_qdel(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_qdel(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand) - M.equip_to_slot_or_qdel(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform) + M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/tommygun(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" W.assignment = "Assistant" W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) M.regenerate_icons() diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index c79d3117e21..1a3d1ea3748 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -30,12 +30,12 @@ continue qdel(I) - H.equip_to_slot_or_qdel(new /obj/item/clothing/under/kilt(H), slot_w_uniform) - H.equip_to_slot_or_qdel(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) - H.equip_to_slot_or_qdel(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_qdel(new /obj/item/weapon/claymore(H), slot_l_hand) - H.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/swat/combat(H), slot_shoes) - H.equip_to_slot_or_qdel(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) + H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat/combat(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) var/obj/item/weapon/card/id/W = new(H) W.name = "[H.real_name]'s ID Card" @@ -44,7 +44,7 @@ W.access += get_all_centcom_access() W.assignment = "Highlander" W.registered_name = H.real_name - H.equip_to_slot_or_qdel(W, slot_wear_id) + H.equip_to_slot_or_del(W, slot_wear_id) message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE!", 1) log_admin("[key_name(usr)] used there can be only one.") \ No newline at end of file diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 8dc9d9d9b3a..71c8b782a3b 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -41,29 +41,29 @@ M.adjustBruteLoss(src.corpsebrute) M.adjustOxyLoss(src.corpseoxy) if(src.corpseuniform) - M.equip_to_slot_or_qdel(new src.corpseuniform(M), slot_w_uniform) + M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) if(src.corpsesuit) - M.equip_to_slot_or_qdel(new src.corpsesuit(M), slot_wear_suit) + M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) if(src.corpseshoes) - M.equip_to_slot_or_qdel(new src.corpseshoes(M), slot_shoes) + M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) if(src.corpsegloves) - M.equip_to_slot_or_qdel(new src.corpsegloves(M), slot_gloves) + M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves) if(src.corpseradio) - M.equip_to_slot_or_qdel(new src.corpseradio(M), slot_ears) + M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears) if(src.corpseglasses) - M.equip_to_slot_or_qdel(new src.corpseglasses(M), slot_glasses) + M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) if(src.corpsemask) - M.equip_to_slot_or_qdel(new src.corpsemask(M), slot_wear_mask) + M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) if(src.corpsehelmet) - M.equip_to_slot_or_qdel(new src.corpsehelmet(M), slot_head) + M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) if(src.corpsebelt) - M.equip_to_slot_or_qdel(new src.corpsebelt(M), slot_belt) + M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) if(src.corpsepocket1) - M.equip_to_slot_or_qdel(new src.corpsepocket1(M), slot_r_store) + M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store) if(src.corpsepocket2) - M.equip_to_slot_or_qdel(new src.corpsepocket2(M), slot_l_store) + M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store) if(src.corpseback) - M.equip_to_slot_or_qdel(new src.corpseback(M), slot_back) + M.equip_to_slot_or_del(new src.corpseback(M), slot_back) if(src.corpseid == 1) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card ([corpseidjob])" @@ -83,7 +83,7 @@ if(corpseidjob) W.assignment = corpseidjob W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) qdel(src) /obj/effect/landmark/corpse/AICorpse/createCorpse() //Creates a corrupted AI diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index 9339f3b2d38..2cf66afd290 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -361,21 +361,21 @@ ________________________________________________________________________________ qdel(gloves) var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src) - equip_to_slot_or_qdel(R, slot_ears) + equip_to_slot_or_del(R, slot_ears) if(gender==FEMALE) - equip_to_slot_or_qdel(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform) else - equip_to_slot_or_qdel(new /obj/item/clothing/under/color/black(src), slot_w_uniform) - equip_to_slot_or_qdel(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes) - equip_to_slot_or_qdel(new /obj/item/clothing/suit/space/space_ninja(src), slot_wear_suit) - equip_to_slot_or_qdel(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) - equip_to_slot_or_qdel(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) - equip_to_slot_or_qdel(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask) - equip_to_slot_or_qdel(new /obj/item/device/flashlight(src), slot_belt) - equip_to_slot_or_qdel(new /obj/item/weapon/plastique(src), slot_r_store) - equip_to_slot_or_qdel(new /obj/item/weapon/plastique(src), slot_l_store) - equip_to_slot_or_qdel(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) - equip_to_slot_or_qdel(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) + equip_to_slot_or_del(new /obj/item/clothing/under/color/black(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(src), slot_shoes) + equip_to_slot_or_del(new /obj/item/clothing/suit/space/space_ninja(src), slot_wear_suit) + equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(src), slot_gloves) + equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(src), slot_head) + equip_to_slot_or_del(new /obj/item/clothing/mask/gas/voice/space_ninja(src), slot_wear_mask) + equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_belt) + equip_to_slot_or_del(new /obj/item/weapon/plastique(src), slot_r_store) + equip_to_slot_or_del(new /obj/item/weapon/plastique(src), slot_l_store) + equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) + equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(src) E.imp_in = src diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index f0cfd8df268..d8ed0f5b74b 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -916,12 +916,12 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 if(prob(50)) G.gender = "female" hardset_dna(G, null, null, null, "adamantine") G.real_name = text("Adamantine Golem ([rand(1, 1000)])") - G.equip_to_slot_or_qdel(new /obj/item/clothing/under/golem(G), slot_w_uniform) - G.equip_to_slot_or_qdel(new /obj/item/clothing/suit/golem(G), slot_wear_suit) - G.equip_to_slot_or_qdel(new /obj/item/clothing/shoes/golem(G), slot_shoes) - G.equip_to_slot_or_qdel(new /obj/item/clothing/mask/breath/golem(G), slot_wear_mask) - G.equip_to_slot_or_qdel(new /obj/item/clothing/gloves/golem(G), slot_gloves) - //G.equip_to_slot_or_qdel(new /obj/item/clothing/head/space/golem(G), slot_head) + G.equip_to_slot_or_del(new /obj/item/clothing/under/golem(G), slot_w_uniform) + G.equip_to_slot_or_del(new /obj/item/clothing/suit/golem(G), slot_wear_suit) + G.equip_to_slot_or_del(new /obj/item/clothing/shoes/golem(G), slot_shoes) + G.equip_to_slot_or_del(new /obj/item/clothing/mask/breath/golem(G), slot_wear_mask) + G.equip_to_slot_or_del(new /obj/item/clothing/gloves/golem(G), slot_gloves) + //G.equip_to_slot_or_del(new /obj/item/clothing/head/space/golem(G), slot_head) G.loc = src.loc G.key = ghost.key G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost." diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index c94683f4672..25f65ee9990 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -35,29 +35,29 @@ M.real_name = src.name M.stat = 2 //Kills the new mob if(src.corpseuniform) - M.equip_to_slot_or_qdel(new src.corpseuniform(M), slot_w_uniform) + M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) if(src.corpsesuit) - M.equip_to_slot_or_qdel(new src.corpsesuit(M), slot_wear_suit) + M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) if(src.corpseshoes) - M.equip_to_slot_or_qdel(new src.corpseshoes(M), slot_shoes) + M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) if(src.corpsegloves) - M.equip_to_slot_or_qdel(new src.corpsegloves(M), slot_gloves) + M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves) if(src.corpseradio) - M.equip_to_slot_or_qdel(new src.corpseradio(M), slot_ears) + M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears) if(src.corpseglasses) - M.equip_to_slot_or_qdel(new src.corpseglasses(M), slot_glasses) + M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) if(src.corpsemask) - M.equip_to_slot_or_qdel(new src.corpsemask(M), slot_wear_mask) + M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) if(src.corpsehelmet) - M.equip_to_slot_or_qdel(new src.corpsehelmet(M), slot_head) + M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) if(src.corpsebelt) - M.equip_to_slot_or_qdel(new src.corpsebelt(M), slot_belt) + M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) if(src.corpsepocket1) - M.equip_to_slot_or_qdel(new src.corpsepocket1(M), slot_r_store) + M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store) if(src.corpsepocket2) - M.equip_to_slot_or_qdel(new src.corpsepocket2(M), slot_l_store) + M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store) if(src.corpseback) - M.equip_to_slot_or_qdel(new src.corpseback(M), slot_back) + M.equip_to_slot_or_del(new src.corpseback(M), slot_back) if(src.corpseid == 1) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" @@ -77,7 +77,7 @@ if(corpseidjob) W.assignment = corpseidjob W.registered_name = M.real_name - M.equip_to_slot_or_qdel(W, slot_wear_id) + M.equip_to_slot_or_del(W, slot_wear_id) qdel(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 361aef49c94..b4c410aedb9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -172,7 +172,7 @@ var/next_mob_id = 0 return 0 //This is a SAFE proc. Use this instead of equip_to_splot()! -//set del_on_fail to have it delete W if it fails to equip +//set qdel_on_fail to have it delete W if it fails to equip //set disable_warning to disable the 'you are unable to equip that' warning. //unset redraw_mob to prevent the mob from being redrawn at the end. /mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, qdel_on_fail = 0, disable_warning = 0, redraw_mob = 1) @@ -182,7 +182,7 @@ var/next_mob_id = 0 qdel(W) else if(!disable_warning) - src << "\red You are unable to equip that." //Only print if del_on_fail is false + src << "\red You are unable to equip that." //Only print if qdel_on_fail is false return 0 equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail. return 1 @@ -193,7 +193,7 @@ var/next_mob_id = 0 return //This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. -/mob/proc/equip_to_slot_or_qdel(obj/item/W as obj, slot) +/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) equip_to_slot_if_possible(W, slot, 1, 1, 0) //The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. From 20027aa4428ff37855defa7faedd8fe137d1cefb Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 3 Mar 2014 01:16:21 -0800 Subject: [PATCH 016/102] Fix a use_power() runtime if the object was in nullspace (was qdel()'d) Also remove some debug shit in atmospherics I left around. --- code/ATMOSPHERICS/atmospherics.dm | 35 ------------------------------- code/modules/power/power.dm | 2 +- 2 files changed, 1 insertion(+), 36 deletions(-) diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 82e726f61e4..4da786ef77b 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -28,41 +28,6 @@ obj/machinery/atmospherics/process() return PROCESS_KILL build_network() -/* -obj/machinery/atmospherics/Destroy() - - worldm << "Pre Destroy()" - test_pipenet() - ..() - world << "Post Destroy()" - test_pipenet() - -obj/machinery/atmospherics/verb/test_pipenet() - set src in view() - var/found = 0 - var/srcref = "\ref[src]" - var/netref = "" - var/pipelineref = "" - for(var/datum/pipe_network/Network in pipe_networks) - netref = "\ref[Network]" - for(var/obj/machinery/atmospherics/AT in Network.normal_members) - if(AT == src) - world << "Found [srcref] - [src.type] in normal_members of pipenet#[netref]" - found++ - for(var/datum/pipeline/PL in Network.line_members) - pipelineref = "\ref[PL]" - for(var/obj/machinery/atmospherics/AT in PL.members) - if(AT == src) - world << "Found [srcref] - [src.type] in members of pipeline#[pipelineref] in pipenet#[netref]" - found++ - for(var/obj/machinery/atmospherics/ATE in PL.edges) - if(ATE == src) - world << "Found [srcref] - [src.type] in edges of pipeline#[pipelineref] in pipenet#[netref]" - found++ - if(!found) - world << "Unable to find [srcref] in any pipenets" -*/ - obj/machinery/atmospherics/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) // Check to see if should be added to network. Add self if so and adjust variables appropriately. // Note don't forget to have neighbors look as well! diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index f96a76779ab..2509075a27b 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -58,7 +58,7 @@ // increment the power usage stats for an area /obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel - var/area/A = src.loc.loc // make sure it's in an area + var/area/A = get_area(src) // make sure it's in an area if(!A || !isarea(A) || !A.master) return if(chan == -1) From d784ce89412e15fedac1ee09a8ff0f9e2e8a8464 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 3 Mar 2014 02:49:57 -0800 Subject: [PATCH 017/102] Remove a debug qdel() command. Made atmos_alert computers GC (hopefully) and not runtime (known). --- code/controllers/garbage.dm | 4 ++-- code/game/machinery/computer/atmos_alert.dm | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index b627c0ae768..0aa057ecf22 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -111,14 +111,14 @@ var/list/uncollectable_vars=list( for(var/atom/movable/everything in world) qdel(everything) */ - +/* // Uncomment this verb and run it on things to report blockages. /atom/verb/qdel_test() set name = "qdel with test" set category = "Debug" set background = 1 set src in world -/* + qdel(src) for(var/datum/everything) //Yes this works. for(var/everyvar in everything.vars) diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 614933c0635..428d8384235 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -16,6 +16,10 @@ ..() set_frequency(receive_frequency) +/obj/machinery/computer/atmos_alert/Destroy() + radio_controller.remove_object(src, receive_frequency) + ..() + /obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal) if(!signal || signal.encryption) return From a74cdf1da223c2875c83d10b75b2ff67b060d31b Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 3 Mar 2014 03:45:59 -0800 Subject: [PATCH 018/102] Made the singulo only qdel things once. Woops. This was causing some runtimes and doubled reporting "Emitter deleted at (0,0,0)" etc. --- code/modules/power/singularity/singularity.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 7383574951b..a11bb4e97ad 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -276,7 +276,8 @@ var/global/list/uneatable = list( O.z = 2 else A.ex_act(1.0) - if(A) qdel(A) + if(A && isnull(A.gc_destroyed)) + qdel(A) gain = 2 else if(isturf(A)) var/turf/T = A From 80a7a2abb496ab6122045fa816ff16f13ed96d6b Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 3 Mar 2014 04:51:09 -0800 Subject: [PATCH 019/102] Replaced a few more Del() and del() calls Removed cigarette related reagent deleting. It's already done in atom/Destroy()! --- code/controllers/shuttle_controller.dm | 2 +- code/game/machinery/shieldgen.dm | 2 +- code/game/objects/items/devices/lightreplacer.dm | 2 +- code/game/objects/items/devices/uplinks.dm | 2 +- code/game/objects/items/weapons/cigs_lighters.dm | 4 ---- code/game/objects/items/weapons/flamethrower.dm | 2 +- code/game/objects/items/weapons/storage/fancy.dm | 5 ----- code/game/objects/items/weapons/table_rack_parts.dm | 4 ++-- code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/window.dm | 6 +++--- code/modules/hydroponics/hydroponics.dm | 2 +- code/modules/library/lib_items.dm | 2 +- 12 files changed, 13 insertions(+), 22 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 0ee9264a211..acefa9c1d93 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -193,7 +193,7 @@ datum/shuttle_controller sleep(speed) step(src, direction) for(var/obj/effect/starender/E in loc) - del(src) + qdel(src) /obj/effect/starender diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 5339eaa3757..855ca45dc7b 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -121,7 +121,7 @@ //Handle the destruction of the shield if (src.health <= 0) visible_message("\blue The [src] dissapates") - del(src) + qdel(src) return //The shield becomes dense to absorb the blow.. purely asthetic. diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index b551c23c821..9c6dbbdb37c 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -86,7 +86,7 @@ G.amount = remaining if(!G.amount) user.drop_item() - del(G) + qdel(G) AddUses(increment) user << "You insert a piece of glass into the [src.name]. You have [uses] lights remaining." return diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 6a681816ad7..770a1159de5 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -25,7 +25,7 @@ var/list/world_uplinks = list() welcome = ticker.mode.uplink_welcome uses = ticker.mode.uplink_uses -/obj/item/device/uplink/Del() +/obj/item/device/uplink/Destroy() world_uplinks-=src ..() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index cfee2bba557..35f0eadaa47 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -80,10 +80,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM flags |= NOREACT // so it doesn't react until you light it create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15 -/obj/item/clothing/mask/cigarette/Destroy() - del(reagents) - ..() - /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index de28bde61e6..4fdfba975c5 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -21,7 +21,7 @@ var/obj/item/weapon/tank/plasma/ptank = null -/obj/item/weapon/flamethrower/Del() +/obj/item/weapon/flamethrower/Destroy() if(weldtool) qdel(weldtool) if(igniter) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 8b4ccbf48f6..96375165496 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -163,11 +163,6 @@ new /obj/item/clothing/mask/cigarette(src) create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one -/obj/item/weapon/storage/fancy/cigarettes/Destroy() - del(reagents) - ..() - - /obj/item/weapon/storage/fancy/cigarettes/update_icon() icon_state = "[initial(icon_state)][contents.len]" desc = "There are [contents.len] cig\s left!" diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index d999b2ba21c..0dd98f20695 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -40,12 +40,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) new /obj/item/stack/rods( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob) new /obj/structure/table/reinforced( user.loc ) user.drop_item() - del(src) + qdel(src) return /* diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 9137ebbc52c..9e892238681 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -107,7 +107,7 @@ else new /obj/item/stack/rods(loc) new /obj/item/stack/rods(loc) - del(src) + qdel(src) else if((istype(W, /obj/item/weapon/screwdriver)) && (istype(loc, /turf/simulated) || anchored)) if(!shock(user, 90)) playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 712c8f3a7ff..9b511b88559 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -189,7 +189,7 @@ G = new (user.loc) G.add_fingerprint(user) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.Del(1) + qdel(src) else if(I.damtype == BRUTE || I.damtype == BURN) hit(I.force) @@ -303,10 +303,10 @@ return -/obj/structure/window/Destroy(quiet) +/obj/structure/window/Destroy() density = 0 air_update_turf(1) - if(!quiet)playsound(src, "shatter", 70, 1) + if(anchored)playsound(src, "shatter", 70, 1) update_nearby_icons() ..() diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index c72e6704110..c660de9c68f 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -1052,4 +1052,4 @@ obj/machinery/hydroponics/constructable/attackby(var/obj/item/O as obj, var/mob/ ..() if(istype(O, /obj/item/weapon/shovel)) user << "You clear up [src]!" - del(src) + qdel(src) diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 866fd510645..1923fa230b2 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -116,7 +116,7 @@ b.loc = (get_turf(src)) else qdel(b) - del(src) + qdel(src) if(3.0) if(prob(50)) for(var/obj/item/weapon/book/b in contents) From 1ff2cd3e923b4508867aa47cc9921e9be3c34887 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 3 Mar 2014 05:47:17 -0800 Subject: [PATCH 020/102] Somehow the box away code file got unticked. --- code/modules/awaymissions/mission_code/box2550Away.dm | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 code/modules/awaymissions/mission_code/box2550Away.dm diff --git a/code/modules/awaymissions/mission_code/box2550Away.dm b/code/modules/awaymissions/mission_code/box2550Away.dm new file mode 100644 index 00000000000..e69de29bb2d From 2159f93b63bed159e629751567fdb2aed4489904 Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 4 Mar 2014 13:55:42 -0500 Subject: [PATCH 021/102] Moves the code for returning an animate statue to flesh to the statue structure from the statue mob. It will be less checked for here, as it will only look when the timer runs out on the statue structure. Adds a message to getting unstoned so shitlers don't try to argue that they're still antags. --- .../structures/crates_lockers/closets/statue.dm | 11 +++++++++++ .../mob/living/simple_animal/hostile/statue.dm | 7 ------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index fc5ba425f09..390c9d09f40 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -61,6 +61,17 @@ /obj/structure/closet/statue/dump_contents() + if(istype(src.loc, /mob/living/simple_animal/hostile/statue)) + var/mob/living/simple_animal/hostile/statue/S = src.loc + src.loc = S.loc + if(S.mind) + for(var/mob/M in contents) + S.mind.transfer_to(M) + M << "As the animating magic wears off you feel yourself coming back to your senses. You are yourself again!" + break + del(S) + + for(var/obj/O in src) O.loc = src.loc diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 725a21cc0ba..b849f04a076 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -81,13 +81,6 @@ if(get_dist(watching, src) > get_dist(target, src)) LoseTarget() GiveTarget(watching) - for(var/obj/structure/closet/statue/S in contents) - if(S.timer <= 10) - S.loc = src.loc - if(mind) - for(var/mob/M in S.contents) - mind.transfer_to(M) - del(src) /mob/living/simple_animal/hostile/statue/AttackingTarget() if(!can_be_seen()) From 47322658f848009d4c194909228d37d66171cc3c Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 7 Mar 2014 07:59:30 +0400 Subject: [PATCH 022/102] Part 1 --- code/game/machinery/atmo_control.dm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 96ca9d3073a..ddf805b85ad 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -180,7 +180,7 @@ obj/machinery/computer/general_air_control/large_tank_control var/pressure_setting = ONE_ATMOSPHERE * 45 -obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob/user) +obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob/user) //This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this var/list/IO = list() var/list/devices = radio_connection.devices["_default"] for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) @@ -196,6 +196,16 @@ obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob src.input_tag = "[S]_in" src.output_tag = "[S]_out" name = "[uppertext(S)] Supply Control" + devices = radio_connection.devices["4"] + for(var/obj/machinery/air_sensor/U in devices) + world << "[U.id_tag]" + var/list/text = text2list(U.id_tag, "_") + if(text[1] == S) + sensors = list("[S]_sensor" = "Tank") + break + + devices = radio_connection.devices["_default"] + for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) U.broadcast_status() From 5c3f7777b9ad47887101e0f36838960b74789bc6 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 8 Mar 2014 17:30:40 -0500 Subject: [PATCH 023/102] Magic Mania 1.5: Big Trouble in Little Boxstation --- A Few New Wizard Items Staff of Chaos: Shoots random magic bolts. Charges faster and can hold more shots than other staves. Staff of Door Creation: Works the same as the wand of door creation. There is apparently demand for this! Charges faster and can hold more shots than other staves. Wand Assortment: A belt that comes of one of each useful wand, generated with the highest number of shots possible. --- Cleaning Up the Spellbook The spellbook was getting REALLY long, so it's been segmented into pages for spells, items, and one time use spells (aka the fun page). The spellbook also highlights the fact that you can upgrade spells better now. --- Summon Magic Rebalancing There's now a new catagory of magic items that are especially potent. These have a very low chance of showing up now and only one can spawn during a casting of summon magic, if one even spawns at all. The person who gets it is not guarenteed to be a surivor either. In this category: Staff of Animation, Staff of Change, Staff of Chaos, Wand Assortment, Contract of Apprenticeship. Additionally the staff of door creation is now in the normal pool and the staff of change is no longer in the normal pool. --- Misc Stuff Adds Bats and Goats to the staff of change. Changes the charge spell so if you charge something that can charge on its own there's no chance of degradation. --- code/datums/spells/charge.dm | 2 +- code/game/gamemodes/wizard/rightandwrong.dm | 30 +++++-- code/game/gamemodes/wizard/spellbook.dm | 88 ++++++++++++++++--- .../objects/items/weapons/storage/belt.dm | 23 +++++ .../modules/projectiles/ammunition/special.dm | 7 ++ code/modules/projectiles/guns/magic/staff.dm | 19 ++++ code/modules/projectiles/projectile/magic.dm | 4 +- 7 files changed, 152 insertions(+), 21 deletions(-) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 0a524b004b7..4bf170288ce 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -45,7 +45,7 @@ break else if(istype(item, /obj/item/weapon/gun/magic)) var/obj/item/weapon/gun/magic/I = item - if(prob(80)) + if(prob(80) && !I.can_charge) I.max_charges-- if(I.max_charges <= 0) I.max_charges = 0 diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 641f27c0317..0097faa46fc 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,6 +1,10 @@ /mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic + var/list/gunslist = list("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") + var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying", "staffdoor", "special") + var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos") + usr << "You summoned [summon_type ? "magic" : "guns"]!" message_admins("[key_name_admin(usr, 1)] summoned [summon_type ? "magic" : "guns"]!") log_game("[key_name(usr)] summoned [summon_type ? "magic" : "guns"]!") @@ -20,8 +24,9 @@ for(var/datum/objective/OBJ in H.mind.objectives) H << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - var/randomizeguns = pick("taser","egun","laser","revolver","detective","smg","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","mateba","smg","uzi","crossbow","saw") - var/randomizemagic = pick("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying") + var/randomizeguns = pick(gunslist) + var/randomizemagic = pick(magiclist) + var/randomizemagicspecial = pick(magicspeciallist) if(!summon_type) switch (randomizeguns) if("taser") @@ -95,10 +100,10 @@ new /obj/item/weapon/gun/magic/wand/teleport(get_turf(H)) if("wanddoor") new /obj/item/weapon/gun/magic/wand/door(get_turf(H)) - if("staffchange") - new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) if("staffhealing") new /obj/item/weapon/gun/magic/staff/healing(get_turf(H)) + if("staffdoor") + new /obj/item/weapon/gun/magic/staff/door(get_turf(H)) if("armor") new /obj/item/clothing/suit/space/rig/wizard(get_turf(H)) new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(H)) @@ -109,4 +114,19 @@ H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) H.see_in_dark = 8 H.see_invisible = SEE_INVISIBLE_LEVEL_TWO - H << "\blue The walls suddenly disappear." + H << "The walls suddenly disappear." + + if("special") + magiclist -= "special" //only one super OP item per summoning max + switch (randomizemagicspecial) + if("staffchange") + new /obj/item/weapon/gun/magic/staff/change(get_turf(H)) + if("staffanimation") + new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) + if("wandbelt") + new /obj/item/weapon/storage/belt/wands/full(get_turf(H)) + if("contract") + new /obj/item/weapon/antag_spawner/contract(get_turf(H)) + if("staffchaos") + new /obj/item/weapon/gun/magic/staff/chaos(get_turf(H)) + H << "You suddenly feel lucky." \ No newline at end of file diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 33a93e602e0..457006c5d10 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -10,6 +10,7 @@ var/temp = null var/max_uses = 5 var/op = 1 + var/activepage /obj/item/weapon/spellbook/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/weapon/antag_spawner/contract)) @@ -30,12 +31,23 @@ var/dat if(temp) dat = "[temp]

    Clear" - else - dat = "The Book of Spells:
    " - dat += "Spells left to memorize: [uses]
    " + else if (!activepage || activepage == "return") + dat = "The Book of Magic:
    " + dat += "Uses remaining: [uses]
    " + dat += "
    " + dat += "Learn and Improve Magical Abilities
    " + dat += "Summon Magical Tools and Weapons
    " + dat += "Cast Powerful One Time Spells
    " + + dat += "
    " + dat += "Re-memorize Spells
    " + + else if (activepage == "spells") + dat += "Spells:
    " + dat += "Spells that can be reused endlessly. Unless stated otherwise all spells require full wizard garb as a focus.
    " + dat += "The number after the spell name is the cooldown time. You can reduce this number by spending more points on the spell.
    " + dat += "
    " - dat += "Memorize which spell:
    " - dat += "The number after the spell name is the cooldown time.
    " dat += "Magic Missile (15)
    " dat += "This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage.
    " @@ -82,6 +94,18 @@ dat += "Flesh to Stone (60)
    " dat += "This spell will curse a person to immediately turn into an unmoving statue. The effect will eventually wear off if the statue is not destroyed.
    " + dat += "
    " + + dat += "Return
    " + + else if (activepage == "oneuse") + + dat += "One Time Spells:
    " + dat += "These potent spells can only be used once and will be used automatically upon purchase.
    " + dat += "The effects are global and irreversable, these spells cannot be unlearned, but they can be bought multiple times.
    " + + dat += "
    " + dat += "Summon Guns (One time use, global spell)
    " dat += "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!
    " @@ -89,25 +113,42 @@ dat += "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time.
    " dat += "
    " - dat += "Artefacts:
    " - dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.
    " - dat += "It is recommended that only experienced wizards attempt to wield such artefacts.
    " + + dat += "Return
    " + + else if (activepage == "artifacts") + + dat += "Artifacts:
    " + dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of uses.
    " + dat += "These items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
    " dat += "
    " dat += "Staff of Change
    " dat += "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself.
    " dat += "
    " + dat += "Staff of Animation
    " + dat += "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines.
    " + dat += "
    " + + dat += "Staff of Door Creation
    " + dat += "A particular staff that can mold solid metal into ornate wooden doors. Useful for getting around in the absence of other transportation. Does not work on glass.
    " + dat += "
    " + + dat += "Staff of Chaos
    " + dat += "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended.
    " + dat += "
    " + dat += "Six Soul Stone Shards and the spell Artificer
    " dat += "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot.
    " dat += "
    " - dat += "Mastercrafted Armor Set
    " - dat += "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space.
    " + dat += "Wand Assortment
    " + dat += "A collection of wands that allow for a wide variety of utility. Wands do not recharge, so be conservative in use. Comes in a handy belt.
    " dat += "
    " - dat += "Staff of Animation
    " - dat += "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines.
    " + dat += "Mastercrafted Armor Set
    " + dat += "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space.
    " dat += "
    " dat += "Contract of Apprenticeship
    " @@ -118,7 +159,8 @@ dat += "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision.
    " dat += "
    " - dat += "Re-memorize Spells
    " + + dat += "Return
    " user << browse(dat, "window=radio") onclose(user, "radio") return @@ -148,11 +190,13 @@ feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells else temp = "You may only re-memorize spells whilst located inside the wizard sanctuary." + else if(href_list["spell_choice"] == "spells" || href_list["spell_choice"] == "artifacts" || href_list["spell_choice"] == "oneuse" || href_list["spell_choice"] == "return") + activepage = href_list["spell_choice"] else if(uses >= 1 && max_uses >=1) uses-- /* */ - var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", summonmagic = "Summon Magic", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation") + var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonguns = "Summon Guns", summonmagic = "Summon Magic", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation", staffchaos = "Staff of Chaos", staffdoor = "Staff of Door Creation", wands = "Wand Assortment") var/already_knows = 0 for(var/obj/effect/proc_holder/spell/aspell in H.mind.spell_list) if(available_spells[href_list["spell_choice"]] == initial(aspell.name)) @@ -280,6 +324,21 @@ new /obj/item/weapon/gun/magic/staff/animate(get_turf(H)) temp = "You have purchased a staff of animation." max_uses-- + if("staffchaos") + feedback_add_details("wizard_spell_learned","SC") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/gun/magic/staff/chaos(get_turf(H)) + temp = "You have purchased a staff of chaos." + max_uses-- + if("staffdoor") + feedback_add_details("wizard_spell_learned","SD") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/gun/magic/staff/door(get_turf(H)) + temp = "You have purchased a staff of door creation." + max_uses-- + if("wands") + feedback_add_details("wizard_spell_learned","WA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/weapon/storage/belt/wands/full(get_turf(H)) + temp = "You have purchased an assortment of wands." + max_uses-- if("contract") feedback_add_details("wizard_spell_learned","CT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells new /obj/item/weapon/antag_spawner/contract(get_turf(H)) @@ -299,6 +358,7 @@ else if(href_list["temp"]) temp = null + activepage = null attack_self(H) return diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 0d145f54a2c..a36e5770eee 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -152,3 +152,26 @@ desc = "A syndicate belt designed to be used by boarding parties. Its style is modeled after the hardsuits they wear." icon_state = "militarybelt" item_state = "military" + +/obj/item/weapon/storage/belt/wands + name = "wand belt" + desc = "A belt designed to hold various rods of power. A veritable fanny pack of exotic magic." + icon_state = "soulstonebelt" + item_state = "soulstonebelt" + storage_slots = 6 + can_hold = list( + "/obj/item/weapon/gun/magic/wand" + ) + +/obj/item/weapon/storage/belt/wands/full/New() + ..() + new /obj/item/weapon/gun/magic/wand/death(src) + new /obj/item/weapon/gun/magic/wand/resurrection(src) + new /obj/item/weapon/gun/magic/wand/polymorph(src) + new /obj/item/weapon/gun/magic/wand/teleport(src) + new /obj/item/weapon/gun/magic/wand/door(src) + new /obj/item/weapon/gun/magic/wand/fireball(src) + + for(var/obj/item/weapon/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition + W.max_charges = initial(W.max_charges) + W.charges = W.max_charges \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index e530d7c2fca..fb68b624499 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -24,6 +24,13 @@ /obj/item/ammo_casing/magic/fireball projectile_type = /obj/item/projectile/magic/fireball +/obj/item/ammo_casing/magic/chaos + projectile_type = /obj/item/projectile/magic + +/obj/item/ammo_casing/magic/chaos/newshot() + projectile_type = pick(typesof(/obj/item/projectile/magic)) + ..() + /obj/item/ammo_casing/syringegun name = "syringe gun spring" desc = "A high-power spring that throws syringes." diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index a07ea02d7c9..9c6f0209e69 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -21,3 +21,22 @@ obj/item/weapon/gun/magic/staff/healing ammo_type = /obj/item/ammo_casing/magic/heal icon_state = "staffofhealing" item_state = "staffofhealing" + +obj/item/weapon/gun/magic/staff/chaos + name = "staff of chaos" + desc = "An artefact that spits bolts of chaotic magic that can potentially do anything." + ammo_type = /obj/item/ammo_casing/magic/chaos + icon_state = "staffofhealing" + item_state = "staffofhealing" + max_charges = 10 + recharge_rate = 2 + +obj/item/weapon/gun/magic/staff/door + name = "staff of door creation" + desc = "An artefact that spits bolts of transformative magic that can create doors in walls." + ammo_type = /obj/item/ammo_casing/magic/door + icon_state = "staffofhealing" + item_state = "staffofhealing" + max_charges = 10 + recharge_rate = 2 + diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 21bc7bf5ce6..dad28a03150 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -166,12 +166,14 @@ proc/wabbajack(mob/living/M) new_mob.universal_speak = 1*/ if("animal") if(prob(50)) - var/beast = pick("carp","bear","mushroom","statue") + var/beast = pick("carp","bear","mushroom","statue", "bat", "goat") switch(beast) if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc) if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc) + if("bat") new_mob = new /mob/living/simple_animal/hostile/retaliate/bat(M.loc) + if("goat") new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc) else var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick") switch(animal) From e55a9204f3fd77bd90ccb3a3a5d02726ac7964a4 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 9 Mar 2014 03:12:32 +0400 Subject: [PATCH 024/102] General cryo and unary atmos machinery fix Fixes cryo and other unary atmos machinery connection fuckery Cryo now doesnt freeze the dead/fullhealth people and ejected people dont get frostbiten --- .../components/unary/unary_base.dm | 9 +++++++++ code/game/machinery/Freezer.dm | 10 ---------- code/game/machinery/cryo.dm | 8 +++----- icons/obj/cryogenics.dmi | Bin 24862 -> 24929 bytes 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 786cf73d3b2..e92a64c4890 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -53,6 +53,14 @@ update_icon() + default_change_direction_wrench(mob/user, /obj/item/weapon/wrench/W) + if(..()) + initialize_directions = dir + if(node) + disconnect(node) + initialize() + . = 1 + build_network() if(!network && node) network = new /datum/pipe_network() @@ -84,6 +92,7 @@ disconnect(obj/machinery/atmospherics/reference) if(reference==node) + node.disconnect(src) del(network) node = null diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm index 6ff53810416..dee7d132a28 100644 --- a/code/game/machinery/Freezer.dm +++ b/code/game/machinery/Freezer.dm @@ -43,11 +43,6 @@ default_deconstruction_crowbar(I) if(default_change_direction_wrench(user, I)) - if(node) - disconnect(node) - initialize() - if(node) - node.update_icon() return /obj/machinery/atmospherics/unary/cold_sink/freezer/update_icon() @@ -165,11 +160,6 @@ default_deconstruction_crowbar(I) if(default_change_direction_wrench(user, I)) - if(node) - disconnect(node) - initialize() - if(node) - node.update_icon() return /obj/machinery/atmospherics/unary/heat_reservoir/heater/update_icon() diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 646c4e1c616..0db68214f84 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -227,11 +227,6 @@ return if(default_change_direction_wrench(user, I)) - if(node) - disconnect(node) - initialize() - if(node) - node.update_icon() return if(exchange_parts(user, I)) @@ -242,6 +237,8 @@ /obj/machinery/atmospherics/unary/cryo_cell/open_machine() if(!state_open && !panel_open) layer = 3 + if(occupant) + occupant.bodytemperature = T0C ..() if(beaker) beaker.loc = src @@ -273,6 +270,7 @@ return if(occupant) if(occupant.stat == 2 || occupant.health >= 100) //Why waste energy on dead or healthy people + occupant.bodytemperature = T0C return occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature) * current_heat_capacity / (current_heat_capacity + air_contents.heat_capacity()) occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise diff --git a/icons/obj/cryogenics.dmi b/icons/obj/cryogenics.dmi index b4f68b30bad6d4aebaf357c0d100162b9646ae50..1159725b91a0723356823acb52ba8f55c5446070 100644 GIT binary patch literal 24929 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 R&jNO6OpPoJ8}vP3{|`Cd9SZ;e literal 24862 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 Date: Sat, 8 Mar 2014 23:26:33 -0800 Subject: [PATCH 025/102] Stat number of dels per tick More del(AM) -> qdel(AM) --- code/controllers/garbage.dm | 22 +++++++--------------- code/game/machinery/kitchen/smartfridge.dm | 2 +- code/modules/mob/mob.dm | 2 +- code/modules/research/circuitprinter.dm | 2 +- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 0aa057ecf22..95ed79b2723 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -18,6 +18,7 @@ var/list/uncollectable_vars=list( // I dunno how many are necessary but since most of these are numbers anyways, I don't care. /datum/controller/garbage_collector + var/dels = 0 // number of del()'s we've done this tick var/list/queue = list() // list of things that have yet to have all their vars nulled out var/list/destroyed = list() // list of refID's of things that should be garbage collected // refID's are associated with the time at which they time out and need to be manually del() @@ -38,6 +39,7 @@ var/list/uncollectable_vars=list( if(!istype(A,/atom/movable)) // testing("GC: -- Pop() given [A.type] --") queue.Cut(1, 2) + dels++ del(A) return for(var/vname in A.vars) @@ -54,8 +56,8 @@ var/list/uncollectable_vars=list( queue.Cut(1, 2) /datum/controller/garbage_collector/proc/process() + dels = 0 var/i - var/dels = 0 for(i = 1, queue.len && i <= GC_COLLECTIONS_PER_TICK, i++) Pop() var/time_to_kill = world.time - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() @@ -88,29 +90,19 @@ var/list/uncollectable_vars=list( /proc/qdel(var/atom/movable/A) if(!A) return - if(!istype(A)) - warning("qdel() passed object of type [A.type]. qdel() can only handle /atom/movable types.") + if(!garbage) del(A) return - if(!garbage) + if(!istype(A)) + warning("qdel() passed object of type [A.type]. qdel() can only handle /atom/movable types.") + garbage.dels++ del(A) return // Let our friend know they're about to get fucked up. A.Destroy() garbage.AddTrash(A) -/* // If you can get this to run, report the results please. -/client/verb/delete_everything() - set name = "qdel() everything" - set category = "Debug" - set background = 1 - if(input("Are you sure you want to do that?") as null|anything in list("Yes","No") != "Yes") - return - src << "qdel(everything)" - for(var/atom/movable/everything in world) - qdel(everything) -*/ /* // Uncomment this verb and run it on things to report blockages. /atom/verb/qdel_test() diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index b3672caa522..a2b378ba426 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -267,7 +267,7 @@ obj/machinery/smartfridge/drying_rack/load() //For updating the filled overlay else var/dried = S.dried_type new dried(src.loc) - del S + qdel(S) return 1 return 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 874c5413508..bc0a1b4fc6e 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -602,7 +602,7 @@ var/list/slot_equipment_priority = list( \ stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]") stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]") stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]") - stat(null,"GC-[master_controller.gc_cost]\t#[garbage.queue.len]-[garbage.destroyed.len]") + stat(null,"GC-[master_controller.gc_cost]\t#[garbage.destroyed.len + garbage.queue.len]-#dels[garbage.dels]") stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]") else stat(null,"MasterController-ERROR") diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index d827cdda3a1..d2f0e73a597 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -44,7 +44,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). qdel(src) /obj/machinery/r_n_d/circuit_imprinter/meteorhit() - del(src) + qdel(src) return /obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, var/M) From 0fded86d802649d61e5fff453204b9b735f666d6 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 13 Mar 2014 11:44:16 -0300 Subject: [PATCH 026/102] Changes the asay log for the automatic shuttle call. And a minor bugfix, it used to check if the AI was dead AND disconnected. Now just one of the choices is enough. --- code/controllers/shuttle_controller.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 0ee9264a211..4169aeccb66 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -98,7 +98,7 @@ datum/shuttle_controller for(var/SC in shuttle_caller_list) if(istype(SC,/mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = SC - if(AI.stat && !AI.client) + if(AI.stat || !AI.client) continue var/turf/T = get_turf(SC) if(T && T.z == 1) @@ -111,8 +111,8 @@ datum/shuttle_controller if(callshuttle) if(!online && direction == 1) //we don't call the shuttle if it's already coming incall(SHUTTLEAUTOCALLTIMER) //X minutes! If they want to recall, they have X-(X-5) minutes to do so - log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.") - message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1) + log_game("All the comm consolers are destroyed and all AIs are inactive. Shuttle called.") + message_admins("All the comm consolers are destroyed and all AIs are inactive. Shuttle called.", 1) captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") world << sound('sound/AI/shuttlecalled.ogg') From 8bdfc0fa467e69c3677d6db9b4d901a923cc49e6 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Thu, 13 Mar 2014 11:46:32 -0300 Subject: [PATCH 027/102] typo fix in the automatic shuttle call asay log --- code/controllers/shuttle_controller.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 4169aeccb66..6f55a57c0fa 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -111,8 +111,8 @@ datum/shuttle_controller if(callshuttle) if(!online && direction == 1) //we don't call the shuttle if it's already coming incall(SHUTTLEAUTOCALLTIMER) //X minutes! If they want to recall, they have X-(X-5) minutes to do so - log_game("All the comm consolers are destroyed and all AIs are inactive. Shuttle called.") - message_admins("All the comm consolers are destroyed and all AIs are inactive. Shuttle called.", 1) + log_game("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") + message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.", 1) captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.") world << sound('sound/AI/shuttlecalled.ogg') From 49a53c660cea6efe019b63c1ae7bbb6b919f78d2 Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 14 Mar 2014 06:31:02 +0400 Subject: [PATCH 028/102] Body temperature fix --- code/game/machinery/cryo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 0db68214f84..b8e49dbfc7e 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -238,7 +238,7 @@ if(!state_open && !panel_open) layer = 3 if(occupant) - occupant.bodytemperature = T0C + occupant.bodytemperature = Clamp(occupant.bodytemperature, 261, 360) ..() if(beaker) beaker.loc = src From 30e4227b6718f615d794c542fcc3107384ea94bc Mon Sep 17 00:00:00 2001 From: Razharas Date: Fri, 14 Mar 2014 10:14:58 +0400 Subject: [PATCH 029/102] Final solution to the "atmos" question --- code/game/machinery/atmo_control.dm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index ddf805b85ad..959e1d5687a 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -117,6 +117,8 @@ obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal) var/id_tag = signal.data["tag"] if(!id_tag || !sensors.Find(id_tag)) return + sensor_information = list() + sensor_information[id_tag] = signal.data obj/machinery/computer/general_air_control/proc/return_text() @@ -135,7 +137,7 @@ obj/machinery/computer/general_air_control/proc/return_text() if(data["temperature"]) sensor_part += " Temperature: [data["temperature"]] K
    " if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) - sensor_part += " Gas Composition :" + sensor_part += " Gas Composition : " if(data["oxygen"]) sensor_part += "[data["oxygen"]]% O2; " if(data["nitrogen"]) @@ -182,7 +184,10 @@ obj/machinery/computer/general_air_control/large_tank_control obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob/user) //This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this var/list/IO = list() - var/list/devices = radio_connection.devices["_default"] + var/datum/radio_frequency/air_freq = radio_controller.return_frequency(1443) + var/datum/radio_frequency/gas_freq = radio_controller.return_frequency(1441) + var/list/devices = air_freq.devices["_default"] + devices |= gas_freq.devices["_default"] for(var/obj/machinery/atmospherics/unary/vent_pump/U in devices) var/list/text = text2list(U.id_tag, "_") IO |= text[1] @@ -196,15 +201,20 @@ obj/machinery/computer/general_air_control/large_tank_control/proc/reconnect(mob src.input_tag = "[S]_in" src.output_tag = "[S]_out" name = "[uppertext(S)] Supply Control" - devices = radio_connection.devices["4"] - for(var/obj/machinery/air_sensor/U in devices) - world << "[U.id_tag]" + var/list/new_devices = gas_freq.devices["4"] + new_devices |= air_freq.devices["4"] + for(var/obj/machinery/air_sensor/U in new_devices) var/list/text = text2list(U.id_tag, "_") if(text[1] == S) sensors = list("[S]_sensor" = "Tank") break - devices = radio_connection.devices["_default"] + if(S == "air") + frequency = 1443 + else + frequency = 1441 + + set_frequency(frequency) for(var/obj/machinery/atmospherics/unary/outlet_injector/U in devices) U.broadcast_status() From a3bd65f4a0c46c951bc69885c5a57200dd2abffa Mon Sep 17 00:00:00 2001 From: ikarrus Date: Fri, 14 Mar 2014 00:56:30 -0600 Subject: [PATCH 030/102] Updates Hair Sprites The old sprites were simply inverted, meaning what was supposed to be the highlights showed up as shadows, and vice-versa. What I've done here is simply un-inverted it and fiddled with the levels until they were at a point that the shading variance would be visible to everyone but the blackest of black hair colors. --- icons/mob/human_face.dmi | Bin 24063 -> 24324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 8b4ddeed26a82419e91816af57b8c3b3ea5af074..2941272adc46d59e1dfb62ab32cf94a3f7523eee 100644 GIT binary patch literal 24324 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 SL_v3Z$j-*Wy7su&?f(G&wd_#< literal 24063 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ⅈ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 Date: Sat, 15 Mar 2014 16:59:48 +0000 Subject: [PATCH 031/102] Added a new gravity generator which will produce gravity for the station. Sprites by Ausop, which he posted in his sprite thread. The gravity generator is very sturdy, as it is almost indestructible, but explosions can break it and it will need repairs. Changed C4 to stop del()'ing and instead will only use ex_act(). Added an interact_offline variable for machines that will allow you to interact with them even if they are depowered. The gravity generator only uses this at the moment. Removed the stun that people get when gravity changes. Shuttles have gravity still. Added a gravity generator room to the west of Engineering. It is very secure, with a foyer and requiring CE or Captain access. There are instructions on the table for repairing and enabling/disabling the machine. --- _maps/map_files/tgstation.2.1.2.dmm | 142 ++++-- code/game/area/Space Station 13 areas.dm | 29 +- code/game/area/areas.dm | 41 +- code/game/atoms_movable.dm | 5 +- code/game/machinery/machinery.dm | 7 +- code/game/objects/effects/effect_system.dm | 2 +- code/game/objects/items/weapons/explosives.dm | 9 +- .../objects/items/weapons/extinguisher.dm | 2 +- code/game/turfs/turf.dm | 2 +- code/modules/mining/mine_areas.dm | 1 + code/modules/mob/living/carbon/carbon.dm | 3 +- .../mob/living/carbon/human/human_movement.dm | 2 +- code/modules/mob/mob_movement.dm | 20 +- code/modules/power/gravitygenerator.dm | 458 +++++++++++++----- icons/obj/machines/gravity_generator.dmi | Bin 0 -> 37203 bytes 15 files changed, 496 insertions(+), 227 deletions(-) create mode 100644 icons/obj/machines/gravity_generator.dmi diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index 7b429ff256d..7e2a5d6d129 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -5267,7 +5267,7 @@ "bXo" = (/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) "bXp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor,/area/tcommsat/computer) "bXq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"bXr" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) +"bXr" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) "bXs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) "bXt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft) "bXu" = (/turf/simulated/floor,/area/hallway/primary/aft) @@ -5455,7 +5455,7 @@ "caU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) "caV" = (/obj/machinery/door/airlock/engineering{name = "Aft Port Solar Access"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "caW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft) -"caX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft) +"caX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) "caY" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/aft) "caZ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft) "cba" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engine/engineering) @@ -5466,7 +5466,7 @@ "cbf" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engine_smes) "cbg" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engine_smes) "cbh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "yellow"},/area/engine/engineering) -"cbi" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "yellow"},/area/engine/engineering) +"cbi" = (/turf/simulated/wall/r_wall,/area/engine/gravity_generator) "cbj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/engine/engineering) "cbk" = (/obj/machinery/computer/station_alert,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/engine/engineering) "cbl" = (/obj/machinery/computer/monitor,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/engine/engineering) @@ -5484,7 +5484,7 @@ "cbx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/space,/area/space) "cby" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/space,/area/space) "cbz" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/port) -"cbA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) +"cbA" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/engine/gravity_generator) "cbB" = (/obj/machinery/power/solar_control{id = "portsolar"; name = "Aft Port Solar Control"; track = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cbC" = (/turf/simulated/floor/plating,/area/maintenance/portsolar) "cbD" = (/obj/machinery/power/apc{dir = 4; name = "Aft Port Solar APC"; pixel_x = 23; pixel_y = 2},/obj/machinery/camera{c_tag = "Aft Port Solar Control"; dir = 1},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -5515,7 +5515,7 @@ "ccc" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/turf/simulated/wall/r_wall,/area/atmos) "ccd" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/space) "cce" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/port) -"ccf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) +"ccf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/engine/gravity_generator) "ccg" = (/obj/item/stack/rods{amount = 10},/turf/simulated/floor/plating,/area/maintenance/aft) "cch" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Engineering Secure Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) "cci" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering) @@ -5539,7 +5539,7 @@ "ccA" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "ccB" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "ccC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) -"ccD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/aft) +"ccD" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/gravity_generator) "ccE" = (/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/engine/engineering) "ccF" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engine/engineering) "ccG" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering) @@ -5568,7 +5568,7 @@ "cdd" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cde" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cdf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cdg" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/aft) +"cdg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/gravity_generator) "cdh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall,/area/engine/engineering) "cdi" = (/turf/simulated/wall,/area/engine/engineering) "cdj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/engineering) @@ -5606,7 +5606,7 @@ "cdP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cdQ" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cdR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cdS" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating,/area/maintenance/aft) +"cdS" = (/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/table,/turf/simulated/floor,/area/engine/gravity_generator) "cdT" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Engineering Delivery"; req_access_txt = "10"},/turf/simulated/floor{icon_state = "delivery"},/area/engine/engineering) "cdU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engine/engineering) "cdV" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/engineering) @@ -5631,8 +5631,8 @@ "ceo" = (/obj/structure/table,/obj/item/device/flashlight{pixel_y = 5},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/weapon/airlock_painter,/turf/simulated/floor,/area/engine/engineering) "cep" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/machinery/camera{c_tag = "Engineering East"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/engineering) "ceq" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) -"cer" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/engineering) -"ces" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering) +"cer" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/engine/engineering) +"ces" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/engine/engineering) "cet" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/engineering) "ceu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "cev" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor,/area/engine/engineering) @@ -5650,7 +5650,7 @@ "ceH" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod4/station) "ceI" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod4/station) "ceJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/engine/engineering) -"ceK" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/camera{c_tag = "Engineering Storage"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/engine/engineering) +"ceK" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/engine/engineering) "ceL" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor,/area/engine/engineering) "ceM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "ceN" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/weapon/storage/toolbox/electrical{pixel_y = 5},/turf/simulated/floor,/area/engine/engineering) @@ -5668,9 +5668,9 @@ "ceZ" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod4/station) "cfa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/station) "cfb" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cfc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) -"cfd" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/table,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/engineering) -"cfe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) +"cfc" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/turf/simulated/floor,/area/engine/engineering) +"cfd" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor,/area/engine/engineering) +"cfe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/engineering) "cff" = (/obj/structure/table,/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/engine/engineering) "cfg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "cfh" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) @@ -5690,7 +5690,7 @@ "cfv" = (/obj/machinery/camera{c_tag = "Engineering Escape Pod"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/engine/engineering) "cfw" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod4/station) "cfx" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod4/station) -"cfy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) +"cfy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine/engineering) "cfz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering) "cfA" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating,/area/engine/engineering) "cfB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -5699,9 +5699,9 @@ "cfE" = (/obj/structure/particle_accelerator/power_box,/turf/simulated/floor/plating,/area/engine/engineering) "cfF" = (/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/engine/engineering) "cfG" = (/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering) -"cfH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering) +"cfH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/engineering) "cfI" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/engine/engineering) -"cfJ" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/machinery/light,/turf/simulated/floor,/area/engine/engineering) +"cfJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/engineering) "cfK" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/engine/engineering) "cfL" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/engine/engineering) "cfM" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/engine/engineering) @@ -8102,6 +8102,7 @@ "cZP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) "cZQ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor,/area/mine/living_quarters) "cZR" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor,/area/mine/living_quarters) +"cZS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft) "cZT" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/living_quarters) "cZU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) "cZV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) @@ -8233,6 +8234,9 @@ "dcr" = (/obj/structure/barricade/wooden,/obj/item/weapon/paper{anchored = 0; info = "A hastily written note has been scribbled here...

    Please use the ore redemption machine in the science wing for smelting. PLEASE!

    --The Research Staff"; name = "URGENT!"},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/mine/production) "dcs" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dct" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) +"dcu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/engine/engineering) +"dcv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) +"dcw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/engineering) "dcx" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "dcy" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "dcz" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -8267,6 +8271,66 @@ "ddc" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating/airless,/area/AIsattele) "ddd" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating/airless,/area/AIsattele) "dde" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/AIsattele) +"ddf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/gravity_generator,/turf/simulated/floor,/area/engine/engineering) +"ddg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) +"ddi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"ddj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) +"ddk" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) +"ddl" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft) +"ddm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"ddn" = (/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/aft) +"ddp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"ddq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"dds" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft) +"ddt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"ddu" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft) +"ddv" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) +"ddx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddy" = (/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft) +"ddz" = (/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft) +"ddA" = (/obj/machinery/camera{c_tag = "Gravity Generator Room"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) +"ddC" = (/obj/machinery/gravity_generator/main/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"ddD" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) +"ddE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"ddG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"ddH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"ddL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"ddM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/engine/gravity_generator) +"ddN" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "19; 61"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"ddO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"ddP" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/radiation,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) +"ddQ" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) +"ddR" = (/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/turf/simulated/floor,/area/engine/gravity_generator) +"ddS" = (/turf/simulated/floor,/area/engine/gravity_generator) +"ddT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/gravity_generator) +"ddU" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) +"ddV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/gravity_generator) +"ddW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) +"ddX" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) +"ddY" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "19;23"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"ddZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) +"dea" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engine/engineering) +"deb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) +"dec" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"ded" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"dee" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"def" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/aft) +"deg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/server) +"deh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/tcommsat/server) +"dei" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"dej" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft) +"dek" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "yellow"},/area/engine/engineering) +"del" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/engine/engineering) +"dem" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/engine/engineering) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8436,28 +8500,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbRkbTjbTkbTlbTkbTmbTnbTobTpbTqbTrbOlbTsbQxbTtbTubTvbRubTwbTtbTtbSrbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbGJbIVbNvbTQbTRbSFbTSbIVbQNbSGbPMbPNbTTbLiaafbLjbTUbTVbTWbJeaafaaaaaaaaaaaabLmbIdbIebIebTXbTYbIebIibIebIebIebIebIebMzbNQbMHbEtbEtbEtbEtbQbbTZbNTbUabQbbEtbEtbEtbEtbxqbSZbUbbUcbUdbUebUebakaafaaaaaaaaaaaaaaaaaaaafbUfbUgbUfaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbQrbQrbQrbQrbQrbOlbOlbOlbOlbOlbOlbOlbUhbQxbTtbTtbRubRubRubTtbUibUjbUkbUlbUmbUnbQybzebwJbUobUpbUqbUrbUsbUtbUubUvbUwbUxbUybUzbGJbUAbUBbTQbHMbSFbUCbIVbUDbSGbPMbUEbUFbQSbMtbKcbUGbSLbSLbJeaafaaaaaaaaaaaabMvbIdbUHbIebIebUIbIebUJbUKbULbwRbUMbUNbUObNQbMHbMIbMJbMJbUPbMLbHibMMbMNbUQbURbyCbyCbyCbxqbSZbUSbMYbUTbUUbUVbakaafaafaaaaaaaaaaaaaaaaafbUWbTgbUWaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafSafRafRafSafRafRafRagxafRafRafRafSafRaafaafaafbwJbDEbzebzebzebzebzebzebzebUXbwJbQwbQxbUYbUZbVabVbbRubRubVcbVdbVcbVebSubVfbQybzebVgbKQbGBbVhbVibVjbUtbVkbVlbVmbVnbVobVpbVqbJSbVrbHMbHMbHMbVsbIVbVtbVubPMbPNbIVbLiaafbJebJebJebJebJeaafaafaafaafaafbtobPSbGYbGYbVvbVwbwRbVxbVybVzbwRbVAbGYbVBbVCbMHbyCbyCbyCbVDbNSbHibNTbHibNUbVEbyCbyCbyCbxqbSZbUbbakbakbakbakbakaaaaafaafaaaaaaaaaaaaaafaaabVFaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaafRaafaaaaaabwJbVGbVHbwJbwJbVIbVJbwJbwJbVKbGrbQwbQxbVLbTtbRubRubRubTtbUibVMbVNbSubVObVPbTBbTDbTDbVQbVRbVSbVibVibVTbUubVUbVVbVWbVXbVYbGJbIVbIYbVZbWabWbbLbbWcbWdbWebSHbOxbOybOzbKbbKcbWhbWibWibJeaafaaaaaaaaaaaabQUbQVbQVbQVbWjbWkbwRbwRbWlbwRbwRbWkbWmbWnbWobWpbyCbyCbyCbWqbWrbWsbWtbHibONbWubMJbMJbOPbxqbSZbWvaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaaabVFaaaaafaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbWxbWyaaabWwbWxbWyaaabWwbWxbWyaafafRaaaaaaaaabwJbwJbwJbwJaaaaaaaaaaaabwJbVKbWzbQwbQxbTtbWAbWBbRubWCbTtbTtbSrbWDbSubSubWEbQybWFbWGbWHbWIbWJbWKbWLbWMbUubWMbUtbUtbUubWNbGJbWObWPbWQbMkbMkbMmbOsbWRbOwbMnbPNbWSbLiaafbLjbWTbWUbWVbJeaafaaaaaaaaaaaaaafaaaaaabwRbWWbWXbWYbWYbWYbWYbWYbWZbXabtobXbbMHbxqbxqbxqbxqbxqbxqbXcbxqbxqbxqbxqbxqbxqbxqbSZbXdaaaaaaaaaaaaaaaaaabXebXebXebXfaafaafaafaafbVFaafaafaafaafaafagxbXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbXgbWyaaabWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabwJbwJbwJbXhbXibXjbQxbRubXkbXlbRubXmbXnbRubSrbXobXpbXqbXqbXrbXsbXtbXubXvbXwbXxbXybXzbXAbXBbUtbUtbUubXCbGJbXDbIVbIYbOsbJcbXEbXFbXGbXHbIabXIbXJbQSbMtbKcbXKbWibWibJeaafaaaaaaaaaaaaaafaaaaaabwRbXLbXMbXNbXNbXNbXNbXNbXNbXObGbbXPbXQbXRbXRbXRbXRbXRbXRbXSbXTbXTbXTbXTbXTbXTbXTbXUbUbaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaaaaaaaaabXVaaaaafaafaaaaaaaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwbXgbWyaaabWwbXgbWyaafbWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabXWbXXbXWbzebzebQwbQxbRubXYbXZbYabYbbYcbRubYdbYebYfbYgbYhbQybYibYjbYkbYlbYmbYnbYobYpbYqbYrbYsbYtbYubYvbGJbYwbLebYxbYybIVbIVbIVbJbbPHbYybPNbRRbLiaafbJebJebJebJebJeaafaafaafaafaafaafaafaafbwRbYzbYAbYAbYBbYCbYDbYAbYAbYEbGbbYFbYGbYHbYIbYJbYJbYGbYGbYGbYGbYKbYGbYGbYLbYMbYNbYObYPaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaaaaafaafaafaafaafaafaaaaafaaaaafbwJbwJbwJbzebzebQwbQxbQxbQxbQxbQxbQxbQxbQxbQybQybQybQybQybQybwJbYSbwJbYTbYUbYUbYUbYVbYWbYXbYUbYYbYZbZabZbbZcbZdbMpbZebZfbZgbZfbZebZhbZebZibOsbZjaafaafaafaafaafaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabZkbUHbZkaaaaaaaafbGbbZlbZmbZnbZnbZobakbZmbZnbZnbZobakbZmbZnbZnbZobakbakbakaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaafaafbZvbZwbZwbZwbZwbZxbzebzebQwbwJbZybZzbZAbZAbZAbZAbZAbZAbZAbZAbZAbZBbZBbZAbZCbZDbYTcbqcbrcbocbpcaycbnbYUbZKbZLbZMbGJbZNbZObZPbSJbZRbZSbZTbWfbIVbZVbZWbSIbIXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabZYbYCbZYaaaaaaaafbZZcaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaaacabcabcabcabcabaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcacaafaafaafcacaafaaaaafcacaafaaaaafaaaaaaaaaaaacadcaecafcagcahcaicajcakcalcalcambwJcancaocapcapcapcapcapcapcapcapcapcapcapcapcaqcarcascatccoccpccqccrccScazcaAcaBcaCcaDcaEcaFcaGcaHcaGcaFcaGcaHcaGcaIcaGcaIcaJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaKcaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaafaafaaabYRaaaaafaaaaafaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafcaLcaMcaMcaNcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaPcaMcaMcaMcaMcaQcaRcaQcaScaTcaUcaVbzebzebzecaWcaXcaYcaZcapcbacbacbbcapcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbVcbXcbYbZHcbWcbscbtcbucbvcapaafcbwaafcbxaafcbwaafcbxaafcbyaafcbyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcbzaafaaaaafcbzaafaaaaafcbzaafaaaaaaaaaaaaaaaaaacadcaecbAcbBcbCcbDbZwcbEbzebzebzebzebzfcbFcapcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbScbTcbUbZIbZFbZEbZHbZGbYUcbZcbZcbZcapbJeccabLjccabJeccabLjccabJeccbbLjcccbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccdaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaafaafccfbZwbZwbZwbZwbwJbwJbwJbwJbzeccgbNjcapcchcbIcbIcbJcciccjcckcckcckccjccjcclcaBccmccncawcavcavcaubZJbYUccsbZLcctcapbJeccuccvccwbJeccxccycczbJeccAccBccCbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaafcabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWwccebWyaafbWwccebWyaaabWwccebWyaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaafaafaafbwJccDbzebzebzebzebNjcapccEccEccFcapccGccHccIccJccJcaBccKccLccMccNccOccPccQccRcaxccTccUccVccWccXcapbJeccYccZccYbJecdacdbcdabJecdccddcdebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaabXfaaaaafaaaaafaaaaafaaacdfaaaaafaaaaafaafaafaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwJcdgbzebzebzebzebNjcapccEccEccFcapcdhcdicdjcdkcdlcdmcdncbjcdmcdocdpcdqcdrcdscdtcducdvcdscaBcdwcapbJeccYcdxccYbJecdacdycdabJecdecdzcdebJeaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbVFaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaafbWwccebWyaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaabwJbzebzecapcdAcapcdBcapccEccFccFcapcdCcdDcdEcdFccJcducdGcdHcdGcdIcdJcdKcdLcdLcdMcdLcdLcdLcdNcdOcapbJebJebJebJebJebJebJebJebJebJebJebJebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaabXeaafbZpbZqbZqbZqbZqcdPcdQcdPbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagxaafbWwcdRbWyaaabWwcdRbWyaaabWwcdRbWyaafafRaafaafaafaafaafaafaafaafaafaafaafbwJbzecdScapcdTcapcdUcapcapcapcapcapcdVcaBcdWcdXcdXcbQcbQcbQcdYcdZcdNcaBcaBcaBcaBceacaBcaBcdtcebcapaafaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabVFaaacabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaafRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwJbDEbDEcapceccedceecefcegcehceicejcekcaBcelceacaBcemcctcapcencapcencapcctcemcaBcaBceocaBcdtcepcapcapcdicdicdicapaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaaaaafaafaafaaaaaabVFaafaaaaaaaafaafaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRafSafSagxafRafRafRafRafSafRafRafSceqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwJbwJbwJcapcaBcaBcercescetcetceucevcdtcaBcewcexcaBceycapcezceAceBceAceCcapceDcaBcexceEcaBcdtcaBceCcapceFceGceHceHceIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaabVFaaaaaaaaabXebXebXebXfbXeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacapcapceJceKccJcaBceLceMceNcdtceacaBcbKceOceOcePceQceRceScdWceTceUcdYcdYcdNcaBceacdtcaBceVceWcbIceXceYceZcfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcfbaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfccfdcfecaBcffcfgcfhcdtcficfjcfkcflcfmcapcfncfocfpceacfqcapcfrcfscfscfjcficdtcftcfucapcfvcfwceHceHcfxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafcfycaBcaBcaBcaBcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaafaaaaafaaacfHcfIcfJcfKcfLcdicfMcfNcapcfOcfPcfQcfRcfScfTcfUcfVcfWceVcfXcfPcfPcfPcfYcapcfZcgacapcgbcbIcgccfGaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagceJcapcapcapcapcapcapcfzcapcapcdmcgdcgecgfcggcfjcghcfjcgicgjcgecgdcgkcapcapcfzcapcapcdicdicdicdicglaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaafaagaagaafaaaaafaagcapcgmcgncgoaaaaaaaaacgpcgqcgdcgdcgdcgdcgdcgqcgraaaaaaaaacgscgtcgucapaaaaafaafaaaaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaafRaafaaaaaabwJbVGbVHbwJbwJbVIbVJbwJbwJbVKbGrbQwbQxbVLbTtbRubRubRubTtbUibVMbVNbSubVObVPdedbTDbTDbVQbVRbVSbVibVibVTbUubVUbVVbVWbVXbVYbGJbIVbIYbVZbWabWbbLbbWcbWdbWebSHbOxbOybOzbKbbKcbWhbWibWibJeaafaaaaaaaaaaaabQUbQVbQVbQVbWjbWkbwRbwRbWlbwRbwRbWkbWmbWnbWobWpbyCbyCbyCbWqbWrbWsbWtbHibONbWubMJbMJbOPbxqbSZbWvaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaaabVFaaaaafaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbWxbWyaaabWwbWxbWyaaabWwbWxbWyaafafRaaaaaaaaabwJbwJbwJbwJaaaaaaaaaaaabwJbVKbWzbQwbQxbTtbWAbWBbRubWCbTtbTtbSrbWDbSubSubWEdecbWFbWGbWHbWIbWJbWKbWLbWMbUubWMbUtbUtbUubWNbGJbWObWPbWQbMkbMkbMmbOsbWRbOwbMnbPNbWSbLiaafbLjbWTbWUbWVbJeaafaaaaaaaaaaaaaafaaaaaabwRbWWbWXbWYbWYbWYbWYbWYbWZbXabtobXbbMHbxqbxqbxqbxqbxqbxqbXcbxqbxqbxqbxqbxqbxqbxqbSZbXdaaaaaaaaaaaaaaaaaabXebXebXebXfaafaafaafaafbVFaafaafaafaafaafagxbXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaabWwbXgbWyaaabWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabwJbwJbwJbXhbXibXjbQxbRubXkbXlbRubXmbXnbRubSrbXobXpbXqbXqdeebXsbXtbXubXvbXwbXxbXybXzbXAbXBbUtbUtbUubXCbGJbXDbIVbIYbOsbJcbXEbXFbXGbXHbIabXIbXJbQSbMtbKcbXKbWibWibJeaafaaaaaaaaaaaaaafaaaaaabwRbXLbXMbXNbXNbXNbXNbXNbXNbXObGbbXPbXQbXRbXRbXRbXRbXRbXRbXSbXTbXTbXTbXTbXTbXTbXTbXUbUbaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaaaaaaaaabXVaaaaafaafaaaaaaaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwbXgbWyaaabWwbXgbWyaafbWwbXgbWyaafaafaaaaaaaaaaaaaaaaaaaafaaaaaabXWbXXbXWbzebzebQwbQxbRubXYbXZbYabYbbYcbRubYdbYebYfbYgbYhdecbYibYjbYkbYlbYmbYnbYobYpbYqbYrbYsbYtbYubYvbGJbYwbLebYxbYybIVbIVbIVbJbbPHbYybPNbRRbLiaafbJebJebJebJebJeaafaafaafaafaafaafaafaafbwRbYzbYAbYAbYBbYCbYDbYAbYAbYEbGbbYFbYGbYHbYIbYJbYJbYGbYGbYGbYGbYKbYGbYGbYLbYMbYNbYObYPaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaaaaafaafaafaafaafaafaaaaafaaaaafbwJbwJbwJbzebzebQwdehdegdegdegdegdegdegdegbTBbTBbTBbTBbTBdeibwJbYSbwJbYTbYUbYUbYUbYVbYWbYXbYUbYYbYZbZabZbbZcbZdbMpbZebZfbZgbZfbZebZhbZebZibOsbZjaafaafaafaafaafaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabZkbUHbZkaaaaaaaafbGbbZlbZmbZnbZnbZobakbZmbZnbZnbZobakbZmbZnbZnbZobakbakbakaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaaabWwbXgbWyaafbWwbXgbWyaaabWwbXgbWyaafaafaaaaaaaaaaaaaafaafbZvbZwbZwbZwbZwbZxbzebzebQwdefbZybZzbZAbZAbZAbZAbZAbZAbZAbZAbZAbZBbZBbZAbZCbZDbYTcbqcbrcbocbpcaycbnbYUbZKbZLbZMbGJbZNbZObZPbSJbZRbZSbZTbWfbIVbZVbZWbSIbIXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabZYbYCbZYaaaaaaaafbZZcaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaaacabcabcabcabcabaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcacaafaafaafcacaafaaaaafcacaafaaaaafaaaaaaaaaaaacadcaecafcagcahcaicajcakcalcalcamdefcancaodelcarcarcarcarcarcarcarcarcarcardemcaqcarcascatccoccpccqccrccScazcaAcaBcaCcaDcaEcaFcaGcaHcaGcaFcaGcaHcaGcaIcaGcaIcaJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaKcaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaafaafaaabYRaaaaafaaaaafaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafcaLcaMcaMcaNcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaPcaMcaMcaMcaMcaQcaRcaQcaScaTcaUcaVbzebzebzecaWdejcaYcaZdcucbacbacbbcapcbccbdcbecbfcbgcbhdekcbjcbkcblcbmcbVcbXcbYbZHcbWcbscbtcbucbvcapaafcbwaafcbxaafcbwaafcbxaafcbyaafcbyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcbzaafaaaaafcbzaafaaaaafcbzaafaaaaaaaaaaaaaaaaaacadcaedcvcbBcbCcbDbZwcbEbzebzebzecZSbzfcbFdcucbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcfJcbRcbScbTcbUbZIbZFbZEbZHbZGbYUcbZcbZcbZcapbJeccabLjccabJeccabLjccabJeccbbLjcccbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccdaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaafcbicbicbicbicbicbicbibwJbwJbwJcZSccgbNjdcucchcbIcbIcbJcciccjcckcckcckddfdcwcclcaBccmccncawcavcavcaubZJbYUccsbZLcctcapbJeccuccvccwbJeccxccycczbJeccAccBccCbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaafcabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWwccebWyaafbWwccebWyaaabWwccebWyaaaaaaaaaaaaaaaaaaaafcbiddnddjddiddhddgddmddlddkbTCddobzebNjdcuccEccEccFcapccGccHccIccJccJcaBccKccLccMccNccOccPccQccRcaxccTccUccVccWccXcapbJeccYccZccYbJecdacdbcdabJecdccddcdebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaabXfaaaaafaaaaafaaaaafaaacdfaaaaafaaaaafaafaafaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaaacbiddvddpddnddrddqddtddsddubPxbPxbPxddwcaDccEccEccFcapcdhcdicdjcdkcdlcdmcdncbjcdmcdocdpcdqcdrcdscdtcducdvcdscaBcdwcapbJeccYcdxccYbJecdacdycdabJecdecdzcdebJeaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbVFaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaafbWwccebWyaafaafaafaafaaaaaaaafcbiddxddDddCddBddAcbiddzddycapcdAcapcdBcapccEccFccFcapcdCcdDcdEcdFccJcducdGcdHcdGcdIcdJcdKcdLcdLcdMcdLcdLcdLcdNcdOcapbJebJebJebJebJebJebJebJebJebJebJebJebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaabXeaafbZpbZqbZqbZqbZqcdPcdQcdPbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagxaafbWwcdRbWyaaabWwcdRbWyaaabWwcdRbWyaafafRaafaafaafaafaafcbiddEddHddnddJddIcbiddFddGcapcdTcapcdUcapcapcapcapcapcdVcaBcdWcdXcdXcbQcbQcbQcdYcdZcdNcaBcaBcaBcaBceacaBcaBcdtcebcapaafaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabVFaaacabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaafRaafaaaaaaaaaaafcbiddKddOddNddMddLcbiddQddPccsceccedceecefcegcehceicejcekcaBcelceacaBcemcctcapcencapcencapcctcemcaBcaBceocaBcdtcepcapcapcdicdicdicapaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaaaaafaafaafaaaaaabVFaafaaaaaaaafaafaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRafSafSagxafRafRafRafRafSafRafRafSceqaaaaaaaaaaaaaafcbiddRddTddSddVddUddXddWddZddYceQcbQdeadebcetcetceucevcdtcaBcewcexcaBceycapcezceAceBceAceCcapceDcaBcexceEcaBcdtcaBceCcapceFceGceHceHceIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaabVFaaaaaaaaabXebXebXebXfbXeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicdScdgccDccfcbAcbicaXbXrccscaBcaBcdtcaBcaBceLceMceNcdtceacaBcbKceOceOcePceQceRceScdWceTceUcdYcdYcdNcaBceacdtcaBceVceWcbIceXceYceZcfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcfbaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicbicbicbicbicbicbicbicbicapcercaBcdtcaBcaBcffcfgcfhcdtcficfjcfkcflcfmcapcfncfocfpceacfqcapcfrcfscfscfjcficdtcftcfucapcfvcfwceHceHcfxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagaafaafaafaafaafcapcescaBcdtcaBcaBceKcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaafaafcapcfIcfdcdtcfccfKcfLcdicfMcfNcapcfOcfPcfQcfRcfScfTcfUcfVcfWceVcfXcfPcfPcfPcfYcapcfZcgacapcgbcbIcgccfGaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcapceJcfecfycfHceJcapcapcapcfzcapcapcdmcgdcgecgfcggcfjcghcfjcgicgjcgecgdcgkcapcapcfzcapcapcdicdicdicdicglaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaafaaaaafaagcapcgmcgncgoaaaaaaaaacgpcgqcgdcgdcgdcgdcgdcgqcgraaaaaaaaacgscgtcgucapaaaaafaafaaaaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaaaaaaaaaaafcapcgvcgwaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaacgxcgvcapaafaafaaaaaaaaaaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaacapcgycgzcgAaafaafaafcgBaaaaaaaaaaaacgBaaaaaacgBaafaafaafcgAcgCcgDcapaaaaafaaaaafaafaafaafaafaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacapcgvcgAcgEaaaaaaaafaaaaaaaaaaaaaaacgFaaaaaaaaaaafaaaaaacgAcgAcgvcapaaaaaaaaaaaaaaaaafaaaaacaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 7aa3c4120c3..9fbecfa3230 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -42,7 +42,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/used_light = 0 var/used_environ = 0 - var/has_gravity = 1 + var/has_gravity = 0 var/no_air = null var/area/master // master area used for power calcluations @@ -136,6 +136,7 @@ proc/process_ghost_teleport_locs() lighting_use_dynamic = 0 var/push_dir = SOUTH var/destination + has_gravity = 1 /area/shuttle/arrival name = "\improper Arrival Shuttle" @@ -305,6 +306,7 @@ proc/process_ghost_teleport_locs() name = "\improper Centcom" icon_state = "centcom" requires_power = 0 + has_gravity = 1 /area/centcom/control name = "\improper Centcom Docks" @@ -330,6 +332,7 @@ proc/process_ghost_teleport_locs() name = "\improper Syndicate Mothership" icon_state = "syndie-ship" requires_power = 0 + has_gravity = 1 /area/syndicate_mothership/control name = "\improper Syndicate Control Room" @@ -345,6 +348,7 @@ proc/process_ghost_teleport_locs() name = "\improper Asteroid" icon_state = "asteroid" requires_power = 0 + has_gravity = 1 /area/asteroid/cave // -- TLE name = "\improper Asteroid - Underground" @@ -360,19 +364,6 @@ proc/process_ghost_teleport_locs() lighting_use_dynamic = 1 InitializeLighting() - - - - - - - - - - - - - /area/planet/clown name = "\improper Clown Planet" icon_state = "honk" @@ -387,6 +378,7 @@ proc/process_ghost_teleport_locs() name = "\improper Thunderdome" icon_state = "thunder" requires_power = 0 + has_gravity = 1 /area/tdome/tdome1 name = "\improper Thunderdome (Team 1)" @@ -411,6 +403,7 @@ proc/process_ghost_teleport_locs() name = "\improper Syndicate Station" icon_state = "yellow" requires_power = 0 + has_gravity = 1 /area/syndicate_station/start name = "\improper Syndicate Forward Operating Base" @@ -456,6 +449,7 @@ proc/process_ghost_teleport_locs() name = "\improper Wizard's Den" icon_state = "yellow" requires_power = 0 + has_gravity = 1 @@ -841,6 +835,10 @@ proc/process_ghost_teleport_locs() name = "\improper Chief Engineer's office" icon_state = "engine_control" + gravity_generator + name = "Gravity Generator Room" + icon_state = "blue" + //Solars @@ -1213,10 +1211,12 @@ proc/process_ghost_teleport_locs() /area/djstation name = "\improper Ruskie DJ Station" icon_state = "DJ" + has_gravity = 1 /area/djstation/solars name = "\improper DJ Station Solars" icon_state = "DJ" + has_gravity = 1 //DERELICT @@ -1474,6 +1474,7 @@ proc/process_ghost_teleport_locs() /area/awaymission name = "\improper Strange Location" icon_state = "away" + has_gravity = 1 /area/awaymission/example name = "\improper Strange Station" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index a5e978a3f6d..bd03bbf1207 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -260,9 +260,6 @@ if(!L.lastarea) L.lastarea = get_area(L.loc) var/area/newarea = get_area(L.loc) - var/area/oldarea = L.lastarea - if((oldarea.has_gravity == 0) && (newarea.has_gravity == 1) && (L.m_intent == "run")) // Being ready when you change areas gives you a chance to avoid falling all together. - thunk(L) L.lastarea = newarea @@ -300,32 +297,18 @@ if(L.&& L.client) L.client.played = 0 -/area/proc/gravitychange(var/gravitystate = 0) - - has_gravity = gravitystate - - if(gravitystate) - for(var/mob/living/carbon/human/M in contents) - thunk(M) - /area/proc/mob_activate(var/mob/living/L) return -/area/proc/thunk(mob) - if(istype(mob,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - if((istype(mob:shoes, /obj/item/clothing/shoes/magboots) && (mob:shoes.flags & NOSLIP))) - return - - if(istype(get_turf(mob), /turf/space)) // Can't fall onto nothing. - return - - if((istype(mob,/mob/living/carbon/human/)) && (mob:m_intent == "run")) // Only clumbsy humans can fall on their asses. - mob:AdjustStunned(5) - mob:AdjustWeakened(5) - - else if (istype(mob,/mob/living/carbon/human/)) - mob:AdjustStunned(2) - mob:AdjustWeakened(2) - - mob << "Gravity!" - +/proc/has_gravity(var/atom/AT) + var/area/A = get_area(AT) + var/turf/T = get_turf(AT) + if(istype(T, /turf/space)) // Turf never has gravity + return 0 + else if(A && A.has_gravity) // Areas which always has gravity + return 1 + else + // There's a gravity generator on our z level + if(T && gravity_generators["[T.z]"] && length(gravity_generators["[T.z]"])) + return 1 + return 0 \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 8bb4db44c53..7692a22952d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -76,7 +76,6 @@ var/dy = (target.y > src.y) ? NORTH : SOUTH var/dist_travelled = 0 var/dist_since_sleep = 0 - var/area/a = get_area(src.loc) var/tdist_x = dist_x; var/tdist_y = dist_y; @@ -90,7 +89,7 @@ tdy = dx; var/error = tdist_x/2 - tdist_y - while(target && (((((dist_x > dist_y) && ((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST))) || ((dist_x <= dist_y) && ((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH))) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space))) + while(target && (((((dist_x > dist_y) && ((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST))) || ((dist_x <= dist_y) && ((src.y < target.y && dy == NORTH) || (src.y > target.y && dy == SOUTH))) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || !has_gravity(src))) // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up if(!src.throwing) break if(!istype(src.loc, /turf)) break @@ -107,8 +106,6 @@ dist_since_sleep = 0 sleep(1) - a = get_area(src.loc) - //done throwing, either because it hit something or it finished moving src.throwing = 0 if(isobj(src)) src.throw_impact(get_turf(src)) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 2d2ea1cfcbb..04f3817658e 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -108,6 +108,7 @@ Class Procs: var/state_open = 0 var/mob/living/occupant = null var/unsecuring_tool = /obj/item/weapon/wrench + var/interact_offline = 0 // Can the machine be interacted with while de-powered. /obj/machinery/New() ..() @@ -198,7 +199,7 @@ Class Procs: /obj/machinery/Topic(href, href_list) ..() - if(stat & (NOPOWER|BROKEN)) + if(!interact_offline && stat & (NOPOWER|BROKEN)) return 1 if(usr.restrained() || usr.lying || usr.stat) return 1 @@ -237,7 +238,7 @@ Class Procs: return src.attack_hand(user) /obj/machinery/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN|MAINT)) + if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT)) return 1 if(user.lying || user.stat) return 1 @@ -345,4 +346,4 @@ Class Procs: for(var/var/obj/item/C in component_parts) user << " [C.name]" return 1 - return 0 + return 0 diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index d629f0a27d2..c129b9f68a0 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -683,7 +683,7 @@ steam.start() -- spawns the effect src.processing = 0 var/turf/T = get_turf(src.holder) if(T != src.oldposition) - if(istype(T, /turf/space)) + if(!has_gravity(T)) var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition) src.oldposition = T I.dir = src.holder.dir diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index dd76b434ea5..9d42eb0a0a3 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -14,9 +14,11 @@ var/timer = 10 var/atom/target = null var/open_panel = 0 + var/image_overlay = null /obj/item/weapon/plastique/New() wires = new(src) + image_overlay = image('icons/obj/assemblies.dmi', "plastic-explosive2") ..() /obj/item/weapon/plastique/suicide_act(var/mob/user) @@ -80,7 +82,7 @@ message_admins("[key_name(user, user.client)](?) planted C4 on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1) log_game("[key_name(user)] planted C4 on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse") - target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2") + target.overlays += image_overlay user << "Bomb has been planted. Timer counting down from [timer]." spawn(timer*10) explode(get_turf(target)) @@ -100,9 +102,8 @@ target:dismantle_wall(1) else target.ex_act(1) - if (isobj(target)) - if (target) - del(target) + if(target) + target.overlays -= image_overlay del(src) /obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 8c94845baf9..8713c39b2ce 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -124,7 +124,7 @@ if(W.loc == my_target) break sleep(2) - if((istype(usr.loc, /turf/space)) || (usr.lastarea && usr.lastarea.has_gravity == 0)) + if(!has_gravity(user)) user.inertia_dir = get_dir(target, user) step(user, user.inertia_dir) else diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 3f3e538b816..adbd08d5988 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -107,7 +107,7 @@ if(ismob(M)) if(!M:lastarea) M:lastarea = get_area(M.loc) - if(M:lastarea.has_gravity == 0) + if(!has_gravity(M)) inertial_drift(M) /* diff --git a/code/modules/mining/mine_areas.dm b/code/modules/mining/mine_areas.dm index 40ed5deb184..06ced5db488 100644 --- a/code/modules/mining/mine_areas.dm +++ b/code/modules/mining/mine_areas.dm @@ -2,6 +2,7 @@ /area/mine icon_state = "mining" + has_gravity = 1 /area/mine/explored name = "Mine" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c8af73fd799..bc5fcf45a09 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -266,6 +266,7 @@ /mob/proc/throw_item(atom/target) return + /mob/living/carbon/throw_item(atom/target) throw_mode_off() if(usr.stat || !target) @@ -304,7 +305,7 @@ if(!src.lastarea) src.lastarea = get_area(src.loc) - if((istype(src.loc, /turf/space)) || (src.lastarea.has_gravity == 0)) + if(!has_gravity(src)) src.inertia_dir = get_dir(target, src) step(src, inertia_dir) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4aa98a7e2f6..a41bd7a5e7a 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human/movement_delay() - if(istype(loc, /turf/space)) + if(!has_gravity(src)) return -1 //It's hard to be slowed down in space by... anything if(reagents.has_reagent("hyperzine")) return -1 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 80e9f8d41ea..607830a138e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -174,7 +174,7 @@ if(!mob.lastarea) mob.lastarea = get_area(mob.loc) - if((istype(mob.loc, /turf/space)) || (mob.lastarea.has_gravity == 0)) + if(!has_gravity(mob)) if(!mob.Process_Spacemove(0)) return 0 @@ -357,34 +357,20 @@ if(!isturf(loc)) //if they're in a disposal unit, for example return 1 - /* - if(istype(src,/mob/living/carbon)) - if(src.l_hand && src.r_hand) - return 0 - */ - var/dense_object = 0 for(var/turf/turf in oview(1,src)) if(istype(turf,/turf/space)) continue if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) + if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src)) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) continue else - if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0)) // No one else gets a chance. + if((istype(turf,/turf/simulated/floor)) && (!has_gravity(src))) // No one else gets a chance. continue - - - /* - if(istype(turf,/turf/simulated/floor) && (src.flags & NOGRAV)) - continue - */ - - dense_object++ break diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 367ff166b29..a5b579c3d1c 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -1,140 +1,374 @@ -// It.. uses a lot of power. Everything under power is engineering stuff, at least. -/obj/machinery/computer/gravity_control_computer - name = "Gravity Generator Control" - desc = "A computer to control a local gravity generator. Qualified personnel only." - icon = 'icons/obj/computer.dmi' - icon_state = "airtunnel0e" - anchored = 1 - density = 1 - var/obj/machinery/gravity_generator = null +// +// Gravity Generator +// +var/list/gravity_generators = list() // We will keep track of this by adding new gravity generators to the list, and keying it with the z level. -/obj/machinery/gravity_generator/ - name = "Gravitational Generator" +var/const/POWER_IDLE = 0 +var/const/POWER_UP = 1 +var/const/POWER_DOWN = 2 + +var/const/GRAV_NEEDS_SCREWDRIVER = 0 +var/const/GRAV_NEEDS_WELDING = 1 +var/const/GRAV_NEEDS_PLASTEEL = 2 +var/const/GRAV_NEEDS_WRENCH = 3 + +// +// Abstract Generator +// + +/obj/machinery/gravity_generator + name = "gravitational generator" desc = "A device which produces a gravaton field when set up." - icon = 'icons/obj/singularity.dmi' - icon_state = "TheSingGen" + icon = 'icons/obj/machines/gravity_generator.dmi' anchored = 1 density = 1 + use_power = 0 + unacidable = 1 + var/sprite_number = 0 + +/obj/machinery/gravity_generator/ex_act(severity) + if(severity == 1) // Very sturdy. + set_broken() + +/obj/machinery/gravity_generator/meteorhit() + return + +/obj/machinery/gravity_generator/update_icon() + ..() + icon_state = "[get_status()]_[sprite_number]" + +/obj/machinery/gravity_generator/proc/get_status() + return "off" + +// You aren't allowed to move. +/obj/machinery/gravity_generator/Move() + ..() + del(src) + +/obj/machinery/gravity_generator/proc/set_broken() + stat |= BROKEN + +/obj/machinery/gravity_generator/proc/set_fix() + stat &= ~BROKEN + +/obj/machinery/gravity_generator/part/Del() + set_broken() + if(main_part) + del(main_part) + ..() + +// +// Part generator which is mostly there for looks +// + +/obj/machinery/gravity_generator/part + var/obj/machinery/gravity_generator/main/main_part = null + +/obj/machinery/gravity_generator/part/attackby(obj/item/I as obj, mob/user as mob) + return main_part.attackby(I, user) + +/obj/machinery/gravity_generator/part/get_status() + return main_part.get_status() + +/obj/machinery/gravity_generator/part/attack_hand(mob/user as mob) + return main_part.attack_hand(user) + +/obj/machinery/gravity_generator/part/set_broken() + ..() + if(main_part && !(main_part.stat & BROKEN)) + main_part.set_broken() + +// +// Generator which spawns with the station. +// + +/obj/machinery/gravity_generator/main/station/initialize() + setup_parts() + middle.overlays += "activated" + update_list() + +// +// Main Generator with the main code +// + +/obj/machinery/gravity_generator/main + icon_state = "on_8" + idle_power_usage = 0 + active_power_usage = 3000 + power_channel = ENVIRON + sprite_number = 8 use_power = 1 - idle_power_usage = 200 - active_power_usage = 1000 + interact_offline = 1 var/on = 1 - var/list/localareas = list() - var/effectiverange = 25 + var/breaker = 1 + var/list/parts = list() + var/obj/middle = null + var/charging_state = POWER_IDLE + var/charge_count = 100 + var/current_overlay = null + var/broken_state = 0 - // Borrows code from cloning computer -/obj/machinery/computer/gravity_control_computer/New() +/obj/machinery/gravity_generator/main/Del() // If we somehow get deleted, remove all of our other parts. + on = 0 + update_list() + for(var/obj/machinery/gravity_generator/part/O in parts) + O.main_part = null + del(O) ..() - spawn(5) - updatemodules() - return - return -/obj/machinery/gravity_generator/New() +/obj/machinery/gravity_generator/main/proc/setup_parts() + var/turf/our_turf = get_turf(src) + // 9x9 block obtained from the bottom middle of the block + var/list/spawn_turfs = block(locate(our_turf.x - 1, our_turf.y + 2, our_turf.z), locate(our_turf.x + 1, our_turf.y, our_turf.z)) + var/count = 10 + for(var/turf/T in spawn_turfs) + count-- + if(T == our_turf) // Skip our turf. + continue + var/obj/machinery/gravity_generator/part/part = new(T) + if(count == 5) // Middle + middle = part + part.sprite_number = count; + part.main_part = src + parts += part + part.update_icon() + +/obj/machinery/gravity_generator/main/proc/connected_parts() + return parts.len == 8 + +/obj/machinery/gravity_generator/main/set_broken() ..() - spawn(5) - locatelocalareas() - return - return + for(var/obj/machinery/gravity_generator/M in parts) + if(!(M.stat & BROKEN)) + M.set_broken() + middle.overlays.Cut() + charge_count = 0 + breaker = 0 + set_power() + set_state(0) +/obj/machinery/gravity_generator/main/set_fix() + ..() + for(var/obj/machinery/gravity_generator/M in parts) + if(M.stat & BROKEN) + M.set_fix() + broken_state = 0 + update_icon() + set_power() +// Interaction -/obj/machinery/computer/gravity_control_computer/proc/updatemodules() - src.gravity_generator = findgenerator() - - - -/obj/machinery/gravity_generator/proc/locatelocalareas() - for(var/area/A in range(src,effectiverange)) - if(istype(A, /area/space)) - continue // No (de)gravitizing space. - if(A.master && !( A.master in localareas) ) - localareas += A.master - -/obj/machinery/computer/gravity_control_computer/proc/findgenerator() - var/obj/machinery/gravity_generator/foundgenerator = null - for(dir in list(NORTH,EAST,SOUTH,WEST)) - //world << "SEARCHING IN [dir]" - foundgenerator = locate(/obj/machinery/gravity_generator/, get_step(src, dir)) - if (!isnull(foundgenerator)) - //world << "FOUND" - break - return foundgenerator - - -/obj/machinery/computer/gravity_control_computer/attack_paw(mob/user as mob) - return attack_hand(user) - -/obj/machinery/computer/gravity_control_computer/attack_ai(mob/user as mob) - return attack_hand(user) - -/obj/machinery/computer/gravity_control_computer/attack_hand(mob/user as mob) - user.set_machine(src) - add_fingerprint(user) - - if(stat & (BROKEN|NOPOWER)) - return - - updatemodules() - - var/dat = "

    Generator Control System

    " - //dat += "Refresh" - if(gravity_generator) - if(gravity_generator:on) - dat += "
    Gravity Status: ON

    " +// Fixing the gravity generator. +/obj/machinery/gravity_generator/main/attackby(obj/item/I as obj, mob/user as mob) + var/old_broken_state = broken_state + switch(broken_state) + if(GRAV_NEEDS_SCREWDRIVER) + if(istype(I, /obj/item/weapon/screwdriver)) + user << "You secure the screws of the framework." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + broken_state++ + if(GRAV_NEEDS_WELDING) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = I + if(WT.remove_fuel(1, user)) + user << "You mend the damaged framework." + playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) + broken_state++ + if(GRAV_NEEDS_PLASTEEL) + if(istype(I, /obj/item/stack/sheet/plasteel)) + var/obj/item/stack/sheet/plasteel/PS = I + if(PS.amount >= 10) + PS.use(10) + user << "You add the plating to the framework." + playsound(src.loc, 'sound/machines/click.ogg', 75, 1) + broken_state++ + else + user << "You need 10 sheets of plasteel." + if(GRAV_NEEDS_WRENCH) + if(istype(I, /obj/item/weapon/wrench)) + user << "You secure the plating to the framework." + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + set_fix() else - dat += "
    Gravity Status: OFF

    " + ..() + if(old_broken_state != broken_state) + update_icon() - dat += "
    Currently Supplying Gravitons To:
    " - - for(var/area/A in gravity_generator:localareas) - if(A.has_gravity && gravity_generator:on) - dat += "[A]
    " - - else if (A.has_gravity) - dat += "[A]
    " - - else - dat += "[A]
    " - - dat += "
    Maintainence Functions:
    " - if(gravity_generator:on) - dat += " TURN GRAVITY GENERATOR OFF. " - else - dat += " TURN GRAVITY GENERATOR ON. " +/obj/machinery/gravity_generator/main/attack_hand(mob/user as mob) + if(!..()) + return interact(user) +/obj/machinery/gravity_generator/main/interact(mob/user as mob) + if(stat & BROKEN) + return + var/dat = "Gravity Generator Breaker: " + if(breaker) + dat += "ON OFF" else - dat += "No local gravity generator detected!" + dat += "ON OFF " - user << browse(dat, "window=gravgen") - onclose(user, "gravgen") + dat += "
    Generator Status:
    " + if(charging_state != POWER_IDLE) + dat += "WARNING Radiation Detected.
    [charging_state == POWER_UP ? "Charging..." : "Discharging..."]" + else if(on) + dat += "Powered." + else + dat += "Unpowered." + + dat += "
    Gravity Charge: [charge_count]%
    " + + var/datum/browser/popup = new(user, "gravgen", name) + popup.set_content(dat) + popup.open() -/obj/machinery/computer/gravity_control_computer/Topic(href, href_list) - set background = BACKGROUND_ENABLED +/obj/machinery/gravity_generator/main/Topic(href, href_list) if(..()) return if(href_list["gentoggle"]) - if(gravity_generator:on) - gravity_generator:on = 0 - - for(var/area/A in gravity_generator:localareas) - var/obj/machinery/gravity_generator/G - for(G in world) - if((A.master in G.localareas) && (G.on)) - break - if(!G) - A.gravitychange(0) - - - else - for(var/area/A in gravity_generator:localareas) - gravity_generator:on = 1 - A.gravitychange(1) - + breaker = !breaker + set_power() src.updateUsrDialog() - return \ No newline at end of file + +// Power and Icon States + +/obj/machinery/gravity_generator/main/power_change() + ..() + set_power() + +/obj/machinery/gravity_generator/main/get_status() + if(stat & BROKEN) + return "fix[min(broken_state, 3)]" + return on || charging_state != POWER_IDLE ? "on" : "off" + +/obj/machinery/gravity_generator/main/update_icon() + ..() + for(var/obj/O in parts) + O.update_icon() + +// Set the charging state based on power/breaker. +/obj/machinery/gravity_generator/main/proc/set_power() + var/new_state = 0 + if(stat & (NOPOWER|BROKEN) || !breaker) + new_state = 0 + else if(breaker) + new_state = 1 + + charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation. + update_icon() + +// Set the state of the gravity. +/obj/machinery/gravity_generator/main/proc/set_state(var/new_state) + charging_state = POWER_IDLE + on = new_state + use_power = on ? 2 : 1 + // Sound the alert if gravity was just enabled or disabled. + var/alert = 0 + if(new_state) // If we turned on + if(gravity_in_level() == 0) + alert = 1 + else + if(gravity_in_level() == 1) + alert = 1 + + update_icon() + update_list() + src.updateUsrDialog() + if(alert) + shake_everyone() + +// Charge/Discharge and turn on/off gravity when you reach 0/100 percent. +// Also emit radiation and handle the overlays. +/obj/machinery/gravity_generator/main/process() + if(stat & BROKEN) + return + if(charging_state != POWER_IDLE) + if(charging_state == POWER_UP && charge_count >= 100) + set_state(1) + else if(charging_state == POWER_DOWN && charge_count <= 0) + set_state(0) + else + if(charging_state == POWER_UP) + charge_count += 2 + else if(charging_state == POWER_DOWN) + charge_count -= 2 + + if(charge_count % 4 == 0 && prob(75)) // Let them know it is charging/discharging. + playsound(src.loc, 'sound/effects/EMPulse.ogg', 75, 1) + + updateDialog() + if(prob(25)) // To help stop "Your clothes feel warm" spam. + pulse_radiation() + + var/overlay_state = null + switch(charge_count) + if(0 to 20) + overlay_state = null + if(21 to 40) + overlay_state = "startup" + if(41 to 60) + overlay_state = "idle" + if(61 to 80) + overlay_state = "activating" + if(81 to 100) + overlay_state = "activated" + + if(overlay_state != current_overlay) + if(middle) + middle.overlays.Cut() + if(overlay_state) + middle.overlays += overlay_state + current_overlay = overlay_state + + +/obj/machinery/gravity_generator/main/proc/pulse_radiation() + for(var/mob/living/L in view(7, src)) + L.apply_effect(20, IRRADIATE) + +// Shake everyone on the z level to let them know that gravity was enagaged/disenagaged. +/obj/machinery/gravity_generator/main/proc/shake_everyone() + var/turf/our_turf = get_turf(src) + for(var/mob/M in player_list) + var/turf/their_turf = get_turf(M) + if(M.client && their_turf.z == our_turf.z) + shake_camera(M, 15, 1) + M.playsound_local(our_turf, 'sound/machines/signal.ogg', 100) + +/obj/machinery/gravity_generator/main/proc/gravity_in_level() + var/turf/T = get_turf(src) + if(!T) + return 0 + if(gravity_generators["[T.z]"]) + return length(gravity_generators["[T.z]"]) + return 0 + +/obj/machinery/gravity_generator/main/proc/update_list() + var/turf/T = get_turf(src.loc) + if(T) + if(!gravity_generators["[T.z]"]) + gravity_generators["[T.z]"] = list() + if(on) + gravity_generators["[T.z]"] |= src + else + gravity_generators["[T.z]"] -= src + +// Misc + +/obj/item/weapon/paper/gravity_gen + name = "paper- 'Generate your own gravity!'" + info = {"

    Gravity Generator Instructions For Dummies

    +

    Surprisenly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of + energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator + will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR RADIOACTIVE CLOTHING.

    +
    +

    It blew up!

    +

    Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then + please proceed to panic; otherwise follow these steps.

      +
    1. Secure the screws of the framework with a screwdriver.
    2. +
    3. Mend the damaged framework with a welding tool.
    4. +
    5. Add additional plasteel plating.
    6. +
    7. Secure the additional plating with a wrench.
    "} diff --git a/icons/obj/machines/gravity_generator.dmi b/icons/obj/machines/gravity_generator.dmi new file mode 100644 index 0000000000000000000000000000000000000000..69395034dc8401a1f56d3d41d2109093e9fc0b40 GIT binary patch literal 37203 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 O0000 Date: Sat, 15 Mar 2014 17:31:22 +0000 Subject: [PATCH 032/102] * Gave the supply area gravity. * Removed a misplaced object on the map. --- _maps/map_files/tgstation.2.1.2.dmm | 3 +-- code/controllers/supply_shuttle.dm | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index 7e2a5d6d129..bb1857c74c1 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -8271,7 +8271,6 @@ "ddc" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating/airless,/area/AIsattele) "ddd" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating/airless,/area/AIsattele) "dde" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/AIsattele) -"ddf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/gravity_generator,/turf/simulated/floor,/area/engine/engineering) "ddg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "ddh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) "ddi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) @@ -8509,7 +8508,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcacaafaafaafcacaafaaaaafcacaafaaaaafaaaaaaaaaaaacadcaecafcagcahcaicajcakcalcalcamdefcancaodelcarcarcarcarcarcarcarcarcarcardemcaqcarcascatccoccpccqccrccScazcaAcaBcaCcaDcaEcaFcaGcaHcaGcaFcaGcaHcaGcaIcaGcaIcaJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaKcaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaabXeaaaaafaaaaafaafaafaaabYRaaaaafaaaaafaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafcaLcaMcaMcaNcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaOcaPcaMcaMcaMcaMcaQcaRcaQcaScaTcaUcaVbzebzebzecaWdejcaYcaZdcucbacbacbbcapcbccbdcbecbfcbgcbhdekcbjcbkcblcbmcbVcbXcbYbZHcbWcbscbtcbucbvcapaafcbwaafcbxaafcbwaafcbxaafcbyaafcbyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbYRaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSaaaaafaaaaafaafcbzaafaaaaafcbzaafaaaaafcbzaafaaaaaaaaaaaaaaaaaacadcaedcvcbBcbCcbDbZwcbEbzebzebzecZSbzfcbFdcucbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcfJcbRcbScbTcbUbZIbZFbZEbZHbZGbYUcbZcbZcbZcapbJeccabLjccabJeccabLjccabJeccbbLjcccbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccdaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafbZpbZqbZqbZqbZqbZrbYRbZsbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaafcbicbicbicbicbicbicbibwJbwJbwJcZSccgbNjdcucchcbIcbIcbJcciccjcckcckcckddfdcwcclcaBccmccncawcavcavcaubZJbYUccsbZLcctcapbJeccuccvccwbJeccxccycczbJeccAccBccCbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaafcabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRaafaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaafcbicbicbicbicbicbicbibwJbwJbwJcZSccgbNjdcucchcbIcbIcbJcciccjcckcckcckccjdcwcclcaBccmccncawcavcavcaubZJbYUccsbZLcctcapbJeccuccvccwbJeccxccycczbJeccAccBccCbJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabYRaafcabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWwccebWyaafbWwccebWyaaabWwccebWyaaaaaaaaaaaaaaaaaaaafcbiddnddjddiddhddgddmddlddkbTCddobzebNjdcuccEccEccFcapccGccHccIccJccJcaBccKccLccMccNccOccPccQccRcaxccTccUccVccWccXcapbJeccYccZccYbJecdacdbcdabJecdccddcdebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaabXfaaaaafaaaaafaaaaafaaacdfaaaaafaaaaafaafaafaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaaabWwccebWyaafaaaaaaaaaaaaaaaaaacbiddvddpddnddrddqddtddsddubPxbPxbPxddwcaDccEccEccFcapcdhcdicdjcdkcdlcdmcdncbjcdmcdocdpcdqcdrcdscdtcducdvcdscaBcdwcapbJeccYcdxccYbJecdacdycdabJecdecdzcdebJeaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaabYQbYQbYQbYQbYQaafbVFaafbYQbYQbYQbYQbYQaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaafbWwccebWyaafaafaafaafaaaaaaaafcbiddxddDddCddBddAcbiddzddycapcdAcapcdBcapccEccFccFcapcdCcdDcdEcdFccJcducdGcdHcdGcdIcdJcdKcdLcdLcdMcdLcdLcdLcdNcdOcapbJebJebJebJebJebJebJebJebJebJebJebJebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaabXeaafbZpbZqbZqbZqbZqcdPcdQcdPbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 2b401a431a3..14ded5c9185 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -6,6 +6,9 @@ var/global/datum/controller/supply_shuttle/supply_shuttle +/area/supply + has_gravity = 1 + /area/supply/station //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "supply shuttle" icon_state = "shuttle3" From 64c9e253f226011551ce78295e3b629f72aa8fef Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sat, 15 Mar 2014 17:44:34 +0000 Subject: [PATCH 033/102] Typo fixes. I'm keeping the comma-less but. --- code/modules/power/gravitygenerator.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index a5b579c3d1c..52cd2430173 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -361,9 +361,9 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/item/weapon/paper/gravity_gen name = "paper- 'Generate your own gravity!'" info = {"

    Gravity Generator Instructions For Dummies

    -

    Surprisenly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of +

    Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator - will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR RADIOACTIVE CLOTHING.

    + will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.


    It blew up!

    Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then From 615926b17ee52cdcdbb60cbef128b43977e6cec6 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 16 Mar 2014 09:17:38 +0000 Subject: [PATCH 034/102] Shuttles changing location will update the area's has_gravity. --- code/controllers/supply_shuttle.dm | 3 --- code/game/area/Space Station 13 areas.dm | 3 +-- code/game/machinery/computer/syndicate_shuttle.dm | 2 ++ code/modules/shuttle/shuttle.dm | 5 +++++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 14ded5c9185..2b401a431a3 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -6,9 +6,6 @@ var/global/datum/controller/supply_shuttle/supply_shuttle -/area/supply - has_gravity = 1 - /area/supply/station //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "supply shuttle" icon_state = "shuttle3" diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 9fbecfa3230..481a0bea340 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -136,7 +136,6 @@ proc/process_ghost_teleport_locs() lighting_use_dynamic = 0 var/push_dir = SOUTH var/destination - has_gravity = 1 /area/shuttle/arrival name = "\improper Arrival Shuttle" @@ -403,11 +402,11 @@ proc/process_ghost_teleport_locs() name = "\improper Syndicate Station" icon_state = "yellow" requires_power = 0 - has_gravity = 1 /area/syndicate_station/start name = "\improper Syndicate Forward Operating Base" icon_state = "yellow" + has_gravity = 1 /area/syndicate_station/southwest name = "\improper south-west of SS13" diff --git a/code/game/machinery/computer/syndicate_shuttle.dm b/code/game/machinery/computer/syndicate_shuttle.dm index fb6aa607ab9..2d264251da9 100644 --- a/code/game/machinery/computer/syndicate_shuttle.dm +++ b/code/game/machinery/computer/syndicate_shuttle.dm @@ -28,6 +28,8 @@ var/area/transit_location = locate(/area/syndicate_station/transit) curr_location.move_contents_to(transit_location) curr_location = transit_location + curr_location.has_gravity = 0 + transit_location.has_gravity = 1 sleep(SYNDICATE_SHUTTLE_MOVE_TIME) curr_location.move_contents_to(dest_location) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 2676fefc3d5..d5252cf5330 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -8,6 +8,8 @@ datum/shuttle_manager datum/shuttle_manager/New(var/area, var/delay) //Create a new shuttle manager for the shuttle starting area, "area" and with a movement delay of tickstomove location = area tickstomove = delay + var/area/A = locate(location) + A.has_gravity = 1 datum/shuttle_manager/proc/move_shuttle(var/override_delay) @@ -50,6 +52,9 @@ datum/shuttle_manager/proc/move_shuttle(var/override_delay) fromArea.move_contents_to(toArea) location = toArea.type + fromArea.has_gravity = 0 + toArea.has_gravity = 1 + for(var/obj/machinery/door/D in toArea) //Close any doors on the shuttle spawn(0) D.close() From d939067d60d3afe6eba6686622f9c04a31e790be Mon Sep 17 00:00:00 2001 From: ikarrus Date: Sun, 16 Mar 2014 16:04:25 -0600 Subject: [PATCH 035/102] Updated contrast so lighter hair colors were not as severe --- icons/mob/human_face.dmi | Bin 24324 -> 37562 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 2941272adc46d59e1dfb62ab32cf94a3f7523eee..28add802a82fe0eb9978db9d3908c0184a2e6063 100644 GIT binary patch literal 37562 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

    rGbcIi_f*CK^tl`;l4EI|lzI2b`P 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 literal 24324 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 SL_v3Z$j-*Wy7su&?f(G&wd_#< From 7b44bed140cf1e17026bdc374c8141ddae376479 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 17 Mar 2014 00:56:33 -0600 Subject: [PATCH 036/102] Rewrote how emags work on doors Intended to allow the deconstruction and replacement of the doors without needing an RCD. Emagged doors will be unusable for at least 60 seconds, so weld+emagging still works. It's just not permanent. Using an emag on a door will: -Try to open the door -Cut power for 60 seconds -Drop bolts -Cut bolt lights -Effectively make the door unusable for at least a minute Doors that have been emagged: -Can only be opened with a crowbar or axe if the power is off and the bolts are up -Can be hacked as normal, except the Open wire will not work -Cannot be interfaced by silicons at all -No longer prevent players from using tools (Can we unwelded, wires cut, etc) -Can be deconstructed and repaired Misc: Also made it so you can bump open doors even if the panel is open. So people can't go around opening all the panels and making the doors really annoying to open. --- code/datums/wires/airlock.dm | 5 +++-- code/game/machinery/doors/airlock.dm | 23 +++++++++++++++-------- code/game/machinery/doors/door.dm | 18 +++++++++++++----- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 1ddb46ff271..4188b52b300 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -37,7 +37,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 . += text("
    \n[]
    \n[]
    \n[]
    \n[]
    \n[]
    \n[]", (A.locked ? "The door bolts have fallen!" : "The door bolts look up."), (A.lights ? "The door bolt lights are on." : "The door bolt lights are off!"), ((A.arePowerSystemsOn() && !(A.stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), - (A.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), + ((A.aiControlDisabled==0 && !A.emagged) ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), (A.safe==0 ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."), (A.normalspeed==0 ? "The 'Check Timing Mechanism' light is on." : "The 'Check Timing Mechanism' light is off.")) @@ -176,7 +176,8 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 return if(AIRLOCK_WIRE_OPEN_DOOR) //tries to open the door without ID - //will succeed only if the ID wire is cut or the door requires no access + //will succeed only if the ID wire is cut or the door requires no access and it's not emagged + if(A.emagged) return if(!A.requiresID() || A.check_access(null)) if(A.density) A.open() else A.close() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 85e9bb845d7..266a4d69cce 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -441,7 +441,10 @@ About the new airlock wires panel: src.hack(user) return else - user << "Airlock AI control has been blocked with a firewall. Unable to hack." + user << "Airlock AI control has been blocked with a firewall. Unable to hack." + if(emagged) + user << "Unable to interface: Airlock is unresponsive." + return //Separate interface for the AI. user.set_machine(src) @@ -876,7 +879,6 @@ About the new airlock wires panel: playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") if(do_after(user,40)) - user << "\blue You removed the airlock electronics!" switch(src.doortype) if(0) new/obj/structure/door_assembly/door_assembly_0( src.loc ) if(1) new/obj/structure/door_assembly/door_assembly_com( src.loc ) @@ -912,6 +914,11 @@ About the new airlock wires panel: if(31) new/obj/structure/door_assembly/door_assembly_science( src.loc ) if(32) new/obj/structure/door_assembly/door_assembly_science/glass( src.loc ) if(33) new/obj/structure/door_assembly/door_assembly_highsecurity(src.loc) + if(emagged) + user << "You discard the damaged electronics." + del(src) + return + user << "\blue You removed the airlock electronics!" var/obj/item/weapon/airlock_electronics/ae if(!electronics) @@ -925,17 +932,17 @@ About the new airlock wires panel: del(src) return else if(arePowerSystemsOn() && !(stat & NOPOWER)) - user << "\blue The airlock's motors resist your efforts to force it." + user << " The airlock's motors resist your efforts to force it." else if(locked) - user << "\blue The airlock's bolts prevent it from being forced." - else if( !welded && !operating ) + user << " The airlock's bolts prevent it from being forced." + else if( !welded && !operating) if(density) if(beingcrowbarred == 0) //being fireaxe'd var/obj/item/weapon/twohanded/fireaxe/F = C if(F:wielded) spawn(0) open(1) else - user << "\red You need to be wielding the Fire axe to do that." + user << "You need to be wielding the Fire axe to do that." else spawn(0) open(1) else @@ -944,7 +951,7 @@ About the new airlock wires panel: if(F:wielded) spawn(0) close(1) else - user << "\red You need to be wielding the Fire axe to do that." + user << "You need to be wielding the Fire axe to do that." else spawn(0) close(1) @@ -1033,7 +1040,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/autoclose() - if(!density && !operating && !locked && !welded && autoclose) + if(!density && !operating && !locked && !welded && autoclose && !emagged) close() /obj/machinery/door/airlock/proc/change_paintjob(obj/item/C as obj, mob/user as mob) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index e4d26278b14..20db61e75f9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -40,7 +40,7 @@ //return /obj/machinery/door/Bumped(atom/AM) - if(p_open || operating) return + if(operating || emagged) return if(ismob(AM)) var/mob/M = AM if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent shock spam. @@ -116,8 +116,9 @@ /obj/machinery/door/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/device/detective_scanner)) return - if(src.operating || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. + if(isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. src.add_fingerprint(user) + if(operating || emagged) return if(!Adjacent(user)) user = null if(!src.requiresID()) @@ -126,7 +127,14 @@ flick("door_spark", src) sleep(6) open() - operating = -1 + emagged = 1 + if(istype(src, /obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/A = src + A.lights = 0 + A.locked = 1 + A.loseMainPower() + A.loseBackupPower() + A.update_icon() return 1 if(src.allowed(user)) if(src.density) @@ -198,9 +206,9 @@ /obj/machinery/door/proc/open() if(!density) return 1 - if(operating > 0) return + if(operating) return if(!ticker) return 0 - if(!operating) operating = 1 + operating = 1 do_animate("opening") icon_state = "door0" From 8913ed63c07d361cef234d0644753aaf26367c92 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 17 Mar 2014 09:43:36 -0600 Subject: [PATCH 037/102] -Added a span at pete's request -Blocked the AI from using shortcuts to interact with emagged doors -Blocked people from closing an emagged windoor -Blocked a few other operations from opening/closing emagged doors -Forcing a door open with a crowbar/axe won't cause it to use power or play a sound --- code/_onclick/ai.dm | 6 +++ code/game/machinery/doors/airlock.dm | 51 ++++++++++++++----------- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/doors/windowdoor.dm | 2 +- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 7667b7fcd3d..8e1d42c1926 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -101,6 +101,8 @@ return /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! + if(emagged) + return if(density) Topic("aiEnable=7", list("aiEnable"="7"), 1) // 1 meaning no window (consistency!) else @@ -112,6 +114,8 @@ return /obj/machinery/door/airlock/AICtrlClick() // Bolts doors + if(emagged) + return if(locked) Topic("aiEnable=4", list("aiEnable"="4"), 1)// 1 meaning no window (consistency!) else @@ -126,6 +130,8 @@ return /obj/machinery/door/airlock/AIAltClick() // Eletrifies doors. + if(emagged) + return if(!secondsElectrified) // permenant shock Topic("aiEnable=6", list("aiEnable"="6"), 1) // 1 meaning no window (consistency!) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 266a4d69cce..63cb20acf95 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -918,7 +918,7 @@ About the new airlock wires panel: user << "You discard the damaged electronics." del(src) return - user << "\blue You removed the airlock electronics!" + user << "You removed the airlock electronics!" var/obj/item/weapon/airlock_electronics/ae if(!electronics) @@ -940,20 +940,20 @@ About the new airlock wires panel: if(beingcrowbarred == 0) //being fireaxe'd var/obj/item/weapon/twohanded/fireaxe/F = C if(F:wielded) - spawn(0) open(1) + spawn(0) open(2) else user << "You need to be wielding the Fire axe to do that." else - spawn(0) open(1) + spawn(0) open(2) else if(beingcrowbarred == 0) var/obj/item/weapon/twohanded/fireaxe/F = C if(F:wielded) - spawn(0) close(1) + spawn(0) close(2) else user << "You need to be wielding the Fire axe to do that." else - spawn(0) close(1) + spawn(0) close(2) else if(istype(C, /obj/item/weapon/airlock_painter)) change_paintjob(C, user) @@ -972,15 +972,18 @@ About the new airlock wires panel: if(!forced) if( !arePowerSystemsOn() || (stat & NOPOWER) || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) return 0 - use_power(50) - if(istype(src, /obj/machinery/door/airlock/glass)) - playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) - else - playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) - if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) - src.closeOther.close() + if(forced < 2) + if(emagged) + return 0 + use_power(50) + if(istype(src, /obj/machinery/door/airlock/glass)) + playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) + if(istype(src, /obj/machinery/door/airlock/clown)) + playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) + else + playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) + if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) + src.closeOther.close() if(autoclose && normalspeed) spawn(150) @@ -1007,13 +1010,16 @@ About the new airlock wires panel: crush() - use_power(50) - if(istype(src, /obj/machinery/door/airlock/glass)) - playsound(src.loc, 'sound/machines/windowdoor.ogg', 30, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) - else - playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) + if(forced < 2) + if(emagged) + return + use_power(50) + if(istype(src, /obj/machinery/door/airlock/glass)) + playsound(src.loc, 'sound/machines/windowdoor.ogg', 30, 1) + if(istype(src, /obj/machinery/door/airlock/clown)) + playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) + else + playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src)) if(killthis) killthis.ex_act(2)//Smashin windows @@ -1033,6 +1039,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/prison_open() + if(emagged) return src.locked = 0 src.open() src.locked = 1 @@ -1040,7 +1047,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/autoclose() - if(!density && !operating && !locked && !welded && autoclose && !emagged) + if(!density && !operating && !locked && !welded && autoclose) close() /obj/machinery/door/airlock/proc/change_paintjob(obj/item/C as obj, mob/user as mob) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 20db61e75f9..4855cd3efa9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -86,7 +86,7 @@ if(!src.requiresID()) user = null - if(density) + if(density && !emagged) if(allowed(user)) open() else flick("door_deny", src) return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 09b9452cebc..aa0cba53e94 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -100,7 +100,7 @@ return 1 /obj/machinery/door/window/close() - if (src.operating) + if (src.operating || emagged) return 0 src.operating = 1 flick(text("[]closing", src.base_state), src) From c483e32eb00a01193e868140a2fba8ced194ca0d Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 17 Mar 2014 19:10:20 +0000 Subject: [PATCH 038/102] Added a SMES to the gravity generator room, unhooked the room from the main station powernet. --- _maps/map_files/tgstation.2.1.2.dmm | 36 ++++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index bb1857c74c1..e840dc6d631 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -5539,7 +5539,7 @@ "ccA" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "ccB" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "ccC" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) -"ccD" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/gravity_generator) +"ccD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/gravity_generator) "ccE" = (/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/engine/engineering) "ccF" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engine/engineering) "ccG" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering) @@ -5568,7 +5568,7 @@ "cdd" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cde" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "cdf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cdg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/gravity_generator) +"cdg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/gravity_generator) "cdh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall,/area/engine/engineering) "cdi" = (/turf/simulated/wall,/area/engine/engineering) "cdj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/engineering) @@ -5606,7 +5606,7 @@ "cdP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cdQ" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cdR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cdS" = (/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/table,/turf/simulated/floor,/area/engine/gravity_generator) +"cdS" = (/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engine/gravity_generator) "cdT" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Engineering Delivery"; req_access_txt = "10"},/turf/simulated/floor{icon_state = "delivery"},/area/engine/engineering) "cdU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engine/engineering) "cdV" = (/obj/machinery/camera{c_tag = "Engineering West"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engine/engineering) @@ -8271,6 +8271,7 @@ "ddc" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating/airless,/area/AIsattele) "ddd" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating/airless,/area/AIsattele) "dde" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/AIsattele) +"ddf" = (/obj/machinery/light,/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor,/area/engine/gravity_generator) "ddg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "ddh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) "ddi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) @@ -8309,15 +8310,15 @@ "ddP" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/radiation,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) "ddQ" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) "ddR" = (/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/turf/simulated/floor,/area/engine/gravity_generator) -"ddS" = (/turf/simulated/floor,/area/engine/gravity_generator) -"ddT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/gravity_generator) -"ddU" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) -"ddV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/engine/gravity_generator) -"ddW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) -"ddX" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) -"ddY" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "19;23"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"ddZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) -"dea" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engine/engineering) +"ddS" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor,/area/engine/gravity_generator) +"ddT" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/lattice,/turf/space,/area/space) +"ddU" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) +"ddV" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"ddW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"ddX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/gravity_generator) +"ddY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"ddZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/gravity_generator) +"dea" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "deb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "dec" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) "ded" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer) @@ -8330,6 +8331,9 @@ "dek" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "yellow"},/area/engine/engineering) "del" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/engine/engineering) "dem" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/engine/engineering) +"den" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "19;23"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) +"deo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/gravity_generator) +"dep" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engine/engineering) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8514,11 +8518,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaafbWwccebWyaaabWwccebWyaafbWwccebWyaafaafaafaafaaaaaaaafcbiddxddDddCddBddAcbiddzddycapcdAcapcdBcapccEccFccFcapcdCcdDcdEcdFccJcducdGcdHcdGcdIcdJcdKcdLcdLcdMcdLcdLcdLcdNcdOcapbJebJebJebJebJebJebJebJebJebJebJebJebJeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaabXeaafbZpbZqbZqbZqbZqcdPcdQcdPbZtbZtbZtbZtbZuaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagxaafbWwcdRbWyaaabWwcdRbWyaaabWwcdRbWyaafafRaafaafaafaafaafcbiddEddHddnddJddIcbiddFddGcapcdTcapcdUcapcapcapcapcapcdVcaBcdWcdXcdXcbQcbQcbQcdYcdZcdNcaBcaBcaBcaBceacaBcaBcdtcebcapaafaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcabcabcabcabcabaaabVFaaacabcabcabcabcabaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafRaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaafRaafaaaaaaaaaaafcbiddKddOddNddMddLcbiddQddPccsceccedceecefcegcehceicejcekcaBcelceacaBcemcctcapcencapcencapcctcemcaBcaBceocaBcdtcepcapcapcdicdicdicapaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaaaaafaafaafaaaaaabVFaafaaaaaaaafaafaaaaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRafSafSagxafRafRafRafRafSafRafRafSceqaaaaaaaaaaaaaafcbiddRddTddSddVddUddXddWddZddYceQcbQdeadebcetcetceucevcdtcaBcewcexcaBceycapcezceAceBceAceCcapceDcaBcexceEcaBcdtcaBceCcapceFceGceHceHceIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaabVFaaaaaaaaabXebXebXebXfbXeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRafSafSagxafRafRafRafRafSafRafRafSceqaaaaaaaaaaaaaafcbiddUddWddVddYddXdeaddZdeodencfTcaBdepdebcetcetceucevcdtcaBcewcexcaBceycapcezceAceBceAceCcapceDcaBcexceEcaBcdtcaBceCcapceFceGceHceHceIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaabVFaaaaaaaaabXebXebXebXfbXeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicdScdgccDccfcbAcbicaXbXrccscaBcaBcdtcaBcaBceLceMceNcdtceacaBcbKceOceOcePceQceRceScdWceTceUcdYcdYcdNcaBceacdtcaBceVceWcbIceXceYceZcfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcfbaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicbicbicbicbicbicbicbicbicapcercaBcdtcaBcaBcffcfgcfhcdtcficfjcfkcflcfmcapcfncfocfpceacfqcapcfrcfscfscfjcficdtcftcfucapcfvcfwceHceHcfxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagaafaafaafaafaafcapcescaBcdtcaBcaBceKcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaafaafcapcfIcfdcdtcfccfKcfLcdicfMcfNcapcfOcfPcfQcfRcfScfTcfUcfVcfWceVcfXcfPcfPcfPcfYcapcfZcgacapcgbcbIcgccfGaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbiddSddfddRcbicbicbicbicbicapcercaBcdtcaBcaBcffcfgcfhcdtcficfjcfkcflcfmcapcfncfocfpceacfqcapcfrcfscfscfjcficdtcftcfucapcfvcfwceHceHcfxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafczcczcczcczcczcaafaafaafaafcapcescaBcdtcaBcaBceKcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddTaafaafaafaafaaaaaaaafaafcapcfIcfdcdtcfccfKcfLcdicfMcfNcapcfOcfPcfQcfRcfScfTcfUcfVcfWceVcfXcfPcfPcfPcfYcapcfZcgacapcgbcbIcgccfGaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcapceJcfecfycfHceJcapcapcapcfzcapcapcdmcgdcgecgfcggcfjcghcfjcgicgjcgecgdcgkcapcapcfzcapcapcdicdicdicdicglaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaafaaaaafaagcapcgmcgncgoaaaaaaaaacgpcgqcgdcgdcgdcgdcgdcgqcgraaaaaaaaacgscgtcgucapaaaaafaafaaaaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaaaaaaaaaaafcapcgvcgwaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaacgxcgvcapaafaafaaaaaaaaaaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 557236eb809f0e0022e05cac75f5c878fab3e035 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 17 Mar 2014 15:15:58 -0500 Subject: [PATCH 039/102] Happy St Patrick's Day! -Adds corned beef and cabbage -Adds green beer -Removes some old commented-out code -Reorganizes food.dmi. PLEASE KEEP ANY FUTURE SPRITE ADDITIONS TO THIS FILE ORGANIZED OR I WILL CRY. -Ghostburgers and Booberry Muffins now use Alpha var instead of different sprites. --- code/modules/food/recipes_microwave.dm | 41 +++++------------- code/modules/reagents/Chemistry-Reagents.dm | 6 +++ code/modules/reagents/Chemistry-Recipes.dm | 7 +++ .../food/drinks/drinkingglass.dm | 12 ++--- .../reagent_containers/food/snacks.dm | 16 ++++++- icons/obj/drinks.dmi | Bin 56731 -> 54965 bytes icons/obj/food.dmi | Bin 90367 -> 88006 bytes 7 files changed, 41 insertions(+), 41 deletions(-) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index e983fc6e50b..2c6558d10c3 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -1,16 +1,6 @@ // see code/datums/recipe.dm - -/* No telebacon. just no... -/datum/recipe/telebacon - items = list( - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/device/assembly/signaler - ) - result = /obj/item/weapon/reagent_containers/food/snacks/telebacon -*/ - /datum/recipe/friedegg reagents = list("sodiumchloride" = 1, "blackpepper" = 1) items = list( @@ -25,16 +15,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg -/* -/datum/recipe/bananaphone - reagents = list("mushroomhallucinogen" = 5) //Trippin' balls, man. - items = list( - /obj/item/weapon/reagent_containers/food/snacks/grown/banana, - /obj/item/device/radio - ) - result = /obj/item/weapon/reagent_containers/food/snacks/bananaphone -*/ - /datum/recipe/jellydonut reagents = list("berryjuice" = 5, "flour" = 5) items = list( @@ -95,7 +75,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix - /datum/recipe/brainburger reagents = list("flour" = 5) items = list( @@ -135,7 +114,6 @@ reagents = list("flour" = 5) items = list( /obj/item/clothing/mask/gas/clown_hat, - /* /obj/item/weapon/reagent_containers/food/snacks/grown/banana, */ ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown @@ -262,6 +240,15 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry +/datum/recipe/cornedbeef + reagents = list("sodiumchloride" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/meat, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, + /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage, + ) + result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef + /datum/recipe/eggplantparm items = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, @@ -943,7 +930,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup - /datum/recipe/slimesoup reagents = list("water" = 10, "slimejelly" = 5) items = list( @@ -957,14 +943,7 @@ /obj/item/weapon/ore/clown, ) result = /obj/item/weapon/reagent_containers/food/snacks/clownstears -/* -/datum/recipe/boiledslimeextract - reagents = list("water" = 5) - items = list( - /obj/item/slime_core, - ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore -*/ + /datum/recipe/braincake reagents = list("milk" = 5, "flour" = 15) items = list( diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 154474e3c85..55c9e0454bd 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2830,6 +2830,12 @@ datum ..() return + ethanol/beer/greenbeer + name = "Green Beer" + id = "greenbeer" + description = "An alcoholic beverage made from malted grains, hops, yeast, and water. Dyed a festive green." + color = "#A8E61D" + ethanol/kahlua name = "Kahlua" id = "kahlua" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 6d51acf9f65..f70b506278c 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1802,6 +1802,13 @@ datum/chemical_reaction/pestkiller required_reagents = list ("beer" = 1, "ale" = 2) result_amount = 3 +/datum/chemical_reaction/greenbeer + name = "Green Beer" + id = "greenbeer" + result = "greenbeer" + required_reagents = list("greencrayonpowder" = 1, "beer" = 10) + result_amount = 10 + /datum/chemical_reaction/hooch name = "Hooch" id = "hooch" diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 0a3acf04f16..6aae31a7a7e 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -8,15 +8,7 @@ volume = 50 on_reagent_change() - /*if(reagents.reagent_list.len > 1 ) - icon_state = "glass_brown" - name = "Glass of Hooch" - desc = "Two or more drinks, mixed together."*/ - /*else if(reagents.reagent_list.len == 1) - for(var/datum/reagent/R in reagents.reagent_list) - switch(R.id)*/ if (reagents.reagent_list.len > 0) - //mrid = R.get_master_reagent_id() switch(reagents.get_master_reagent_id()) if("beer") icon_state = "beerglass" @@ -26,6 +18,10 @@ icon_state = "beerglass" name = "Beer glass" desc = "A freezing pint of beer" + if("greenbeer") + icon_state = "greenbeerglass" + name = "Green beer glass" + desc = "A freezing pint of green beer. Festive." if("ale") icon_state = "aleglass" name = "Ale glass" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 75ce2979889..15b8d780d10 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -595,6 +595,16 @@ reagents.add_reagent("toxin", 2) bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/cornedbeef + name = "corned beef and cabbage" + desc = "Now you can feel like a real tourist vacationing in Ireland." + icon_state = "cornedbeef" + trash = /obj/item/trash/plate + New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 3 + /obj/item/weapon/reagent_containers/food/snacks/faggot name = "faggot" desc = "A great meal all round. Not a cord of wood." @@ -642,7 +652,7 @@ /obj/item/weapon/reagent_containers/food/snacks/burger/ghost name = "ghost burger" desc = "Too Spooky!" - icon_state = "ghostburger" + alpha = 125 /obj/item/weapon/reagent_containers/food/snacks/burger name = "burger" @@ -755,7 +765,8 @@ /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry name = "booberry muffin" - icon_state = "booberrymuffin" + icon_state = "berrymuffin" + alpha = 125 desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" /obj/item/weapon/reagent_containers/food/snacks/pie @@ -2410,6 +2421,7 @@ name = "not-a-sandwich" desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache." icon_state = "notasandwich" + trash = /obj/item/trash/plate New() ..() reagents.add_reagent("nutriment", 6) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 669c346169746a003fdb76a016faede2d12fec72..d4cbb96c20d5dae6f9726c59ec6723f1a4cec32a 100644 GIT binary patch literal 54965 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

  • #XLX(1o7NI2+xxn4n9a2OW9%hj91rQ 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∨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 IM6N<$g3ypT@Bjb+ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 68dab1900b8db3b8bf416ffa2f24ce34de61a8eb..b7762ef01b9870b0cf4d7d53bff11e09fff2af56 100644 GIT binary patch literal 88006 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

    Aoj&kEB;iK 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 VUDgk>_l*Dm002ovPDHLkV1gI@gR}qu literal 90367 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

  • 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 From 93274466fa17204ba53dda50be4d846860942cf8 Mon Sep 17 00:00:00 2001 From: Cheridan Date: Mon, 17 Mar 2014 15:22:11 -0500 Subject: [PATCH 040/102] Too many donuts --- icons/obj/food.dmi | Bin 88006 -> 88672 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index b7762ef01b9870b0cf4d7d53bff11e09fff2af56..3619504282e9a39ae30f0795fbec5692265b4458 100644 GIT binary patch literal 88672 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

    &j{ZS=)bYV(p7l`k^IVVunXG|{ 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 z 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 literal 88006 zcmbrlbyQnT^fnsYt;OBFKyivY6qn*Ig#yJLg1b|SHMmQ0cXudmMT@%z3wFc%yWjWE zm9_4=tYqadnar8lv*+2*er8UjsXNo82~`| z>#eEdDrM7uCR^yYTrcp}u?!BGE2gM??@$RV3VzQa&>!+_BE=+@h(p(PDf+UVt3_!i<}+O%2L zl(R0i@R`Ky?}Nb*E*%$EDdV@vy0fU{)ogJJ)LpKN%Y|StXMs%RGwt>A@m!yYx9u#gwk6m^>;anG~rk#o{T> z+yyFV`0aFf}kure@%b>u$tgOEOsW(KTkAS)x7nB8tKgDAA&C#^^TShIka)MMt) z<$4y#9cXaO>I%M-gTZzIHPCL;6xTH6cUigg29Bx(^)wD2^20d@p42-0`N44ubEJ*( z5|=m|>L6V>RhBQDO3V}!nmQFL0w3cLI=E<*$n+aX4qCA|+P+%W=6k>n2x8`p&84nz z3Yzj!h7F7=70WqJF|VqO=qDC(EKs868IStaVLF95AC2%sE2%WNgn8%v@Otp-hj5Ny zI~?ra>5^i6yA@ZlYP(r289f?*GGb&qK0ZWcfiRs3Ne88|M?}AFNBpW(Qx2N`gA{LJ zh90A+q=x(@fE3i+(2ebVF)zMJrf*+hvTVWdS*y*dQojgw-tl4~*5UF82_;JuF1qG8 z2CT|A^gy=+$+Fnen2r0to~!LcExc@8UrVu;)|twv=VuMEQlhF_!AAjkLr!YRu(9%6 zM`&T|Y8Qx-Slmj1Ls=g*gTM@jh`$auYUzd06Y6s|ij$CpPo$-9U8-k?E43Qd2=D4#^KT~ zA<`5qmS4bMb4h$?tYDU(#xN|w0k%pgR4*`P)d#^9rj+(ODM)|Doq7R(?miGu2&?>h zGP^UB25l>0;>UFcS`$tD$_M4Y4`N}1>zWpV_$i&AJ|jNnSsr%$2vs-I{>hzu$)#WV ziDD>peP$A#+&K4rsq}4kaL0w+hpVFBCHYPn5*uVp^qU`DW?}%#!KI~`?UO&pdu)+# zlQl_5(o|-U!)P?hW52!nuzyZoM&@uVNoQ>e3t5L{zJ!S=R&1D7kA*||G?{LbZ=6KI zOArP(v2uLcmRi*XtW23?_i1b(32Iun?=Bie|AX7SAhsQJCKju(Lx}>iwf;OXJW2G%@F*2_GHTU(p;bTV1;cTF7zxX*Lki!0l38hu*KPSHdmx?%T%R7sUq$)vRN z69AwD$V-W9dS;wtdKuu}ybc+|F*8zA_EI~01$pA9dD87_bMsXEHU=Im*leh?)Sb-K zsn6fL9w@Msg+=KjIOHJBhuy+1J>TuT*Lc9uWqSiQED@d2$s&(CUWjl&ce z@ii%IZFl?Jzd_WeRzD~b9cuh!WDsQt;){Sm*7#v((6*a+N%qQgSPi3Cv@19B6Ddag zHuq!0;}v89V&d}{01K&|t@yB^rN~*Mdd~;r+lu75kR92bI_Bijtz9%Uw2=^Od~s-B zf0>TH7FGZI_fJkyQOafZ`E|YOK-{Cx0B;4Y8xNqjf1 zuvzf~stAvk4$qBp{aci`nM^>%M)~g&?+o4rOckx9c*7~A5Y7$I$uT+nz!22@J;wFY zz2721<{;ty!H`*3S#IVyc~pw-VTd$6!p+ zA6D^+edUhQ!IK;f(8&Niy)uku_sc*CK(2DIoPQNQBL!?yBnIE?DK*H)%H+cUn%mlr zCqOnd$O_-wk?CzBqwq+uB#lxolKR4%`wF!vm%?dBo^Asf4s? zM^WUxf!HJmOXLA;z0|wn+C$WY3Y#-v~|zs)>ha}iI)IpnGinmED>Qf zy#%JYF;gkt!gzCIoeRI~F<@p;C>jAQAni2N^X^2HmL%wKrOBag?E6~lmnm8P;4UqS zL^tHUw3V;C_5PIh>+O-?7+bCBMLDr|UhX9fP)*$V?f=vaTF`8j_>^ z;J-3C^^|Z5Q3iPPRw};ZWfIlpM-&i z?VBSr2E$V1_~h3wgcj!K@hU4TOG-+_q@@w=IUN*t`loz7Az*mpy_KJXQ@+*HDGV{6 z19Kn5^4c9F4T@Ekhih;yZqMS#g<(0q&A|72tduVKP-wV@ka0cPm-x1C?w?0TZZm9Q z-8u|__dVKsUN*2P(82J%?E%HIH-n%2W6dBuvKv-kW*Go*5P(NW&f@QIwXCi_dSJP; zSmVy|p49-HB#m9-&omVV(~|figTEMg8M*(fH74GRsHj9l2%h;Kw8X z!TID+N2gYLP!^T=+T&qz6~Py{MFW6}CHUC~@hI7)5^kUP5hg*D02u)L1incGg?H|= z=MTF&{-veIkehplC#X;_-j|yK1tIqe_pJCJ#$*qt!DIvxgjAP*eFrzT2k*jmmAat| zj6-wFZ&}0GcZQD?UxOM)>$fTY6SpSJvn?KG&}Fk$F4}tJ#PCl?hy0rYGbS(%MdH3? z5@+wvhfN$%f(QT;*0V8mFF2f!T!|+*xNj#~{c4Yjznq(P_#hGT z#gGP#9cI@6AtF}Ee$i(kqgVqG;TE{tUTAsfc~pt|hS?OD+pp+2O(P${eOQ8->3#q! zR4LHwPoG#TRGo`cXG~$ka>pqyimg_t1(veYSfkI>2|-wXqq3qYqhL5GJCV2nOBjHR zG~z!UgOrQ?#fo4Pi2`m4v#@%X-UN4Letlz>v_$A?nW~P3z8tMc;jf+A`ap3DUq$ww zSfp@(8hhr0F+{aTSx>es85uDyiJv^qf_!hJbsJzdn@&+2kF0&=o%h)?6Eib5`iW<* zyoJ#2=+$eyJpn^?4#a$N=#P600iZUg;3^9HK?dCp;UwAU;4#$n4-cPQda{@9yL8vw zBsui2l1X6sn|~(|>GdEpc)WxRy=FSiV+5jCn9!c53WGrk@Vrts@6CQ*Q}Y@>wU_+K zdSKtbDx4J5Ihxq@h`1K+XVo7h!WCG8qG&64*IDSkBz!3(qS$ZkQx3DRHvTo0jGffq zUzY$%Ld+TzwI7W(B7kl_6AotP(b%KtsO#y8HtqMeatc-AYiepnrkchEs_@xaYZi+X zix{e@M2p#zaAAm_MR&gS3kL_556Yi6d*Z|ehwF6+l*bWo885d#R4agk_cbz6Hea#v z#^%R}o>f&h^sakol2LFJ@hIDk>MqVBS$tOL{#{A3Z5@RF-ZQU^I>kdO5t$4vDii0R z2&3<>BJqF~dhj96N`62k{V4fYfXQA6l5yV0&2yrzr4?p+WLn#G>kofw1~`xwX0u44 zDlb7**|@1YfqY-~1#~B6opb4G&%_+D8}i2@txTpqKl|GczgLv;Zd7{?2f-sB(O{rG%=0Dwwa5e^bf3grY~vIL|NUlljyp z`Ny0kImJZJC2_8)nE5Ov0810TOGzU8j~wkd|6;@6?FH{sh_|J^jfT1W2!309Pg3AT znLpOHa6m#pl$}8PngwrG6vzuhH_*z_|HTa^iuoFMwhP-I^)Qces?=8O(b-&slAxHK z9+2wdif1*Gu-e(7v|@A1oCftSqL$0E0c%DN41WlYXe-7?J9yBz~7Vy?Ad)^inh+Zx3ORs#Nel6k-eVPL@rkg|H8mL z42FRC68!{_ChyjZmO3x~Hm8sKtnk%6d*AgT#)&>Sr zmAJuwc4pg@xHF16ywj;plGpo`j)8fBU=yf7M~Cd~6R!l(5=JX(Sa)7sfBvCw>?{3a zDWbq09S#6LIZyX`!QjV4qj9^yCpDs9Q|?}}RG4UhiA?c~4Z`a9h7+JLvl?;Iuw7Nt z;eE4pwr@J6bsr13htbhwX+V@FoCK>mG#?RD4O2dDNK{G=&WbH4O z$qxw-U5=r6il$NDsX7y6h1~GzHELwFlCPBwDJ-0p4nUtC66_aL!n#B(6b$5?*bphH zG;XRdhb>VuBELAP&EO;kCB5JH$;L~XOJ|CVNC7V;6k`6N;>(CY>3E9SeC#mtV^8)J zNa5rs*ZDveZ#(Z=fNL-e|l6h2b@^(9Q! zA1JK`48I;*wg>vaxw#E57|0Fw(O zj$kqNL|qI%KBxL4TY}17&tDDI!NSlnH7A>*^5N@ssDFP9{rx%|?uKXhlL&sxdetv-31~0A? zp@f6&Z!G#8b!-D}@q&?72M@y{hPcnN)D4Gu+}TlnA$k@QeO@$Tl6%nA56XOougxM4wFOs7t^elk9L+=W@W#8OJrMHC{or^% zgl3<`i9Ww|04HG}GJ3hjeCYGMVPIc4mcA=CHE@OjIHUb};|Lk~aaOR~_La-t@hlD` z@EAbe=r*NZY2h1$dAcqhEDlVKvu9*`mNaq#Y*e3beX!#$y9>lJb9kX`d->FI?r zHKNFW{AeupuM=b;a@k<{Y;f{i(@TV~39BOw z*1?iOmr)Y>P-U>*oV zAFF&lz2g3Q`$N^eaznKPV*IYog2E3bU|!!(5@_g_^j!sDE%xcyv!qJt85tRQv$KE` z2OE3JPVj%cSRKNj+Mt8DLxscWy?c_^VEaN|}Crdca&pdpHijabh8gtnv zhcy!K6WQ&ZJjtug`T5T} z>S~L{@p>zaQrO4QOZ3KVo{_yX=vJAH*P$uVGFR)EQ%_hJswn6&>n=}DJ|Rg%3XBa5 zSbvt6mFpXH&Kq}i+!UU~lVFQQGakGy?2bSU)PbOI6Xd)K>cxtsSC3PFJFp~8h_gWuabllq7jfsB&%1b0 zj#Ue<$*TQ}&5$1N<7|E>SU*2M)$;j^>+8O*wqKq4_8O3_8#p-Fgv=!KTGDrB*h+TL2jvq!ZR{bvH)MsO3nr2bRb-0H>Te*K((cieZZffdmxq%`J zMlLe4c>TMSO#MM#KIN5nb2dCF=tgEULWxkg7dd1pRS}?spZ<)Df{E`}Q8sUL|M+;E zEZEjuU$VB^6aI!x^2XnQQ32ReEauBCmcQ@EnBCI1=44Z#HgF86Gq5oj4lGzg?S9l)1 z=oN@?uk17`p#I@4XJ?>8usY3Cz^*`m_RQ4kL;${*U?}5-{47ftFOl2@;v@WiYY)%D zd3kR4G3M`Ddl3A#sm+@FV=4f&E_HD>AqTW>tj?JH-ImyDL$V6}8qP%7SQ*MazmvT+ zC<|>cDA*+MkM|cv9|m2zWl#hDhy86X_|pB@3E7^#y5SceB-nFr^xXknnPbb>4mbd| z=c2g;Skg`eKzV<|pjN#b@tr*<7P~`GPhF$^IrmfxgD25%Wr_i+5m&&sp$FEh_wV&t z-D2a~?d2hq&7rAcPy~0WIMauO^U<9N(}aAIy#4|0TadB8`fcY1rk%gF;QJ22Ut|K# z1+**C>tqvpF7Ifc8*^0SO$Ul#sC; z4E$Po;XU{c(3OtLzB?v0JvJdc$y@gXA^fnLTu7ok+~|Z@h(+*XU_d*z6%UJ(4`Zzq zfxj*lkx$ZoxfyQksh)aHlRy2LP{fx%jzUx!Qc#5iC81Lil9UxO_xTr*i*&KDt)y6e z|B|n^So2GeyJFP9eaiC1P0Z!mRrJ7_ROn2FtmRT+_eNxoC3^c&Ku7kjr%Dv%w)|Xm z_!a=5$^W;`)jO=&udEwZ{LUjkXOk5=G1!8ZMD(Y|5_^59c^dYu-5jXxq-_r=vO|7B4X&-``rh6sV;R{QKLGtg( z=Ut^f0TC{OsHlJPe7#ashd>yYt+)@W5h@HYqBi^4@eNfX(?`=>lusj~A3i8K=Rye< zuPwAG_OswQ9rJ*nVPRs(-I#;prCbnt(Vl`u-e(Se7rrB#vWe=-77`!|Rz6oQJ72{! z?@7(N8evrM1iN*wt73CIJ`4eyavmhl1HSR25Peo3Zm6)@$v*Z1RDF|UAF*`dx zBZHK370h|N;DCWB_str)z|A!N1%v;|xO`Ed^|OCA(Q|9^N=XI04NKzsD@mhA*Eg+W z1(;WkPd-OYTJPUsV+Tx%zLLJDR}8R0#zv#OMUB~GFoETOQN@Vd+G9W7TdXpU|5C2C zENcw%$SZl-Z3sBXC=Yo-(gvjQPmdKkD9`Evh2fy>bY~V=<_YlGK{HJfN^&0zn1(@Y zU;UmeNlJpD&X`A+anXsJV!(58mp5U(u~3eK9P4sc16Do@i(FuEew~q_xn!&w8Ag-b zP*vB9&2{VH;USb!eT7bG=)W7|wg4B|}SiR7k}k5wDR9uDBcHE`0$+P99}gD*@bv{c9nCSt5DV*B+g92&Kkq3LVgxd-bajrXaPXs-(-^6v2ZELS zf>sDHgFi5hS-az1s>TWcqZ{2W4B1}$q+ZlCrZKzQQ9gb#)=HQuQXGB~-LC^wpJlnl zcp81i@X5TFd%c}m6g20pWsQoC4t4(G)-b<2Gozk+a(Gy(eS3Y)wLeZEFek(DwNaAN-^~v#eu(@nJv9uWSb^QQU zLMO?7Jt|OAF&#^in8XHLROIOBYX6=-gpVZ5vUDQ+!#Id<@(3v}@#VA%>a);*+Ig=W z%eN;Qgtd4I5AeM-%=lsnkVqGOxUy`}!*JzUlV<{hPK~)B04v-%n}#X>($R?yKR~mQ z?l(P& zDvB9=v&zD+1nByZcSeS;8M{vpZ(zU3MF}Mz5q{S2fIr;*bR{?f<0_2)ZFjWf{wB>M zS6RlB|9Vh@l`6Y{cPMq4-!ULt$iophG>%&#_LP7aVMj z2L?<`OhB`gR_FL6NeaeFOrwMNyWhg!q9rNeFkcsIP0=F5#T=!Z41JDBW(>f=6gJ;R z?YL7ZoZHL@pA%qh&ojQE>ic^oK`rI*v!0T?R!%{oFM!feSM5{|R=?k`#9`){G`Oa+k7x zjNej}aNkYAhC4Vm%*5|OLHlf}hQ{yVxYoi_A{RHFC3E$n~3O}cObr5 zDNZc`H~ftI%|IF_ReK@_!S3b?dOlfG-2=8cA<8$52MTyoRAIPYEUF7hoF{BpWBYH9 zKYA3#{fOkC5etA3n6~Xs23ynQr*T0q6~hx*8n$ACM!4ra{^}yK^6Q-%N-uViqj|2{ zZmr9h&gIDGBWIU{PG`uLU@o&TJm=Mv-hZsYH&x+5nx?jha*8F0#E`U4_!PY z$gHNJ0Wp$^m4}pQ|1PlYeVHXhJ;}+>xV(!@P<&WE2^x9@m#(!=pr$7PCS{x4{`pd4 zK6z^E?qwSWU|mkRhgXE$PB#q($YDTZWi>mLaDm8W7)G#>UpY9Ssc_*9j4AS;bqJJM zLe-!8Ln;8Y(C7HQlzyS*9VUZ4$q5h-N@k+;Wq*>b;+3fI?9S0p?ZYbz{48?VTME%7NoI76Mh0w64IjDj=_4)2CJbEt}aN z))6s!-pczw$iX=*m2t#ELngG{Jf=qLMhht^DM~&* z0_gG>V7=4rI4#5yyA&xgGMwBJJwG!eRr_CO0bqT)5MDlu{~Nlt`_%P|G-&x{%AMZZ zgIf@~f3)JmL=C;PjYX+$>SVHEn6Fi?QI07s#RYz!SbDs96G21{o94IAPs5f;vDe{Q zb*jbQebiTq=m0Av3UDXggjP-0SD2hH{+AXPIIsiz4kV%7uiiaMK`*4n4ugEY6K99O z0L&$FyxoLt6>z0$Xy>3g_4fVc_UDn2JY&Jql!>vi;Hs)~RKUf}uDiD%a}yfh9Kkm3 zF*wYi)$DoM6lOmg72sU&w)L$)i*(uewYF(v5N@_8m!BOA04|cG4;`!AfM$HqR^b3o z&(AkSElJJ}KFW6D7=- zYmcqPYgJ4p6|XJB^m9)O@vyUF2~W?mK^l^5M1QV?TtJF>2EThWyPSS*e>pj^%Wv%N z7Lx{lVa8)-W{&x5U}(4!A_AagV1NT~6JxBdt-%1EAMdmkU-#<Wuvgaji2yO7tR21#3T`&2N=OQ=&=9;%@=kOO1(QQ&ry9Hk-8D=Mt*CEor zO>XG{Wta?r{R~FS_ohyX8p;C)Aveb#9oB`)7m{r52eg2azCd6odtg^r7q;@q#01$$ z)3#zXtzH4U2YgsO7|@NBx-9om8f8+gr+}Me;Jd(sf zx0b~Z+apVczLFdju%wV39`C)R;J98FrU_~_a^ok##C(}InK6u-DBp`7#n>3Z^`X)k<97=Xe6#-uP;r^`=Rt3uCG zW2hg}IP>ng2wRp?v4I5-rY6;|?zE{zgd)(o93pgfcIG|(cBeP1*JS%~oqiYd-+erX zySZ_k@*@y2>>v(AJ$OHe?#Zbs2yeaunZWFMf*e;hekT(1_HLaxZo~(EtT-hA9I{mX zPv2p-50J9o&)|#rM+MXyK5L1Qt}YMqb%hC50>a5cgT%{{Iqt5v zFRy>{P#E{PPo)bJ<^u7I0OR2ae2i_cG_N&x|ZA3Lg0wQ|YzstFpL`3F9I>`d}~Sjm+XLa3HITLCm7K2OLC zC>=dQAQC9gbmtvb+Q8}4iyJT*8QDsRpK=^f^fkKlcHWo|iykbEnoNIljOYCf z`oZ=06=EXlAVBAdjK=`%;S~qtb^E(4}rNHtR@Ma6na|Wo|(Q3rLKbZ25 zAmIPpopBFv{$H{C|L+bCZIOi{iauwNR3Zac9K;h>@Mv2Nj4KE2?p8`)nN`mPLmM>I zCxI_-o1!`kGd{VYszv-Tv@#vBT;_QjlmzB)PRi8$6Q5p?-V#Kmc}Nyx^Q+d>hqJe! z-ir(7Hb9BgEilW^YXz5O^fo?xZ$X1yp*`dz5GfzRsgpowG;B0eDN#!KsV@c?M^E_z~uHCUcC{f*^3 zV3S}1^GGH(qVG(HP<^?~-vXOt^V3Z@o=#d-w zFE8S-nJdBnzQ0ss4hV3&`<--Jm)<-RP9{iA>ag08E#e=P0OK@g?$TT-g3`JXDxdd_ zFkm^-U^xQ^DhZnM$acilhK1#qekx^Zc0}O;uTG+c6ML^gK@~RGlv?U_x0>;#{)utv5+Ms+V^*A<^TOfMrtng zT%Yp1aFhQhrbD>dG2+S{f+58eq(`9kq^OBcEV2l}MYAH?azLYSeGr z=aQFa^p#PbZwy}YU9u7Kyub0Hp$6D$&qa zf=&H(b;RhU5YdNTKxj4BWBQ;p>!@E=M)R{CFHh!mE4!%<_5uncnHt5#P_-j?`Sfax zugSnRjKUd55g|qi3H``Q(n9J-$VP;cSq+RX_<_3P3iWrj>lgWZx2R4LkuO>sq@dRh zPvh2><}*t|*4XQV{uP}jCnuw<{OAqw^|V0sxtF4T@+nF1X~52h z4Wzb0YIb*)k#@uQWV`>cTfj}t#?@5w=X5A{Z;wjn6GA{)Ro2g&oo&Om{N?Aa;lmpI zn;su!w&)F1oFT<9R57XmZa^ItxyeVPfo~CtVJ4b>EK<&M7GSIQA4ZWlq$jwlYG2S4 zYAR(}SIGcMGzl*6?>)7cKy5Sc13E`GW5Zv2)$Ja6@$YtmzDJ@!?Kaf9McNqwLf6Jq zRYU$+05i5vYQn-n_&=3d{``yH8S!*gX7geBl~8mgjGj+noi|Q`m(|={fjpqEWTRst zcE+9&g(do^RCTuHTBz(H<~^s`pYaLdrj^f;XPYss>KRQV|K}{9EYzktIAq`5)1?nn zEj}W(KOnE%W6XH?vj+!>yt!*&AO+yS#4Hla5!Ydq904Yv>C{fhTWHZx<@LzwA&T5& zXUfBUuaZjCHA2wq?|%+7HahBfFhvzZ!lyh{9rotEF7b4f9f%j#F5*=H|GAA4vDQ{p z>1B)ytuHWuC{!4SFL-lD@ciy(w9#P~dvN3OI$R%^pHU3I+M5@0P|?TAOlD0~wY`3C zJos~GcN7eTA>MQp0!7((0ByiCfL2yXhALn<7->@&srBVsEK--UzkW!=oX|D%WAUqd zk81%pY$jUNzIu97lr7k2yNLoLW9iZMU4A+zEP^$!(Ku7KepxYR&pT_aEEoq}dzWls;h7 ztZV7$5E_YIwn_uZx}*k_4G#N?3XOVW?b#ep`g4pO8E4elbMsme?G4HPRluH+@u347 zItN?ewEs+6Om}ACh1uB+Snl!OLT+s4R)s?Heo&Vet*^B^J$pAOwXQb^>ReKI-|mbL z-d|$x`P{*tjKmWB^!N-=tK4vFmH8!fHck$Ep1(sq{gSV_ksvw`iXE^Z zu-A3s1A!H-4U6kuKCKb~iY^%+(FVigb~LovD~p1D=kL*9_swiq$w6RH9%xpi(XeXW z5&Z}asp_nx*+0lcWVH&nSCCPDW_!xc@z8y%1Tou>ftOky(O=?`9wkZjS;8ok!Z>Zc zZ#A!WlkZhB(~pJTwFg$(wU^f~SbI+-@Kxy2_(b*o8XFWB6$LNN{l(?WiQOfD)>T=b zM|%L@UUQE*r#yR?OPKudPcMuoI8hdWWJyDLyPzEu$pT#R8N%pG&M>ejbYV!ylh|z4 zhn;)C9t9+%c%z&?0UfQHP)p{&+;6MGo}s(o>}@o!-1-@G8DTg~KDLyE?ej+$OBagv zwCG!T`mDzjv*c5*7q5T)Xo+e?-7izELa}*eS!t9Hv%1#u&7F61@2j_-k^S|tG2$P` z`#>%Vyv-PddX4p%g2)9NS$O~@_ss{;-Ng6Z0As-%eZfDznzl+v-AZ0uKWOx1N$Fq$ z4#KLwFT8#yvf^KT=D$|c&yBSS09}18kOCt{TUJ_-vLocH9&tFDae_2|a2_)mQ^`t;O!_d|8P}TDC%_aFe_lxT~k#o!0 zDv8wemFAnYB!J-R(@$e%!PA+-q^YkOxFLK*zO>twZQu!6uNM1J5PDy!9)>|Xa>;zP zB{Dr17oy;j)IE%9Fc(F8vYKtN*|r*$UJl+yezP)cdHGKlE4#qO6-Wn~|3v}e70 z`@W}(@zwrG{^Umaw)<9W+a1?77W61H)H5l<-%Y7bZ0S%z9Z{i|)6b7h?h_C-nJ1PI z%38jaraCg0q9%pGMn0_S=V@u9j79HP{DXpnr_UNd$8j%cWbb83tot7l)P9%%F}MJA z!0J@AOH8rjCyjHk10U?}-#-y2B&{Lb2e|wCS`LTT#B_Y`CrZcwRjTm$PuBqeJq*A1Fi!{ zVgY1sn_nYo{)9P?vlny$kzOr_NgO$eM5!WlI;;bpcBcQ zV}71!@`F+At}(qySvePkTvK^N{Rbv_KRX&eB`Y(k(cKzDxz>2RcFnC^%tbM7(Rlc3 zQ9_9 zej~^b&J5)HoOe0Tm6V`W%tdOp-IFRPaBwA}XC?x$KPX^r!~U2)RI`(8;0rl}*`aqV z3g)Bntq*4RaGl)+%2|rE_P=1>#rQVAR3l+_`kBnPhyjILeFq1qxN$sSV`CjJu*9~L zU2}l4-8I5#IawFX8+O-D;!h8g%J95E9YzB!md=v}jt6d59DM&5d|5F+Jv?()22DCI z0UnuG<&x1+(C*&`TbXN9H8r``bCCkS>)4J~I)V9*J^^ThH+WO&@kfC^0XX@1C&|y& z=Lgp3Y;rP6N*K&6EYmG6R=RG`3pEXm*%RkBqjB@E!1d@|8nTCU*48@x(4!g# zKZmudc5VqaAs%vpcHLVn&iy60=YBpift6lvHu*P=VrMm%E9!I9=BXQ;<*z>%j_f=i zJ0duhC_I~urPMwWTrx7Bp*U1UH``0X7eJW~p~FTJ>$+EXd9!CCh&T@zZSqT^| z&YVDW!vtFEM2Esx?kO4l>M#`j7n9zgoro5e;gYhAYY9QW^0<=Ux9!-ShAXd3Nyc_J8PSq-+CY)*soBvaKXw zED-%hVGTTA3@eBpu-?bPi*Ycdr+;+px&Cp4rLx+Gj^ua+4rcAfm~8im<)Wc*Ux};# zguJ%{MIpK8%FF2(6}WAk0Fo@-OExQ+l;+nX)VW(*_a1=dPW}phvK)yE~si7l8@!Yf_W7C=iCo46rsj=#;x(= zTwEjjwMgnuj2-6w8D6bCiEYi^H3J+qOiN3Pj@NldcgG!U%c`=qPG=@EALF$QZB3+Q zVfX3~H4>!?3N45nI|l!;Tc#PSE&A1+e3#_ALnJqezhv^&~es9@ARj zur8^TFt*AmNun98;z3r!6e*kjfgCPC>M?0aO#XK`iiS8$W8DHC>9}aiJ-%|)z2FSg zvDtU@G{Pv@hF)bIi{#%@p*bC2v>E=zlk123Uj&Drj)TEntGunbmXhpy*jVMh#KY3k zDeb*v+Ye*k3#0r1Vrn*wZ~!Bo6`i3?)tun>j`^r@FyhwyKB%z-%6*q{9L*F;V&?Aj zs@mblbuXc#9_v4!vM9x7vtR8haB6m;W|)yEB99VxAtL-t7r`v9PFNk8jl{>E)rfZj zyon@*9G~e9y=BmX7Q@&*A%IqrBwe&Fk?!>PI;%;&8`V#jE{1QTPcgQ&=FFDFyzZIJ z@M1)m!VvqGVekEjKAtZ7RL(Ehrl_?IeFUpS4hm@_VTP>Iq#1GZ+KL%aT_dF zqe#Z_9^sq9o~-hHZrbLi31Etgx=~ekgw8>a3p|4hPH0&`^QW#QXve7`_@KnwG5>93 zUj=aopKg`~ML4=I#ET9Ggry-P^%;6>mh%aZtxlTHPw8F93GH-kty@8CwM{?s-p%`} zIvyS#LQV@g=+^G-i7vmOp!s~n7jO$Ud~WzIqJADzR$HkuiBA& z_5OQ?QwQK6q$QeTOo0O%Gu4=gLxnt+OREXhroN^%YYy;Q3TG@>UXo+N)@I6o$Gt&B-n8ixDk7n0&*%N=ZI5I4p&Y63#MyaVbnjEkbOaQK`_qYk%cJxv zQ0Y2ulskOlq-lZhFo{ovSimsR^GRZdAj?+* z0s!=+fIB%b2X7+64iB|i9}K|QC=C&yQyC{U_!}WZga~IO_mOfbyCKmwo#_>1W&yZ+ z_366W+b*NY_(YJC3l=(>Bt?`M8m_cWgCCU@^W2exjYW4FGCw08k3}*HA~7P?LEL8& zoA9$I2V@lggp*vuc_9dx^xLo3Zyoz*QIo&^70vJ}ME!CJ>4gcmW(^M6o(JE zy2ZZ74Ta*ya$o^SGI^GAora*ZEp$w?@nUlRtb#&X2dO#DGz__#_{9w9zONdE+O_kO zp2GtSO!viuEDWG)VkhrQ*s+48gr-Z&-D_3=CV(FbS@V(QNwXpC7yk!uZxt2C6TOQL zF2M;dg9b=&cL;7lg9ivsaCaCiKnU*ct|35h3-0bRxVsKIXYxDuzt(-Y>%N`yGE-eu z-CeSG?W(W7+CA{bI|n2wi6BY_U1E87(6<%uRg0m6opjq6?YEs07Q;lalmL9or`{@+ zJvY*NbL(N|`nRyQ7T{{J6CJ6{zt&1hf=}f5h)053hZ{h!+J=V$58Kwg!wUTQ1h;tp z;(+;h`W&`700ePcXNdX<9=YJZU4n*E%3EAJAQou&@YwHB^o&Jzsy0bwBjm!Gg!gx7 zMorZeePF~`I6sWz25%0g`G$!KxOj&MaJNcV=6=~VCH&Yb982nT^=Ac&`9v+FU?6!7 z=ZI|bti21lnwvVfJR9$foxw)064L)$UhfK`V0U6=RL zSY|$jbFNFY$i}ABqv7}A(%jn;Fqy%}P5Jx`Ya7SIvp`vqPU~72BLNrSLlMx6+^f29 zahvmFUl~>XzGwX$WHSl1oj|)em_mS^%=X;*$@c5|u;lwUDa89trPdGPe_kA5LSj&z zBEf?F2?0Wutx&^v9mA*=W_$Yfj@jzb1Rt9GUpr_OugGzH&OyFFz(b6f34(K7 zF}kK^7lP2pWxrp+lm}pgdhxH!seH1L*M z)w3D!U9f%cDa%pX-zOl+7`i(1hr_{6XEY=MCaW0lt|~Ti@|A*uVPNTdnb#$RLFhJ- zNWru^;i=<5zVw$M%lV#F53f%OIK^W~#bdkG;_^Q>?iy2&TkYF)FG)w=w6x!WIZfW-Yg`L{B$?V0Ie0*{@rosGw?(o&~Z{dFnN~ zJ5Q+oPneH`P<9yY8$(4!rLd$#vS2DzSCMplbuEX)8`0K(o~PbHNpib6=_|QGm!R86 z120zccKAuvHQcpx3hHl&bia`UcqeFBrA>L!>S0EPreQ=O4N=gk7`fATH+qot>r2nB z&f6`l69B7?i#TE6%<4fUT-R>E;CGQbF-ZioGe}QHY_g05tf`5=oD2|Z*70wEC}#HH zf%d`?eC(u65QM$kS2*eu?vN08Y4!lLZqQ4; zzrGIEtD3L)`SWLjL_dw6C_GJcP+?I~p!x14aNzyCUj3$8HJjeEA)gPy=-wEN(HcmH z53?DsC}3W)@W{--{LhN5g%jfxv?1i!l%kKuI(tzAFsngLJy+C?kK@_7B}w-Z;RU+Hju4+K~c0*tzyU(#qK=hfYLPE2zA zpEP_g*RLTM;#yjSK|w(PfRM-8+hiEf9+Z+obfwa_b=WADRE?nbj#aZ3ECP7uV#Io| z)C}+d5EtVr83>TJdjp!A4@6B6eP6>7&yvsJQl5vNQ)*UmNw%W-E$w>r&m0NaAjv}S z<_~IU>0$aH724!76-DaU!zLM6FnMtG(R#H(fa;^?{J`@aa}m!8)FhExd>mmq6#$qB z@&PKJWA}t5s8bT(-4%erSNT_r*eid>%bh+u212OuuohodA{Z*?`4C5M^CA zk`%_LA8PRL_567-a-MK~JmcBhIKSC4n_#POa?*!Na{PSRqH86!fOV-sJ*qb@KttZ~ zd7MoXZ+Te}YGwrDM)e}aDdCpRg^AvjCH?zgOim;Y_2tn`1>o zCfYiu63d_^x4K0%8MlfQGt<-7)$TmXKK=#{g#&#U2S8ww1icmwcTy|#kf`~Ay*_oZ zCjnr^R(rc0*>4i}un}eo2}gMjn9<{kcbf1AywO_?gH5G9zkx_zzhM8Q0U%j&Gsf7~ zR$@)mUQhspukO$iQ{MHA)rq-xq%d=fUAcqu*840GHv|a9lj){;_{ssE-Oy;`L6NM0 z{IVLFd*}DhPlyQ02JB_eL>Lsjc%=yO63vg(A=}Hhg~l*b!;Qd(0Mq8+nC5%XZnS}T zq1hE609n(c()B2OClMnP{+H$~Zyn&`u(yjgmqGvMfo*IQ?~${3UxiAK_7oB zfAu(nB{~xAe?YylU~=*UjxzJTH8&3;StEhHn33d$q#=LHldjf#d_26GKp&zrp_(5p zqc0a;`)y~klSpTjEU<}O?qU3Qfgdgx;wH9S`VEoaLCBkG6P#A=htbe8?Bfh9f&0$c z+0P*%Asg-Y>yoOfIKO}YzPMX)2sS4E#r*Rg3|eV8;%m?D8CyDi zddV@a+~&M36Gvw5FI0Ql#;<)I5;u_p3>DVwy7K1o zktdk3V=5|1Sy*6vxoBHb&M0&zcNYPn!ZJWUh6ja*nf9v1?uPejAP~vLLvjBZf6p_& zC!|#@F}rG3c-Wk)`PX$=uMG~`4+p8w-ozK=Z-@Y_2!wD&VV8p|lUx+OBEkdC8fZhT zhaqP~<6WI9?3SWu#G!32CI3!^paJyY_+`cOMUBCqxaa~_X z$vM!KnB{`x96aaNyRy=}BwAG%SdY3JK?(7JPVr?fHPAK4036`l_l|{=i|g`cB`4o< zB71Oj6jq^k-ghTI1{y`eVm&ddH~HBc(xUX_Y>45lj-L3OiXqowl`xTzF+;lCm0175 zkJ9(Rg3Mp=am=63HWJ{D*sNF%gw=KnBG&xZlMmzJPbL?w_!19G zPXRG;p-u&lo0GNNBG-8qP#D6{8K@R~+h{o-U}l*D7yeO&7uQ&+Df%=|Xf7zgd;iJ(4_NV3!Poha_;>ou4@^>Xm$-B|cnLE!l#aa}zh&}YOzP67#l;WnT>PMUC!@(pck0ovoR3xO*M5YC;c1z&15 z(7rmfVTW?x^p|dzTp$$sy+|W~EvDVYMxrUXkONDQ0eyXriZ@#{6hEQ|DeI8}_buW2 z`cQ>=0J0wE?mnlp!1(pB@0J>ncYq8I1`f2v(JVWyv&BBYeLjY~r#-3F+e^j8Mh}8w zJAaBM4brvIX|jXEC0u~xK&BvI_4)55`sREvXQ=-OqoU47G=K4SO4t7g^sznI^t~#MyZ()jzbzHpLTN&F>jHn2n$@o|OuGW9L$jFVkQnoSwm%~)~t$F>$mh2L84<>jV-H#P2H zXXY|vHG6o5>jEu$K0EGYeia3vO0vKfM&$gC05U%N5a_SVc$*q|Gzr*f^W40S$?%&$ zp|%0=H>W8Z`=er%NGAy2()ryvhsPP-${^|4Q6|*#d~~~<@gC)wTxv;s^A{t{*@ikg zqy6_Xb1m;Wo8__gzte;c?)vsG!!2$r^|Kj8I;=}9BlVTspFSyZ5MYrqo(<}R3!z|bG~7S~VC-m7H zPN9(s&6{98A#|&mvjvM4Xvw{U33$Do&VCKua$*?o%7rrEJ@D!7%>3em%2iB=QHC_2 zk!5h6`5v>!)Pgh2l$?LnlsL=>!*t`Xm(2DzaExhp+Wrvb*R>ASbsh3C2U%s3v8UHd zo`6j1wAVZ#0ik$LQz!hVtWu;X8A<5tOB%lu4UB$dEfg#2_XvO;BZ;i4Vu3~69L~tT zwAEHVyYg&`ta*u=kxhiznpQ7xy7y(5Qeff*G??lRQ|Z6-%*~{^Tzjft^ygaV+*@x#2!%iE`G~ zMt88*VYsc`mhWNSfJOO?Q)llWE$_nEqd%lHt_cFsNX+Wi{-Dj(4$jwW9NGd0F*UoS zAv)hi($Kb)^U{1MZ!v6Cm{X)ErGft)N#!xN4y~jGk7uz=G&K z<^R>_2qH@>_FM0HF`r%?R*l%|-~d&(gDqMQ7o)_iJO$+3ac#!oaVq=$YVRkcS{-o= zjWt0x`qAZ zv|gaqQ2P-c?flT5jv5nl+kNwSRk z|6MgyB^W)$oO=&XgM(`C-_Lvz*Dux)@Nm612eF;n>a#WM*eGrzA#o2f*PDaae2Hz# z&pY{~E1JGNaDW(;5r+(lRHni~75ATBYx9Ns_O7!lEjinNW*Fr&lz0u+AG5qv51>F| zp9jpeKG`>)A9NgP`i{h87;siAQQ>e=5iRQMKK`-j>5nQ8DJ&|fGv4mc&=SpUF^al< zIE(aB4t~1dcol)HA4NaiUy&LAj3JD5ld4Yt7QLW~6qJEWO$8s=MU#EuCjq-t2Ec2( zI*8w)vRZ$Y_jM6_;L+D(e!sQi@6@rl=sj!h(&Hwqidv-4EX0B0RHc|R<*6A-c5i<3 zm=Z$d$h%6pej#)TX>Rw`KiibTcS8m9am&T2tls9B`O&VgHEmAAiy!O8uV*fvkP^?&3%d6~5Yq1i)StxS{fM zVpUZA?sowxH8qRMPxQg00l!|L&ZI5fo^mpt3xndhJq6ovnm85v8)?yyka}U3S5wz8 z;CO%?MP@;c&=%qA62bl-%?U*x^uz$(DEDSdPh!`97so*5rc_pjcT3DX zPvqoU5A}>bP*X-c=ZQOx>EzZwKRR>J#?)TzGE5QDk9YL_%}bV0Hk`uLw7{W=Pq!8W zKvmvm`O8n=O;^F-+}vEiKM;Xh)igUJgG|g9Qa*K`@t&^A@6zsIaYdbl66;aPCJaTd z^BGN#aE24i7`*4PzIh`ecIZy&%J}|nc#^X9w{37ls5So2Yn6r9% zhC1BW4uo`xCN#2>tfubL&<9RUOSX4*q~zu0t0X1=*h3brT52Vx(|0?0s@u`;ZGp6X zP{+VuP82_&oA3bj@7XZKG(SI|l-$}j%3(4JH@@Yr6H30V`EqAZ&C1H^xt?$Qdj02Q zq;iAgoL*)`rv>Vk1a_mza#o#qC>^S486T#b(8=f}9`d>7}NzL^c+oWZXzC41M^f zU6HQZsMEe)Sz2zi8KUQXl9fOkxnnxD2ex509k1mp?6|sb6rd$>E(?+L2*rVz!rx1| z)4kq*!CE8v+hr6F=jk?3MtWRd_&g`0XaTklfz10uYU!$-H<9FC&s^YzP`1wZ6=f_4 ztJl|li2Moz#`AI=cFQhZJe2r8pQU^e1QCWs>%AYbyKwX`xZIv(Bg$Rj(|Xsr;pGUtXs*~Jxk~kW&{ueV&mW5UXz?3M$MO@{%EFA zH+nD<`Qs7{&H?5A>KAqy0r~AiGc;&scl)vK7+!5zjSbolxb~FinV;f+RU1aWEWE;s zzw@lkNnyM#$mud$P`UoVNC>wQka=EVSB zcB7T!UD(}6$3x*8N+vcRM+%H|^!L1!lildU!prYX98GtC_Uu#pnN=y&#HOotQT~%u)?SvQCDQ!vCJIC@ai7 zX&90jbX0kNzh}&~iXRZb1fq9y=jQDZk!NEnVa(Gp_(MeeBh2(>1k(^F*=UK0B;9?f zaT_psT2Jr#8A%x*yw$i=Q@eYiX83f1S%`0xe|XDB{&ZK&eMk(r1o{=Q>i^y}r=|9S zDfVqPBHG95_A+#t5Z?P6(7n!1|^^ za}ySAcR1RtlzS(&U;ezN!gXn|-EIF1_kI!AFblR%W%I}xM4+<$MP%UPGvzXkeI!Ww z9uzw8*Rh2@2cXZ@(E#*+OUjC^UZ7XtqpmUy%W z7QV~Yg|a-gK#88*Yi-M8=3>j{HZpy0{WBZok@3yL;HJUcC70#&!F(0I<#-|7WR*Sx z!2MLj=7vI&x~%3oBO3}F$I=v=IUXSqTFj}EWfPAZYQ<+wQZOoeY^E$Q4l=-U4sN8O)UEEqiQC$nB6?*BX9eAxo=|q8cyKt zo6DctjXhJ?gzHeZs4FAM{qami4V62?u3FK%8&SPtbeY|CVR&t+T2Nn#s~qFIEQe

    Aoj&kEB;iK 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 VUDgk>_l*Dm002ovPDHLkV1gI@gR}qu From 6ec9e5b732b7086182ec19525514f650492b6e3c Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 17 Mar 2014 13:27:50 -0700 Subject: [PATCH 041/102] Safety check SMES custom input/output settings a bit. --- code/modules/power/smes.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 247c1e61a0a..b0092ad2776 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -293,7 +293,8 @@ if("custom") var/custom = input(usr, "What rate would you like this SMES to attempt to charge at? Max is [input_level_max].") as null|num if(isnum(custom)) - input_level = custom + href_list["set_input_level"] = custom + .() if("plus") input_level += 10000 if("minus") @@ -313,7 +314,8 @@ if("custom") var/custom = input(usr, "What rate would you like this SMES to attempt to output at? Max is [output_level_max].") as null|num if(isnum(custom)) - output_level = custom + href_list["set_output_level"] = custom + .() if("plus") output_level += 10000 if("minus") From 6d33393964939fca70bbb1c33860febeb9a31ed6 Mon Sep 17 00:00:00 2001 From: Firecage Date: Tue, 18 Mar 2014 01:09:15 +0200 Subject: [PATCH 042/102] Minorly changed some sprites I minorly changed some basic sprites to look a bit better and/or a tiny bit different. This includes the following: Flashlight Fork Spoon Knife The fork with the omelette on it And gave the shading to the datacard which all other cards have. --- icons/obj/card.dmi | Bin 2407 -> 2415 bytes icons/obj/kitchen.dmi | Bin 16372 -> 16576 bytes icons/obj/lighting.dmi | Bin 33319 -> 33301 bytes tgstation.dme | 42 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+) diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index a064ea3d6491d0f60628cf5f14ad71221f79ca5b..30878cd97e3d1178f60579e3e9242308f75e9aa3 100644 GIT binary patch delta 1819 zcmV+$2juwY67Ld_Wdl!YO_69s2Tq8Nh>4Ghk+UroI5;?iiGvpx7c|r=3r+@shk-vo zKauZClRW`NlZ62%1b8vAXOpl2yMOOVL_t(&f$f?7Thmq)$D5lrP3Me#gMo2?FHzT# z`a%bpwo}$khp^2xYiWxG97uyqqKGnNI{x&XbCa}5bCa;~!+f6gJP+{0IrsCu=iZy# zd>>-5Vf=rC<4#!+p6571PF28hJRh8ob0m= z;3rc&GY_LbIdkUIvr;0#9v@Wz_#{Rum1N{$Y0p8NNoTS!!`weF;5ZAP&ZJT)elX8* z`TWSp$hpz;bNBxJc~u4aTw#753cl?ZAfEzI0YcLR zf#U7FKyE;m3KaACYPC|ytKWU!!_$Jh_a8iX_ya9?xUew)e`wKNAn-{Gki=~$YnnFU z!efDi^4biHuT&~k>_W|z+~-eP`thfwpRr(mVd3H9$G_BwyFf@%K$0$$R>m%PPo7L^ zT4Hf=nu~K4x=M=oA%}vcC7l+`&tJ~ZJ$~dZz!oT;i^J?O1_4uJ@ZgJzz!ecMD6xUS z0{vH7aN){je}4g8@+9WzF8J~yxi&6}ilP=Li+R>X;S@|4Cnqm33Pjju%;V!b!2*;B zj8`E@z&%6@^qIhd5)T6O8W=~KM2^hvOhVfrSy&j&Ie|_J5-iYuI^?IWbrXb79%V7!; z{sHjKW{3dbTdfd*2>*byZ#IJ!aQ3ZMutJ1?0DQaMMu8?%0PrhWj8=;&5aAyze7pVR z3A+WvLu4zJEVBi`Q~%KEF#SWlzPh?f@onZB$@1D7@&TV^tr0E``iEMF=^rS5brtB& z8hI6De|ddf#TQK5f3f=<`YmX{K5kIhfZhE zKhT3o@m3ET8=ISM1-kZ#hZa`o2FUWPOM&_a#Dhk$Rs;VaiZ1^^@y#a1V+)9P3)ou= zc-q3VXIrw20<*S&?H_6jv<37JB1F$WSonske+3&4{JMp2t*msry%wG!zD4;@V~&3? z4EQXwT2K-1G8pu+ZESB-1&Bt&jR%3{Y_{8d{+ud6?Ci+$%I|Q9p4#&V|6mwe*-&W< z#4tqB?H^E}vHju&3V_0PyWLoI;i&-NsQ@T+cXxO2tU7q=9}M_x*Pw+WA!S1|h{r#G ze?k-I5B!Y{c+9qG7w(s-i~`;67GQUFce{92m)$Q@K{CpkVW58idYPUkkHNqeD1LLZ z(V(m3eOJRC0Dfz0MV5DVaFN!$?`rT5hJpS;6b*yo2mArFVBuly{diPpWwTrK6 zg78)g!T4zZU_T2X*DyY7f%sUoe~94~9C`;Yhv83PFi!mulb8n~f4#leFN3BSmB&wD zNec7_)^G%{rx=w-ye98!S)A)bZVyAkrLND0)9La zUiSb_z6#NAp`WMze?Uk4{{EXcwc6XaDs2fBWE`0m{SsqgQ@E?ECxkQ{#yjJM`z zEsiyNy9G}k{lVek(GdvLVUhmiI6;7u)b|HI0nczJZ}Dj-e*<~&2k$=|9UUDU=&%hO zXFUsUe_)2;?YuMnDkCpQ?>~GvJk<5Sbc*-+12Yug6R0v~Z?`b@{um!HE^gxo{ec;V z?jg24c`2PcXR5{-_su_xRwz(RZr~cqrQLqd42fP`EKS91ENunqP;t>!w zJUWm5K$7$jF@Io&4L?C1`~eB|2WIH-=zO$4IPF)&&>wuf@i&ZX)T~D7B~SnW002ov JPDHLkV1m%=X`lcA delta 1813 zcmV+w2kQ9m66X?-Wdn(iiIHeT2Tf0EPKb_(k+UrigNcI|7Z)_tDho~qfro*S^-BXd zI5?9)0Yw8pKR=U&0Vf0#h4qhJ17jC~0Vj01d$ zx^}HEbdYJMY||lZbItmS6mTF7GKnH6L#E?T-#Ir)n>05G8$ZnFSmj^p{@e4HbR1QCLVM-{|5KAGf$^6@x<;Q$a_|7Afu z&I3Q0;+c6E{mGd#pPrQx3HJD?0>CFRQmG^(4@-Lv;!HY|g&F4lc>%{+_;eCeUzr|UcyC@1WRpk(A%9g1pH5FgWUeNz zUH`&6UKR5B!k2}>0@cE&)3`#Jt8^3k0;)=ifX`&$rSRJZr)0e+wOv5KA*|t z3k6nzs`AOy#6%_o8n6MNk;_3F{B39Sbg@{Z_)NMa%hRe@R&IVZ84Kp-=N~?P{7aR%3xp&EB_dlYr+C zEzqX}3(7nQ(38W?i}e036CuvTTLrql5Lh5u_fS3%P{t>e=v#YFfgV;+#z$C4UL>R( z^Z+|ifyna_fY9s-3L*i+7{)OEi>TGY^NR1i&l?f`p?_AZ*TWPPrO^mei0}`9Z#F{& z0N-kb2t@b?oPDzytbns`wSpBQ`~%?I?KTQDnF4@c%3`!yOo0ghVBy>CCr{WdARZ#S zyqsmW0C?&jIvu8esMS_hRw%yBTq8wUT}3|Nv#d43#X;3%~gUR0}^pkN%<48T1eIU{bu* z!}|KhhFgKIJ>sE-CAtBMGUHO9{sHlzQL0wKKZv5sKTv$LN%7bM;@txF)&ick@a);9 zqM*QxEnxeH>O5@${euY6^A8rj?rOot1HWeBTYpPS-EOaiXNYf6{?nM_9}ELt%d8e; z#Jdazy=?1STT}s}UU%a`ppngXyU(9f1&Hl!MOpeC4$)J4{@@=BL#r4vZGjkuD7yUv z3e>k=yg&g^*lM@yD=s`006Y}{h3?MIHl9@nPyK@duk9MNP$HyaXa@242T*9@{DHr| z4u6-~7VW})GgVNa+ua20_RdZh&uYVcGZiGGq8SGI2cTEzY4R8hY=Po8HtKb{O5S@l z>;d36Hd8<_74yx z#QO~fZnJZ8{CL_zi{fz?7*86@KZqjw2RQZ%J}7ukj$gsTH`oudDE|<%F0>%L)j}{n z+CSLWLdatnueCsYEZRTB@DUvP3~q$sPhc=k{SuR)2O)pm-PbRJrWlpSS71pB^as{( z1hA(Vl}EfT1^NSL_-?=yojm-qTY$CKbr6swmOpUettp!9JpEDKBfAW35hY0w{d z@QfCEc{88|+aKt9wFCYDL?pLA7{m`w(a!Jf2DM=O1424g)9grzYaRhV9tp2|04Ki( z(Ql!jr~ZFHNBsW&n>W?!+qdJn92_OvA29JS-kD-Q5BNQ&g?=9Ku<{27z<*=zSO3s; z&L}IAWc!04{L5Fb%zl24{`FdL<&h+;fc|m&r;ltsfuK%S|yw4w)q4=J_9%J@)3sdip@dCpS5KMnyhT(e(yR6w; z3R7d_$2xvLphuPSy`!3;cxRjU0`t@#9IGmJ!G3`^!|*4_mnBIQr9eCa!iGoZ(H}^X z9^x?%%&_4n$b&y1q5i-O9Uh&J_6MhZix~QYk2n4XGt$t0KBNXu00000NkvXXu0mjf Dvl4F` diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index ee76458d8222b2b740705030eb7f0746f3fd15ea..7cb334987a12dafa14300841568300e2b5d89678 100644 GIT binary patch delta 15773 zcmZv@by!r<7B_r`21xoC8VX!(1@fUD2*r~UD7bpNViCLcMk*e z9`1ea_xsv4G9T>m~RgBlr*1ikA z)Ykqsijawh?Aro9U z*Z(BmsVhO_kI;AMVz39gNe{OhV_}x zrc>1)K2}zS0T3H7Kub$Y;H!EhLyi=w>dJHC0@nMzu(&+Ic|^Bs`GG!XYsKq>eOz=z zS)~k+W-H`}a(j-AmyeR}H188j9Z;{pK626k58n76G8N_-1C+@=tHCl7RsYcyx4>C_O{`%!U9RNUVvASXCT;XUuoS zxcrc({Z`xh#=jB*QK@C5$-T`sA7O@vey$Y{>)S6J9Mtnm3q$M5@yTDN%!=J?ZQ1`W zNcxXa1PHcU3B51E&Z=bD0ut@pJU!$dO-=Pdx-*3gO*eBK4c#oBJAXVNHWpn9wzEp* zWjpyjc(L-4jW~;sJND=K_!INuZ^p7PV}ftyXFXuJ8Ymk z!_-xh^4y^Y;8LeJN~|vyw#Ey`E@s=eSpg?*`SiNG@84ay*qv|!2pc0$0Juue(&a|% z&--fBI1CY~&*_Bt`e`h#9liwd9=YKph*MfjX3Fb9f*?g2Z`mm_!L<_Q)`WYH*){s_yHs6Np0 za(2PYsyO7I=mt)S>Xh^T-lbIASBUDHm-RT`h?&nfw1B;uwuI~M4sgmd^Z9I`Dr0Kc zVD6rIGX6NMws24mo!uEbygcxgdU-$ggQKH&+ay)-HDkrJ?uTQq5cX(v^`z;j$NtZKS{`>o_P&7>{`HNs(O|3&g!4Y7)E!R zBqea5X#KFw1H)cEI`f+d!ylN-`;~ILi?<)EsTU$r{ybFnI7V*=i~IS%^BZJ5v7n}( zuf*lAsV;9RT*b;i^d&K=XN}X1%kycCRXUs+V|Y82*~gBOpn!v-1TO1D@~SAy?CSIR zUPnjjcj#*XPIf*Y3vIR=phs(unp3s$Cc}$65X(wZ_gipkaLG8qWbTY%+MOgB?aCT3 z?r{=63~Zn*3}M~9?t1>)ySjn~oUX+62X2XwI`vuTB>Dv+sIjF!Hr3nWSVkOl{Nq1* zH(zG{JgNmW5-+_;^`>BAVq$>5IKEK`j{vqlaSIL$;m9mIwfz{*8xr0V8~e(wWmD4r z!>ec>wlE@<7xzUP!=vYOZ0Jvs{eIwuL@8kH&E2 z3g`NEb?adkzNnm>l&Wf=ef-=ihL<}bujpe9E+7K+TLPLUuQ#h*)vwNWl`Je+Zm#Ch z_TNg`7+S04K8X`Ou$w$|yL^QbyBWOrwIP$%;!exL!eVP{i(oKN5^!o&G#7+RY$LCN zT`7jwXwkpiWDb7}N5wkL0e=36sS~=5o7*3I#GMw-juD^hGroLyS?fHed23podf8yf zZ|u*%0r+phQ;9c(9hyoxU9C5fkpy4VABu>J7xF&1Q)20}_SHsO8^y`VIb5t?9)ypF zC-3N3yfkSwm?0B2B#ViGku|v;U(kBs%Fqf+{BEK;*XsX7Uz%b*;5uXc@1tAifp)rL zy(=*GkBa&EWpdE3^z9Gg;sM#d0gIsG8qNGm1P!y#bFL)5ZrpmWu47PO0`b!vQYk~Qn=J!E#|`n ze4nPdy@ucB@E)ty3>jbW%hi61+4{H#0Oc8vXC<$WPzPi+i|vPnJ2uzp+lR-4*8+a+ zj-K1&#f3UWteR3PQ2>qg^5!rdoQ!qI`!ccZ`3m!iEU55CfPgDl#&nvAj_zY1Ca%xy zMhzt;rG)Pp4;L4g^v`D{;Ukl5smCMK^B1clGc!@g>w`IUbu^%L<J_-<4|t>Jr;? zrT*20>80TMe(kqyM3KWY^sj&Cc;8GF*E;+2b$5p_-AGW;O|0L~bLG$l4>%ZoR(M5B zWkXHZrVlHP1wrEWi{ix_n-tN*VLSw5^?jgnDr&JUyrDWaEsehKi=fg3*kOm2HU7mf zUNCUSZ?^uAXVcZu(iyBw5>FP&rT&Uz_XKoPW4QX_H>0(w`4VSh+MX>Ro^}}>UY!?V z!lg6QqQW!(bhK%#E~Of8rv{mUjg;ZZoy&?nyWZ#@puks~w}UY`#iql}8mxftSR{~= zno34XyEV~8$u)F5k+mKwdI2uZ5F#oDb%!f||qb%>+Hw@@7@bK_7Q7IRfbz%XmfnzM)zqh$z zU9l(Gn+9J@IbZ(}Y)piYF=Gls2?4L6|FMcD%2h`o>l z1+$kLGOK5@jQ%HDA|l;%B(2$))MG6zMwZhgTl4d~8QwEiOxqL1mfhzfMx2crsPwnm zqduREF5L$lU>rf%M+KbkRFD zksoLOysdPam9*X~G9V_mmly%B_#LKJm}Zu{|NMEqjTM5tNjN>PABFZ#*H*g zZxL6x73L0Z7WS@oaJ*d0r>DG7c1=^D(mk2{(saFbc7VbEL0ry07+nOp6cz^6#?aI4 zN#S75ZXmb5M9>6T=lZTQzaz zv)wK7F|#!51;${S946GzszkmhTfK$L|A|`fULgMeH z>?+~cS*?K<;cf8F8Ri!`P*&Ko)#Qn~=04@nD~FnLT!qsnJ#_020>9HXe05~?LBrMu z{BjBJ3#_XqueXE^^Z=jnPxJFOnamj1n{<;F6D;|5-_yvzx=X5#&{LSKezhl^wR-KH zOz_&IVZNZ*Yx8`IGMGL0`P~`4xt^D`+7=AuoQ{7rSJFZ0P}8O&VmSTP=Sa1aEy}jN z(wubAX0pZ&cr1O~%o%xyJfLOcLEje_s*?HI;XU!6`%TEz4tAG=1N@1h(J-QpWew>! z=U32c=+P2+#5Txn_=GWKt>OmUOONtJR}QYaQ3h>IZ{L}KB~oRQ8t#a-A4^ES2fA;p z`DM{aP>Ls2eAE(YTqOY(pZ1)#Xlrr$T<_nEyEJg3C3?Kdm)E!SCciw6t!%u&8sPKB zp2wiJO=YTG^XOUU44XllMc|&+c^{#$830bE+SZEq!q_$JU@kZ1=ZHu`s@WSg{*&L~8Xzb3LNJAqEJ}A7gdY~QmT2Bky z*x1x?Sx4pFySIccF5`7SMxU!?pGux#l7b@7+#7;7w-4(3ZD)tsYmd{K!1B-6QXHn&NWT-l|fX+?;Jq2JS+iM^)Nf*X*=1Z&1BI%*OaYsS`SXIR=B=++!x z+-P8Ke3jExqh3KuxSHD9LEpc#>AZTC{qtvJ`ntw5HMMrH3ge^lvJ`DQ@XgP(Qnr_w z&)y7AM?4K6^9Y^KDLL@<%#bVQ@iFpacS6A^>TdXKk619BLqbBzUhb(z{OML}AFEA% za5|H(MID#=ap7>;f?h5o{k*?FG+x+onNSYR3$hFCx0E6@&v>Ja1n$b)FW&b%}mNPacQ*{VgX4 z28W2w$;p|%e)qS`t>L>{^{BLmn$M?bXtRL&4bNVa@pVN)X`T+rErGA=8i7(;CbjDN z^F;rlo4^EpbA6RlTl?jDZfJH}sa)24f36yXFnqVt2OtGDqxTJll zNQ@$KZ>Rok$bwUQ&s%uKlX*c*^UNKHjW{M0wKiQ%R>vA1AC_ELAn=J7t#JC4A#%fw zCG6%EQZfo7?vA+*Qu0JPB{cKVs4);MenvKNdj<%93>Ycu_!V>p&CSiTzdn5UU~6x$ zXl~97@)_4MUw-dlGEjRI&rE?|`*ZL|#fD@1cl~q#P*^VIMlnwM2fVE*zKfi5zyA2~ z<8B(9b=gZ5Dpd2e1n4Dz<%>fBjH2O$H!BUF*7v3CDa^~u)%BBST6VE@4pO%^m&Iq{O&rF9}lHmtZ_I<@i%Jzm$alm!yf>#hShnAir7-Tx_a)5KiRD0c>JUf#8AV+wV|8mHcIeYWNt^2$$XqHwzC*Dwr4sDH8p3T#pB1 zVL~2rLPXh>Y>Q@={ElV8L&yVNKonsBp$&}U?|s1Q@d1fB% z`JbWL^~~b&5Ua@%0yV54vR80|D}=FAAzi57ZDLLhmy&+j}eae3ng9SRIPSo2%G{;0Wjh*&`yJwJ$4D* zdl=TLVR09R`dE`*h@3fQF9zC&330kE-f?4)D*kN#jt3tjOn85zgJ+XrX3q=muY8aw zpGA)J9BiWB>Md&!ws;*q25O|U?;_bSn0HZD8FG}0`2NndH!GW_nws$6!MK)?jNW3& zN6E^{nhN?m;i-dLz`#_>1tBi6eh$X;*f|2`aLiPC)5hR0iw-*Nxq~Mc8fe52THAE` zSppm(hoP~=aks~WEa2w!YdTiPKd(oj4ipd?%)~%ICCBcsJA{NG z)Z?NL=^yzw&o&HU;t(QEHb*#*9@p`8VsLa)A$lDsFttoa7>I)z;wm-30g=&rK9 ziX6tjzZr{0XXaxrOmayD&rfXR?`rL=n1M~#bQ&`^*YM`q{h7RGC}`DQBY$MIU%DM8 zZG(gR%lli0Plnf*c-PUAd9UOLuDlsm(d-*Qw?ll%lC7^QyT-3&Sy)nk>W4eY-}S!L z=J3C{8Ys#XTp{*kxDm36i-(u!=ma(D_FYH&=^;@q0q2-(u-fZTn+J}iCuohQ{+!d? z#q$F&j;VY6AvpvS^ZGFeV!@X=IVJesN&P^B zYFi%}f>V&DsdO$ksLQBCAt7akdgSRo*ZO`nlzwLCll0&Df99Wr9sq?JRi~YvIYH>_ z!E(zktMy&FN3P$$J&$yaRZ!0q!_?*wl7PBbtYRR+-AvAxxeE>Z%}P2t6h8|KO*}DL zP)Bz#0Z2zAT?t?2KIvtw_S!cMN18Ih#>U1tk{*Z(327e@U92Z^q8}b>?9N^p-8fs( z7{p$sH^^QNn7!EaCT(+YaHuqz8yN|jn9x0wdLL`CKi5=yeKsARkrC76d;VvFHB7_w zat=J~pi(#2Bu(MD=Xb+@bEkW^ZfaspXTFdXo{~aqJ(~MGa@YB6XR1UZ&>c|ih)S*` z4w+b%yqnb|ob65+aoE+-@zk)Tv5{UShYXj5v3)<_Txw^wLC+P7+57^4BeIxh+y-TA z9UVKW9VXLqU-Lf#8HE{tH5c*Z^3%d>)0vpksnO6!6r?S$1KbPod8$W>ta?`R*y=XLERbrI&H#RIrIZ($H{V#n4Ifg zDCSFKZTx;Iq8f?mB4$-jYP`%ICTDwK{-xgb&dIgJ*220JOmMbnBJ!8S4g6)i*f6E-XwwH8m9x8L8;#$ZPN5@WA<5eo2XnwRJAI zqeer}LC49(r6?~CKc;-Z{Er|@Kftp#lf!Lqrmoie@V*MZm6L~xlM^5EbUXYb6@R@4 zAw{J4(7%6?D=St{x06ijSKJxG83McG`kL$No?!fazvt4A>FTBxWW-uE_eaB&W0QF` zjyn!BMsZW^;_|Zm8ZiD4b}8Wwtb5miQ#c1gl^6eV9n*G-c8?NXa!{0ZWMgWw$u+1! z4n_5(rZ<_t@aOaFgTJsZ?+ z@n!VEI|mQ3GrX7Z`!ZzcNMtXvxD44}q{*M}%~DS3N#SNG2b>|1K7Hv@RB+MhB8n3q znT$+<(pgtk&UpH=mYf!_c)f>RPGS4@C$ELw4pQcW#kL24S4<3Z}7pNR1Ts_Z>an>zDNFXM-7N`??*d+K>EV5mT31;YgB)63(xvjTY1i*@gNE~j)aL&CzA zX6oEL=R-O8`BjaL>7m~L@XSo#S=c9J%rDG`Ba%R*l#A*HK0dy}lP7pF3{p6Va#($& zy-8qo_h9o|a7w5_C{3Rm5DWmGsHrJJY2l|&pXj%q1k%d=V9mDIGv__7B=1gz&%C)t zo>rzFt#c-pz`N=(9O5%g2>-=qDwcn9e~^`hIm9K`Kzc$XtEQ^D*QUdzeT5-0;tbgl zr2fkJ)LB^WJV0dL=5$OKQ6>;+tS9D*K||VZE?_?2?0+#mf3tRk z?YCFA{sjtjZMGsKFa-`iLD!Whvk>uL>_&5+8fNO~CODdmk8htsR)j-COkZ{nv$eIA z%@Mtsm${VTyGJ&DzSRhHbaY6(TMD^<^{>V`^O+^RCI?jIVBK!RruqXCNWJe~9oY3o zM*Doc9UrPu=6K&$m@1KNhi(N0R+o*ThAP=EB3mC9weTQnIY6JMD?TZyCyL=JXv?5TlH1e-|4BC9 zyE7hv5gRN3A+#XDleA3B6c5@weg52Iu+;f@DD%*^>`R^f%D>rejZj*t6_-WT@PqDy7Rl!avOXFfoa>EJ*D zhkV~c-L_<~BtX`kiB3s_fByVpG}F`KaH-+opF^p~A2r0- zm`<3(m{83d2DoM@WC!=-##VqV68!k|l$qJ86%&(rvUYq@TyvqXlEsJQ5#-cTo^O%a zO5tpef}yB-fEF-hrjB723!d} zA<&T06MtEcd<%HYT*}(;8f!-Gwg7ryBl!(E!lE)i9)%vtR#NSXVc0G+=EpU}-w5gJ zQ@66QVddf?sIIR5BwV4Zr^hNRJi1F3U0*M&Y?6-|hk&fK+`6B($hb~>1PM9St|06? z6m(#(%m3W`;YjI+_|(*o0oOHa5lc44mHAQ6x#2rgB zYUEzFmj-8@#-pe&kA!zGemTB3+$@Y9wr&5?pQ?qEKnLl=MlrkDPPSR3-xggA+VDcDSZ!~fv~!}bSLItB_0_`gFJ+K(2eN`hvp*|O)= zMhi*9pOcd-dzY7%%*DXesofPxi~?mMRpiVr{U-NXnWKjP^Nbt7+;_`sD^Jc`RDgx` zKSILao-DP&A*PRjnwi}HdLkVBva_>^&B`Byy-;)#><+jH+aN+l)@$4ebad!% zbIqna7D3uQsSA{5DzmQDfwez$W~A*G05c~iJ~V-Vob{Fv(s(Qe0GOqv>7i%{Z(=#> zoxplPl(~~>RGt?m3z_gj-h+hE-!}azqC1UuIeVZC!bW^`urPW8=_gGFBVG1N2)j=P zwuO^;Iru(srTaOXH#dD6s>zMPEV?oiDdaR|*iGir@@%$+-rpvsn*pMMUcm3d1(I}f zraKkCX*(1wwTz8-js$J5#nLB`uk#sT-5yxl=j)D0_s7gI$QM8AG+AahZuBODvPdX2 z$E7bB7o2aHFvKZ2_^aMFi19&a=md=@bc^(}kzas;u*rK$1$zkl&6l{$tx!TmeTSX5 zQVI(jyH12n53)lG0qQd6dD*Ff<+}9@%ZC~nggL_zOG`_{dHYefeP%Wc@7tl47)OMT zlFoK0^N&-g9)u|gT7K*9>fLMUIvxL}BmsP4N`D6F?ZULC zVyObiCCHXA_4XH?ZFzIEtjXhfCz&Qwemi&FNC{I{wCJcF`IIu?j1MOMiQNmk8HT3% z?l(f!9@Wh^hTG(g3pWnmN>5IcSAdlexfzeoDB=9iOeSHn4m)hLq{7~N^=etCr;~<| zQuq?WyY^eGk@luw9MC#X$S5^PLl{hqcEAM^Yb2%Oh5g!}r z=(T@B!yc&)y+g)EVPzr13`;l9B7rL6mXKO~FGZL6>(;PBQ!+izdfhSn#Pp;j89idC z6gEBVTC7*Q2hxLNTIB`@GxnA?1p#Qx`%B8{^74-xmwfE!Km%nsRO00(w1;SGNun;j zC+(#V5#LUnC!NTR9x!MQlJS^b@#qd*0lky5g`Iop-#jh~Jr460D%l0k;$ufj=^ybo zwmvAd)a)fQessigODngktd8aR3oYc06fcHL8~@id+T8${(N$w!|KuUD|c>=dy_pr+(vH3=kCBV(`tL;W<=e1tN1#2%1LN;yW zb9aEigYLn>Ng0VV{Iz+T`OdI5@UBTL>JbzDMaVZQ896z#8r!whzAeXR<$k-Bo+^Xa z%L$jt!t*+fFV*$la zA#zy7ZO@BOe+Vrts%986^}~tQY@%s8u&Xg`EjJa|D(K!lko8sRQMX zXg*QV&+%@%N@E za`{l#*@)``mksQLSW8S}ntkQZQrlS?(){eK@9RvUB1!|hx3@R;Q$ikxFkZTjdwWO6kK=?Tj&N{1 z``pZ=aSldm>?o<#yX<4wQkZjVo@Ts~QJBn6n#kl3Cz%qUr@FmeTHV~>?hOsgG>yY^ar6GaX<4Zs!{6z5y5u_rbKZuV zFC|H;h~@8FdFHeZp-xiB85npsunK?vly+@4+~&si0Pd2i4Lvy?b$F(vgqiT=i*3zL zYv>(3eEh@iI{V^Mii(ebVR$CwZ>nCzO&J`GHYmEgiyZ&PWnvZ+y9Xhu05}8^($Uc| zzdTw^Q0HO*p}^4RSTh?I&#H<6to3~jZuY;z0Mwp6D}T4F0w5r(a)C-@)Rtb$mJZT> zK?H-8K+Z0}$MLTF#2f1+3b>rad$QHi#YJiYW*({OU99vu*J~0c*}k2bI`Wr!FOE52uNF!?iWG@I?t zWND^Rm+}dk!2D4gvr%3fOT0(dzua&D^*bqR)C6*GP?peWP-$&(yw=ab%S$O*F#?Wg z1BfDn%7g3k`DMKpYybe|OKn~lpXlWS0%RepX63P{GHJzR=~JH8 z^4e4#>m1PLk!#dlEM?si62?}#D%*KGe*BQJl~;)h`P{CG?*>3r4$2lbK+OSR=Q(K+ zQPB@2UhC;z_XPyvW^*eydIO!oigwRXp7- zcl`kY{esb4+k!WTc~BEN7?(r^npu2uD6u&C`QzeZmIx|0psab&h-HUoL*Q;nZ(4D`#gi z_vebib|KJwAm?vlZH?q)-%hLWZ@-V__0Ii9J0SVvzst?l0|X|?Mnqt=X*Go$UuBGv zzNRK30KzxKB_ssnGJ4CuBk37OFE+OiOYxxV_o*s3yips_ZjVKvbR;2@PD^&nS zc9>#qed>MzZu6tXhg-3LNJQIfAz;tdlJmJ{pAhw znJ6gQ^?B~458GO$y4GpId2n4;yTdoq4@FAoFNel0J@4?g%|psFtDo=zpNK^D7pDJG zT3CvDU3>5}y6$*$j~cB@%+4p0HwXmx9Tjt!;{&ilrwje3vxE&1JBL_}Da zK?t`$@y`53t%e2g7B_w1JAcZE&RjPxoV>gpbk2=|5LRbuxl;pgp!QC*YBMIFj_z-|=fTl9Ot4q0g!WV}RBSsdQjDBYJTP6FKS z10bLZ&7FpZramf)aQ4Tue4XjHVcv@c~%IxX^B=Pi5ewYRTv+ z`U4E-*7&_{lqE}V2hLjDsD`P7zwFHRe$hqFIKYsZ?@Fg<&XFTyTy#*w(7o?1Ku$EJDQMbzMe1#MHF1`fiVi|N08tJu+E`g_ zTohxt5@jw_U~cT30`RlT#p(&Ku)OG-ThF`jJ9xVKx0?|Rhln-=O7Dd)FE1loqF8gy zP+Mr_k^QxbZO8d*rbNGb*m8!y?nnSswtr8R@fA~ATcuAZ4AY2P1)c~3ntXC~#@BLR z)CrjxZ@3CHq6WXRxN41n2UQd6%bVMSHqb1ITG(2>Vb1Hvj~{>QJql;*?W=mFM!NFO z__2G&lN~N@<(HMk+)z*dC``lUy{2YL<{Ux4M(IvK2XoHBz*k|_5u{ZWjA41p0{APSPF_w(XdE?$6nsn`~R= zfSQt+rken@HSTEMV2%23@;Yh;`p~|h@W&N9f#K0Bbk(asw zgq6WPeQD86%gw)`PosGB14l+?0XXzRZBT}h6P#1#H6z~LmqxUO#X&K7D2YqT#1yl$ z^IVrz+(f}{(<$+@fp632&tEkS>*+w>=XwH?5(HCIsiaK&{91USiglrrj{sn3Gk5bW zrNn$@qGjvPAN3utbf=V(qP~!KM(95QlSqBe#2EE(I~?PR9mloeSNz(+d72dM+^hgW z=n{?e5g$AUwW3`ha)SkYxo&Ut{2Y)fYwA#A#<{IIv-~Tmf4AiD71|(!jsQd<0zHvG zmb-k_LEjfoq^>tDX{B?~ha-73K)!wB0H0CC8u?%}E;Dwv70y5!;_Em2wFC{ZppdI) zNlpEx8*0lM-iJRXr#vhzE#p&tDKh=*83n_p-xMn`1Z~euRD9hebCn8O>dg63P9Hct z5r`;VZCWH_AA%-moh^F&SRfnwvb7_x&)gR$rCc0w4+xFP7cXN-C{-gl_-;_vFwpT{BVs9XQ~~oBDMq1b1;%hJw(& z=nzwW(Bc_3E9Qeu-vxj?ErlSHQ8#D%_tW1DvUZ=$t+Lpr-4wr+=PV89G>p4P9AYB& zAF>mu;HVuzBKvyr#c5-29~XeOL7-_U!)xwI^F1@u!ezF;zzGgy`12+8N8+9H9`s`U zxx2Em&Aani@SK^iL>vk$;)hGmN-cYnp8u_Q^HQn}2hM9G_Q*Kgue3;HY0w#LXCtBK z)Yr+9$W`s$wRI3}<7dO?J?*e{6wCfGj0YT?o+>{Fg&A&mp817JAoG%Q{KYngfc={LRC*YZgw0!ex#)|ab zy%4129a`Rg0dcXZ6Mr%W9)AA7`^tdo``%g>Il+JcLGxwyt1oFx#0za6`IKg zRk$?^#L2I>Qz2c9sYJkz#M`<$)%f&l-iDbeN#o_xq9QAgj{}T3$}pO^p%x<-3{=}y z8$Za50St}UhJaJ^-w$JBZxCU6_A5Yz++!MJ+|%>rsZ)aKS*6eho&{fRy_3QpXN#4dnum#n+U_nEz9%6tLHk z^xXeNTv+v{H`nuuL4cVC!5d6vq)N1mzR7g^n!DWs0P4}=q>M8R0O{X0Trb&b1&{Ef zv!Jf8Nn(Y~t18?<^+s(9pczx+hN5yDJ%;amcrN!mBCmn5@A)0nY11OpTMz)ML`{@x z5N8DypV^on(ex`TAK(*Wxh>pBV; zM|^=!zRSzdUmrxHJ5R0OUa8MLDMIir?+?%7cBWW+*0Bfylg_Ab_2kT* z^Zk>!r_aUzu4V_$zN_4&8c#<+Rzu^zqYpIOI`SxKwmJ{JmLzEzYOb~8R8`u1@roPc zictcAb+%6e)Eel8BUqG%>_xsAxr_XR0LvND1@_7dXKADlWvW4OAZx&n{Cdd;@zzes z-CO)ipQD6#mHK!j0y3Tf!Wfc}*cai*&WDdr34izBGDZ~k<5Dsvy)gL|8Al;8V*HN` z@MMW_I<3m1(AEV0k0MoI?U8SzH;fJ20Vj6f0px1a`A zk%I|#u39M&*%h)(^|`tfIXIGj^~e-=9tfE`#4}W1Ut|iv{YTrYm{8tJs#mP>=%LYnwQf^q3aQ!L^C%Y@|xxyAHs0X_JdP-#mN|HF+PG*LGO;yxe3z*%#TdpofnuLZR9-p zS5Jv#QF3V&o3HgQ@4a%vevPVOC+;jDpRcPTdA-0H9A;r0drg9$9e6XF}^|h^m zLfVkbf7%_+g3&^}2eWL#wg{9VU0DB^LseQ(q9NhMs~zr;410_*X%B>WtJ485wofJX zdEnr0LzKLGmFg*x%)kcEI6NB{uEP9pFz2Y&E57=KjlBCJ!1Kmy zui|^LQT)Y1@DK?N#=#bbtnqoq&wjV|i`iAGFohbpfQYV{JVaNmmQf@ffT84zVe9UT z9;hwA#Hhc@{&^_bis748vMIR*oZu1TfLp0LlX>opj~U=nmp!3TnFh`DAK>E$EvUO| zqj^wO&gT{TvYGRP5$*!9W#(K~@4R>>&DTq#4G2r9;>a0f8J<;jfM@@+)M96JOBaLB z;P``6+eqFQGxm;FTzQjG4{F6=m-?UhYe>mtpJ1(ezFm5F8fryR!w2IsI<-L^tZ{uH zV1*ZTK3CY*bRNk#7SH5adCbc@LEB%x%!mPe{}KHuz*Fo`Zz;zb04%JBrPdB#2s?>Q zW><7ZB~{3j&DeGf5{X-Asw>k!dq&qMZa6$M66VlPSTd%Yy}I^X-|(Mw){9N`GGh6@ zgSyL}p8D^y@_iTh-}{_#NRL*NK>TL+YiRD1ky$vJl@u2%KYok_4VT}o zgwGZUFGvM8HX3^xn40o&adQj4`Q!X|etF4fd8{BIrZhy|aI1H5nF?OEz-UWA7lx>R zc2W2HTKZ7i&elmmoQY}U+TA=TXV}UvWYy;VR1im^6I|%B=TgJ(I*vsk6O`=_Lk_5Q zLXW+vTYVqD@I9;eb*ML)(Gk*98K0c|F|(91``52~;my|=zz$(Xnb*G4#6jJ${SdFf zUD#sNZ=Ez1+s7Pz&og*^agkn1-sWB?ZD$4jb1`G5x2O5CKin2DBi7legm0k4`9rHSL(3Bo;}uFY^Wk z3>o_qM^j>NFb-2qIs_<=o~HiXIxMiaRaEvTztyG*R|a13aVOxryNVxhmDkAHMs?qA zTlb4bW>`QssRIoY{BX|Kqtkc)b7L&@fZoIV_c5U1`^4wZ8NWgH%(qo;7@2+*WIa8Y zf)+<_AFHS=4b_x zz0I?+I8QWbwpnT8C!+1^h@Uz61H@!)M*T}iBW93KrA``DqeVHtV zTiF-ykPlF;0)UailfMmK;;&!7)?a4V2vAjqf2-^=2DfnfI>`NR7_vPxLA6N)FK*Tt zd1jgYIM-~Ss-=DhnLvd6x`@gi*C+SD`v``x=HEz^Kd z6VI)7FDE*=&=G@!$diRrqRHK6D#~=_ivEp+1l)@Gy43(+x7n>+mzY+|;C*2&^nj9L zd6xsIf^GWiEsc^P?2pk@iofPkL*75yAZY`Ln10O~K(yjx%p% zEC3MwrDgK%{{4fApU-!^;qA8b@7Eb}Ati;2D9v5;$f|7BQ>f{6INS#i&BCOC)G`H^ z=!@mp2Q(*{^EVNfn~E^0Kcu0GcCmVofL4%PLwa~GTD~AmBU|%(P90`1~Uh5q2PDP z$DSQm+3$)0^3dZ#9vBpnDpenWh(icvj_Fo;)TX|P3Hp^mpWiN)MgOZ_p{F2FrrDtf z1aJDTa`PWvTq*NgbcQszTz3+!b3=fRS7b$)9Q?A`k<{;xUM}ZpHexE^%Kup}DSJDo z9zLB=h8FkAYba94)=X5WqGaaacycztbMKCnnZAC6IMb-*<~?C;ZEa2OT+%XPmWae% z&Lc23Q8Ak%rY!(?`t<2eq7?rbU9tg?dF^mn7Ey{mZ7B_VV#gagJ-M_2>SvbkMJ3G#oK zY0qAA%!NS^+h_p5qXl2RqTJfvo_1^iX=);2oSYL?7SOC1kC3oE^bXaS1Qj%tA1qAvf#?P1q|$AU5dGt{TM25!Oe zn{Z}|$j%5A0A=WJbC7x#llOh$;_2c1t=|5F&_mFJ2EE1U1df?sNPC+fJb~2zkoeyt zDWF<)GrLnG+ndCb7*5L`I#Qk07WDFek4XF%qPB*{^iSgd=h7C@4?tf}m0vtAQ8W+w EKYGhCcK`qY delta 15614 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 KOO;9*`2Bw&SMcco delta 15937 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 Date: Tue, 18 Mar 2014 11:24:06 +1100 Subject: [PATCH 043/102] Hitsound for wirecutters --- code/game/objects/items/weapons/tools.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index dd452d8e4ed..a82ff29a3a5 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -106,6 +106,7 @@ m_amt = 80 origin_tech = "materials=1;engineering=1" attack_verb = list("pinched", "nipped") + hitsound = 'sound/itmes/Wirecutter.ogg' /obj/item/weapon/wirecutters/New() if(prob(50)) @@ -412,4 +413,4 @@ /obj/item/weapon/crowbar/red icon = 'icons/obj/items.dmi' icon_state = "red_crowbar" - item_state = "crowbar_red" \ No newline at end of file + item_state = "crowbar_red" From 3268033ba658bbea2b40e25f0c5a63e3192e3dfa Mon Sep 17 00:00:00 2001 From: Jordie Date: Tue, 18 Mar 2014 11:28:47 +1100 Subject: [PATCH 044/102] Hitsound for multitool --- code/game/objects/items/devices/multitool.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index cf4a93e3fb5..cb44cd40103 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -18,6 +18,7 @@ g_amt = 20 origin_tech = "magnets=1;engineering=1" var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage + hitsound = 'sound/weapons/tap.ogg' // Syndicate device disguised as a multitool; it will turn red when an AI camera is nearby. From 33e6f3f3c87aad87c00d0cbd6e65038b9aa4c980 Mon Sep 17 00:00:00 2001 From: Jordie Date: Tue, 18 Mar 2014 11:29:46 +1100 Subject: [PATCH 045/102] Screw off crowbar_red leave me alone --- code/game/objects/items/weapons/tools.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index a82ff29a3a5..c51ada6ad6d 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -106,7 +106,7 @@ m_amt = 80 origin_tech = "materials=1;engineering=1" attack_verb = list("pinched", "nipped") - hitsound = 'sound/itmes/Wirecutter.ogg' + hitsound = 'sound/items/Wirecutter.ogg' /obj/item/weapon/wirecutters/New() if(prob(50)) From e689130c0347433eed6af07c7998250afeab3fd4 Mon Sep 17 00:00:00 2001 From: TZK13 Date: Mon, 17 Mar 2014 22:25:57 -0500 Subject: [PATCH 046/102] Makes Greenbay into Bluebay, take two. --- _maps/map_files/tgstation.2.1.2.dmm | 60 +++++++++--------- .../Sigyn/Department Sec/jobs.dm | 2 +- .../crates_lockers/closets/secure/security.dm | 2 +- code/game/objects/structures/signs.dm | 8 +-- code/modules/clothing/under/ties.dm | 8 +-- icons/mob/back.dmi | Bin 54592 -> 54594 bytes icons/mob/head.dmi | Bin 89500 -> 89505 bytes icons/mob/hud.dmi | Bin 2817 -> 2833 bytes icons/mob/items_lefthand.dmi | Bin 158812 -> 158824 bytes icons/mob/items_righthand.dmi | Bin 160334 -> 160352 bytes icons/mob/robots.dmi | Bin 91139 -> 91211 bytes icons/mob/screen_cyborg.dmi | Bin 22340 -> 20810 bytes icons/mob/suit.dmi | Bin 180826 -> 180824 bytes icons/mob/ties.dmi | Bin 1348 -> 1350 bytes icons/mob/uniform.dmi | Bin 156489 -> 156447 bytes icons/obj/aibots.dmi | Bin 49134 -> 48259 bytes icons/obj/bureaucracy.dmi | Bin 12174 -> 9240 bytes icons/obj/closet.dmi | Bin 77941 -> 77968 bytes icons/obj/clothing/hats.dmi | Bin 46577 -> 46576 bytes icons/obj/clothing/suits.dmi | Bin 64002 -> 180824 bytes icons/obj/clothing/ties.dmi | Bin 7147 -> 7160 bytes icons/obj/clothing/uniforms.dmi | Bin 44448 -> 44421 bytes icons/obj/decals.dmi | Bin 34755 -> 28058 bytes icons/obj/doors/doormed.dmi | Bin 10805 -> 158705 bytes icons/obj/doors/doormedglass.dmi | Bin 21335 -> 232658 bytes icons/obj/items.dmi | Bin 56219 -> 56223 bytes icons/obj/lighting.dmi | Bin 33319 -> 33321 bytes icons/obj/pda.dmi | Bin 13505 -> 13491 bytes icons/obj/radio.dmi | Bin 6917 -> 204075 bytes icons/obj/storage.dmi | Bin 56843 -> 56443 bytes icons/obj/vending.dmi | Bin 63532 -> 63538 bytes 31 files changed, 40 insertions(+), 40 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index 7b429ff256d..868188d6d0d 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -2622,10 +2622,10 @@ "aYv" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aYw" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Stbd"; location = "HOP"},/turf/simulated/floor,/area/hallway/primary/central) "aYx" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor,/area/hallway/primary/starboard) -"aYy" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "greencorner"},/area/hallway/primary/starboard) -"aYz" = (/turf/simulated/floor{dir = 2; icon_state = "green"},/area/hallway/primary/starboard) -"aYA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/hallway/primary/starboard) -"aYB" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/starboard) +"aYy" = (/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay) +"aYz" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/sleeper) +"aYA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/sleeper) +"aYB" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/sleeper) "aYC" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/hallway/primary/starboard) "aYD" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/hallway/primary/starboard) "aYE" = (/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/hallway/primary/starboard) @@ -2690,7 +2690,7 @@ "aZL" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aZM" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central) "aZN" = (/turf/simulated/wall,/area/medical/chemistry) -"aZO" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay) +"aZO" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay) "aZP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay) "aZQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay) "aZR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/medbay) @@ -2920,10 +2920,10 @@ "beh" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/chemistry) "bei" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/chemistry) "bej" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) -"bek" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/medbay) -"bel" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/medbay) -"bem" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/medbay) -"ben" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/medbay) +"bek" = (/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/sleeper) +"bel" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/sleeper) +"bem" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/sleeper) +"ben" = (/obj/structure/sign/bluecross_2,/turf/simulated/wall,/area/medical/medbay) "beo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/medical) "bep" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/medical) "beq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/security/checkpoint/medical) @@ -2997,7 +2997,7 @@ "bfG" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bfH" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bfI" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor/plating,/area/medical/chemistry) -"bfJ" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay) +"bfJ" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/starboard) "bfK" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bfL" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bfM" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) @@ -3149,8 +3149,8 @@ "biC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "biD" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "biE" = (/turf/simulated/wall,/area/medical/medbay) -"biF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay) -"biG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay) +"biF" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/starboard) +"biG" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/starboard) "biH" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay) "biI" = (/obj/machinery/computer/med_data,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "biJ" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) @@ -3899,13 +3899,13 @@ "bwY" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/retractor,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/sleeper) "bwZ" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/turf/simulated/floor,/area/medical/sleeper) "bxa" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bxb" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/sleeper) +"bxb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/starboard) "bxc" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxd" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxe" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxf" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxg" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bxh" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay) +"bxh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay) "bxi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/cmo) "bxj" = (/turf/simulated/floor{icon_state = "barber"},/area/medical/cmo) "bxk" = (/obj/structure/stool/bed/chair/office/light,/obj/effect/landmark/start{name = "Chief Medical Officer"},/turf/simulated/floor{icon_state = "barber"},/area/medical/cmo) @@ -3966,12 +3966,12 @@ "byn" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/clothing/suit/apron/surgical,/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/sleeper) "byo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "byp" = (/obj/structure/table,/obj/item/weapon/surgical_drapes,/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/sleeper) -"byq" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/sleeper) -"byr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/sleeper) +"byq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay) +"byr" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay) "bys" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "45"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "byt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "byu" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "45"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"byv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/medbay) +"byv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay) "byw" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "byx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/cmo) "byy" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{icon_state = "barber"},/area/medical/cmo) @@ -4040,8 +4040,8 @@ "bzJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bzK" = (/obj/structure/optable,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bzL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/sleeper) -"bzM" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/medical/sleeper) -"bzN" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/sleeper) +"bzM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay) +"bzN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay) "bzO" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bzP" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bzQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -4118,7 +4118,7 @@ "bBj" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whitehall"},/area/medical/sleeper) -"bBm" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/sleeper) +"bBm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay) "bBn" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBo" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBp" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -8396,14 +8396,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbaPbasbaUHaJHaUIaNLaUJaUJaUJaRWaUKaUJaULaUJaNJaUMaUNaUOaUPaUQaUQaURaUSaUQaUTaTxaUUaJNaTzaTAaTBaLhaJNaUVaTDaTEaUWaUXaUXaUXaUYaTEaUZaVaaVbaVcaTKaTKaTKaTKaDAaDAaVdaVeaVfaVgaVhaViaVjaVkaVlaVmaSKaVnaVoaVpaVpaVqaVpaVpaVoaVpaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaSSaDAaDAaDOaDOaDOaDOaDOaVBaMYaVBaVCaVDaDOaDOaDOaDOaDOaVEaVFaVFaVFaVFaVFaVFaVGaVFaVEaImaVHaVHaVIaThaThaThaThaVEaUtaVJaUuazaazaazaazaazaaVKazaazaazaazaazhaVLaVMaVNaVNaVNaVNaVOazhazhaVPaNAaNAaNAaNAaUGaNCaKRaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaukanjaVRavgaQyanYanYanYanjanjanYaVSaCSaVTaNJaNJaNJaNJaNJaNJaNJaNJaNJaVUaQVaVVaSdaTsaVWaTvaVXaSeaVYaVZaWaaJNaTzaTAaTBaLhaJNaUVaTDaTEaUXaWbaWbaUXaWbaTEaUZaWcaWdaWdaWeaWfaWgaTKaWhaDAaSAaWiaWjaWkaWlaWmaWmaWlaWnaWoaSKaWpaVoaWqaWraWsaWtaWuaVoaWvaVraWwaVzaVzaWxaWyaWzaVzaWAaVAaSSaWBaDAaWCaWDaThaThaThaThaThaThaThaThaWEaThaThaThaThaWFaThaThaThaThaThaThaThaThaWDaThaThaThaThaThaThaThaThaWGaWHaWIaWJaWJaWKaWLaWLaWMaWNaWOaWLaWPaWLaWLaWQaWLaWLaWLaWLaWLaWLaWRaWSaWTaWUaNAaNAaNAaVQaPaaOZaOZaPaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYasdasdaWVaYWaZaaZaaZaaZaaZaaWWaWXaJKaWYaYWaXQaSdaSeaSeaWZaXaaSeaJNaJNaXbaJNaTzaTAaXcaXdaJNaUVaTDaTEaUXaXeaUXaWbaXfaTEaUZaXgaWdaWdaWdaXhaXiaTKaXjaDAaSAaXkaXlaXmaXnaXoaXpaXqaWnaXraSKaVpaVpaXsaXtaXuaXtaXsaVpaVpaVraXvaXwaVzaWxaXxaWzaVzaVzaVAaXyaDAaDAaWCaWDaThaThaThaThaThaThaThaThaXzaThaThaThaThaThaThaXAaWLaWLaWLaWLaWLaWLaXBaWLaWLaWLaWLaWLaWLaWLaXCaXDaXEaXFaThaThaXGaRMaRMaRLaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaRMaXHaXIaXJaXKaXKaXKaXKaXKaXMaXNaKRaKRaXOaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThaYyaYzaYzaYzaYAaYzaYzaYzaYBaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYRaYRaYSbjaaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNaZOaZPaZQaZRaZSaZSaZOaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibhNbhLbgjbAqbakaKQaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanYaVRaQyaXPdcBaXPaXPaXPaXPaXPbbSaJKaJKaJKbbSaScaSdaTsaXRaXSaXTaSeaXUaXVaXWaJNaJNaJNaJKaWVaJKaUVaTDaTEaXXaUXaWbaXYaXZaTEaUZaTKaYaaWdaWdaYbaYcaTKaYdaDAaSAaYeaYfaXmaXnaYgaYhaXqaYiaYjaYkaYlaYmaXsaXtaYnaXtaXsaYmaYoaYpaYqaYraVzaYsaYsaYtaVzaYuaVAaYvaYwaDAaWCaWDaThaThaYxaThbiGbiFbiFbiFbxbbiFbiFbiFbfJaThaThaThaThaThaThaYCaYDaYEaWDaThaThaThaThaThaYFaYGaYHaYIaYJaThaThaThaThaThaYKaYLaThaThaThaThaThaThaThaThaThaThaThaThaThaYMaYNaYOaYPaYRaYRaYSbjaaYUaOZaOZaYUaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPdcxdcydczdcAbdmaXPbeUaZbaZcaZcbgoaZdaZeaZfaZfaZgaZhaZfaZiaZiaZjaZiaZkaPnaPnaPnaPnaZlaZmaZnaZoaZpaZpaZqaZraZnaZsaZtaZuaWdaWdaYbaZvaZwaYdaDAaSAaZxaVjaZyaWlaWlaZzaWlaZAaZBaSKaVpaVpaXsaZCaZDaZEaXsaVpaVpaSKaZFaZGaZHaZIaVzaZJaVzaZKaVAaZLaZMaZMaZNaZNaZNaZNaZNaZNaZNbenaZPaZQaZRaZSaZSbenaZTaZTaZTaZTaZTaZUaZUaZUaZVaZUaZUaZUaZUaZWaThaYKaZXaZYaZZbaababaThaThbacbacbadbadbadbadbadbaebafbafbafbafaThbafbagbafbafbahbaibaibaibaibhNbhLbgjbAqbakaKQaKRaQvaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaXPaYVaYXaYXaYXbbRaXPbdibdjaMzaMzbbSbapaSeaTsbaqaTvbaraSebasbatbaubaubavbawbaxbaxbaybaxbazbaAbaBbaCbaBbaBbaDbaEbaFbaGbaHaWdaWdbaIbaJbaKaYdaDAbaLaZxbaMbaNbaOaVjbaPbaQbaRbaSaSKaWpaVobaTaWtbaUaWtbaVaVoaWvaSKbaWbaXbaYbaZaVzbbaaVzbbbaVAaSSaDAbbcaZNbbdbbebbfbbgbbhaZNbbibbjbbjbbkbblbblbblbbmbbnbbobbpaZTbbqbbrbbrbbrbbrbbsbbtbbubbvbbwbbvbbvbbvbbxbbybbzbbAbbzbbBbbBbadbbCbbDbbEbadbbFbbGbbFbadbaeaThbahbaibbHbbIbbHbaibbJbgnbaibgmbgkbgjbdgbakaafaaaaafaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaXPbalaXPbbOaYXbambaoaXPaMzaYWaYYaYZbbTaSeaSeaSeaSeaSeaSebbUbbVbbWaMzbbXaTEaTEaTEbbYaTEaTEaTEbbZaTEaTEaTEaTEbcabcbbccbcdaWdaWdaYbbceaZwaYdaDAbcfaZxbcgbaNbchbchbchaVjbcibcjaSKaVpbckaVpbclaYmaVpaVpbckaVpaSKbcmbcnbcobcpaVzaZJbcqaVzbcrbcsbctbcuaZNbcvbcwbcxbcybczbcAbblbcBbblbcCbblbblbcDbcEbcFbcGbcHaZTbcIbbrbcIbbrbcIbcJbbraZUbcKbcKbcLbcMaZYbcNbaabcObcPbcQbcRbcRbadbcSbcTbcUbcVbcWbcXbcYbadbcZbafbdbbaibdcbeQbePbeRbdebdebddbeMbdfbgjbdgbakaaaaaaaaaaEraEraEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPbbNdcIdcGdcHdcHdcKdcJaZaaYZaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObOibdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbekbelbembembenbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLdbNbeNbeOdbydbrdbMdbLdbEdbzbgjbdgbakaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbNhaTPbftbfuaTSaaabfvbitbfxbfybfxbfzbfxbjGbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbfJbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgicvUdbkbglbaibgjdblbgjbdgbakbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbeTdcCbbPbbQbdkbgpaXPaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgMbgMbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbfJbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJcvUbkCbhKbaibjcboXbxCbmYbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbNgbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbfAbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbiFbiGbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbkDbkCbjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaXPbbNdcIdcGdcHdcHdcKdcJaZaaYZaJKbdnbdobdpbdpbdpbaxbaxbaxbdqbdrbdrbdrbdsaTEbdtbdubdvbdwbdxbdybdzbdAaTEbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdKbdLbctbdMbdNbdObOibdQbdRbdSbdTbciaTSaTSaSKbdUaXtaXtbdVaXtaXtbdUaSKbdWbdWbdXaVzbdYaVzbdZbeabebbecaSSaDAaDAaZNbedbeebefbegbehbeibblbejbzMbzNbBmbBmbyvbeobepbeqberaZTbcIbbrbcIbbrbcIbcJbesaZUbetbeubevbewaZYbexbeybezbezbezbeAbeBbeCbeDbeEbeEbeEbeFbeEbeGbeHbeIbeJbeKbeLdbNbeNbeOdbydbrdbMdbLdbEdbzbgjbdgbakaaaaaaaafaaaaEraEraEraEraEraEraEraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaXPdcDaXPdcEbbQbbQdcFaXPbeVbeWaJKbeXbeYbeXbeXbeXbeYbeXaJKaJKaTEaTEaTEbeZaTEbdzbdzbfabdzbdzbdzbdzbdzbfbbfcbfdbfebffbfgbfgbfgbfhbfibfjbfkbflbfmbfnbfobfpbfqbfrbNhaTPbftbfuaTSaaabfvbitbfxbfybfxbfzbfxbjGbfvaaabfBbfCbfDbdWbdWbdWbdWbfEaVAbfFaDAaDAaZNbfGbeebfHbcybczbfIbblbcCbyrbfKbfLbfMbfNaZTbfObfPbfQaZTbcIbfRbcIbbrbcIbcJbbraZUaZYaZYaZYaZYaZYbexbaabfSbfTbfUbfVbfWbfXbfYbfZbgabgabgbbcUbgcbadbgdbgebgfbaibggbghbgicvUdbkbglbaibgjdblbgjbdgbakbakbakbakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbeTdcCbbPbbQbdkbgpaXPaaaaafaafbgqbgqbgqbgqbgqbgqbgqaaaaaabgrbgsbgtbgubgvbdzbdzbdzbdzbdzbdzbdzbdzbgwbcdaWdbgxbgybgzbgAbgBbgCbdEaTKaTKbgDbgEbgFbgGbgHbgMbgMbgJbgIbgKbgLbgMaafbgNbgObfxbgPbfxbgPbfxbgQbgNaafbgRbgSaYsbgTbgUbgVbgWbgXbgYbgZaDAbhabhbbhcbhdbfHbhebhfaZNbhgbcCbyrbfLbhhbblbhiaZTbhjbhkbhlaZTbhmbhnbhobhpbhqbhrbhqbhsbhtbhubhtbhtbhtbhvbaabhwbcPbcPbfVbhxbhybhzbhAbhBbhBbhCbhDbhEbadbhFbgebhGbaibhHbhIbhJcvUbkCbhKbaibjcboXbxCbmYbhMbhMbhObakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaXPbhPbhQbhRbanaXPaXPaXPaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaabhSbhTbdzbhUbhVbhVbhVbhVbhVbhVbhVbhVbhVbhWbhXbhYbhZbiabibbicbidaYbbiebifbigbihbiibijbgGbgGbgMbNgbilbimbinbiobgMaaabipbiqbfxbirbisbirbfxbfAbipaaabiubivaYsbiwbixbiybixbizbiAbgZaDAaDAaZNbiBbeebfHbiCbiDaZNbiEbyqbxhbiHbiIbblbiJbiKbiLbiMbiNaZTaZUbiOaZUaZUaZUbiPbiPbiPbiPbiPbiPbiPbiPbexbaabfSbfTbfUbiQbiRbiSbiTbiUbiUbiUbhCbcUbiVbadbiWbgebiXbaibiYbiZbiYbkDbkCbjbbaibjcbjcbjcbjcbjcbjcbdgbakaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbjdbjebjfbjgbdzbdzbdzbjhbjhbjhbjhbdzbdzbdzbdzbfbbjiaWdbjjbjkbjlbjmbjnaYbaWdbjobjpbjqbjrbjsbNcbjubNbbjwbjxbjybjzbjAbjBazFbjCbjDbjEbfxbirbfxbjFbfwbjHbjIbjJbjKbjLbjMbixbjNbixbizbiAbjOaDAaDAaZNbjPbeebfHbjQbjRaZNbjSbcCbblbjTbjUbjVbjWbiEbjXbjYbjZbkabkbbkcbblbkdbkebkfbkgbkhbkibkjbkkbklbkmbbxbbybknbkobkpbkqbkrbadbksbiUbiUbktbkubcUbkvbadbkwbkxbkybaibkzbkAbkBbbLbbKbdabaibkEbkFbkFbkFbkFbkFbdgbakaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqbkGbkHbkGbkIbkJbdzbdzbdzbdzbdzbdzbdzbdzbkKaTEaTEbkLaWdaWdbkMbkNbkObkPaYbaWdaWdbkQbkRbiibkSbkTbkUbMZbkWbNabkYbkZblabgMaaablbblbblcbldblebfxblfblbblbaaablgblhblhblhblhblhblhblibljblkbllbllaZNaZNblmblnbloblpaZNblqbcCbblbblbblbblblrbblblsbltbblbblbblbltbblbblbkeblublvblwblxblyblzblAbiPblBblCblDblDblEblFbcPbadblGbcUbcUblHblIbcUblJblKblLblLblMblNblNblObbHblPbajbaibaiblQbkFblRblSblTbkFbdgbbMaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqblUblVblUblWbdzbdzbdzbjhbjhbjhbjhbdzbdzblXblYaTEblZaWdaWdbkMbmabicbkPaYbbmbaWdbkQbkRbmcaDAaLKbkUbHFbmebHEbmgbmgbGjbgMaafaafblbblbbmibmjbmiblbblbaafaafbmkbmlbmmbmnbmobmpbmqbmrbmsbmtaDAaDAbmubmvbmwbmxbmybmzbmAbmBbmCbmBbmDbmBbmBbmEbmBbmFbmGbmBbmBbmBbmHbmIbmIbmJblubmKblwbmLbmLbmMbmNbiPbexbaabmObmPbmQbmRbmRbadbmSbmTbmUblKbmVbcUbmWblKbmXaYQbmZbnabnbbncbndbneaYTbngbnhbnibnjblRbnkbnlbkFbdgbdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8414,10 +8414,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybszbsAbpLbsBbsCbsDbsDbsDbNdbsFbsGaWCbsHbsIbsJbsKbsKbsLbsMbsNbsObsPbsQbsRaDAaDAbsSaGQaDAaGAaDAaDAaDAbsTbsUbqcaDAbsVboRbsWbsXbsYbsZbtaboRbtbbrwbtcbrybrzbrAbrAbrBbtdbqobrDbblbtfbnSbmLbtgbthbtibtjbtkbtlbtmbtnbiPbiPaZZbtobrPbtpbtqbtrbtsbttbtubrPbtvbtwbtxbtybtzbtAbrXbrYbrZbtBbtCbtDbtEbtFbtGbtHbtIbkFbkFbkFbkFbkFbkFbqYbakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaabtJbtKbtLbtMbtNbtObtPbtQbtRbtSbtTbssbtUbtVbtWbszbtXbpLbtYbtZaDAaDAaDAaDAaDAaDAaWCaDAbmcaDAaDAaDAaDAaZMbuabubbucaDAaDAaDAaDAbsSaDAaDAaGAaDAaDAaDAbudbuebqcbufbugbuhbuibujbukbulbumbunbuobupbBlbnOboRboVbusbutbuubuvboRbblbblbnSbnSbnSbnSbnSbiPbiPbiPbiPbiPbiPbuwbuxbuybrPbuzbuAbuBbuCbuDbuEbrPbuFbuGbuHbuIbuJbuKbuLbuMbuNbuObuPbuQbuQbuRbuSbuTbtIbuUbuVbuUbjcbjcbjcbqYbakaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgqbgqbgqbgqbgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbvcbvdbvebvfbvgbvhbsrbssbssbvibssbswbvjbvkbvlbvmbpLbvnbvobvpbvpbvpbvqbvpbvpbvrbvpbvsaDAbvtbvubctbvvbvwbvxbvybvzbvAbvBaRDbvybvCaRDbvDbvEaRDbvFbvGbvHbvIaDAaDAboRbvJbvKbvLbvMboWboRbvNbvObvNboRboRboRboRboRboRboRboRbblbblbblbvPbvQboQbvRbvSbvTbvUbvVbvWbvXbvYbvZbwabrPbwbbwcbwdbwebwfbwgbrPbwhbwibwjbwkbwlbwmbwnbwobwpbqUbwqbwrbwsbwtbwubwvbtIbjcbjcbjcbjcbjcbjcbqYbakbakbakaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbrdbwAbwBbwBbwCbrdbrdbwDbwEbwFbwGbpLbpLbwHbpLbpLbpLbwIbwJaOhaOhaOhaOhbwKbwKbwKbwKbwKbwKbwKbwKbwKbwKbwLbwMbwNbwObwObwObwObwPbwQbwObwObwObwObwRbwSbwTaDFaFebwUboRbwVbwWbwXbwYbwZboRbxabrwbxbboSbxcbxcbxdbxebxfbxgboSbxhbblbblbblbblbblblsbxibxjbxkbxlbxmbxnbxobxpbxqbxqbxqbxqbxqbxqbxqbxqbxqbxrbxsbxrbxrbxrbxrbxtbxubxvbpubpubpubpubpubpubpubtIbxwbxwbxwbxwbjcbxxbAubxzbCabxzaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxEaaaaaaaaaaaaaafaaabrhbxFbxGbxHbxIbxIbxJbxKbxLbxMbxNbxObwJaaaaaaaafaaabwKbxPbxQbxRbxSbxTbxUbxVbxWbwKbxXbxYbxZbwObyabybbycbydbyebyfbyfbygbyhbyibyjbykbylbymbwRboRbynbrwbtcbyobypboRbyqbrwbyrbysbrybrybrybrybrybytbyubyvbjZbjZbjZbjZbywblsbyxbyybyzbyAbyBbvSbxobxpbxqbyCbyCbyCbyDbyCbyEbyFbxqbyGbyHbyIbyGbyGbxrbyJbyKbrZbgebyLbyMbyNbyObyPbyQbyRbySbyTbyUbxwbjcbyVbLPbakbDybyLbyLbyLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyXbyYbyZbyYbzaaaaaaaaafbrhbrhbzbbssbzcbssbzdbrhbzebzebzfbzgbzhbwJaafbzibzjbzkbzlbzmbxWbznbxWbzobzpbzqbzqbzrbzsbztbzubzvbyfbzwbzxbzybzzbzAbzBbwObwObzCbzDbzEbzFbzGbzHbzIbzJbrwbzKbyobrybzLbzMbrwbzNboRbzObzPbrybzQbqkbzRbiEbiEbiEbiEbiEbzSblsblsbzTbxjbzUbzVbzWbzXbzYbxpbxqbzZbyCbAabyCbAbbyCbAcbxqbAdbAebAfbAgbAhbxrbwnbAibAjbAkbAlbAmbAmbAmbAmbAmbAmbAnbAobApbxwbakbAqbakbyLbyLbyLbArbAsaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbuZbAtbuZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAvbAwbAxbAwbAvbAybAzbAAbrhbABbssbACbADbssbAEbrhbwJbAFbwJbwJbAGbAHaaabAIbAJbAKbALbxWbxWbAMbxWbANbAObAPbxWbwKbAQbARbASbwObATbAUbAVbAWbAXbzAbAYbAZbBabBbbBcbBdbBebBfbBgboRbBhbBibBjbBkbBlboRbBmbrwbBnboRbBobyobrybrwbBpbBqbiEbBrbBsbBtbBubcCblsblsbBvbxjbxjbBwbBxbBybBzbBAbxqbyCbyCbBBbyCbyCbyCbBCbxqbBDbBEbBFbBGbBHbBIbBJbBKbBLbBMbBNbAmbBObBPbBPbBQbBPbBPbBPbBPbBRbBSbBTbBUbBVbBWbBXbBYbBZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbjtbuZbGibuZbjtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrdbrdbwAbwBbwBbwCbrdbrdbwDbwEbwFbwGbpLbpLbwHbpLbpLbpLbwIbwJaOhaOhaOhaOhbwKbwKbwKbwKbwKbwKbwKbwKbwKbwKbwLbwMbwNbwObwObwObwObwPbwQbwObwObwObwObwRbwSbwTaDFaFebwUboRbwVbwWbwXbwYbwZboRbxabrwaYzboSbxcbxcbxdbxebxfbxgboSaYybblbblbblbblbblblsbxibxjbxkbxlbxmbxnbxobxpbxqbxqbxqbxqbxqbxqbxqbxqbxqbxrbxsbxrbxrbxrbxrbxtbxubxvbpubpubpubpubpubpubpubtIbxwbxwbxwbxwbjcbxxbAubxzbCabxzaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxEaaaaaaaaaaaaaafaaabrhbxFbxGbxHbxIbxIbxJbxKbxLbxMbxNbxObwJaaaaaaaafaaabwKbxPbxQbxRbxSbxTbxUbxVbxWbwKbxXbxYbxZbwObyabybbycbydbyebyfbyfbygbyhbyibyjbykbylbymbwRboRbynbrwbtcbyobypboRaYBbrwaYAbysbrybrybrybrybrybytbyuaZObjZbjZbjZbjZbywblsbyxbyybyzbyAbyBbvSbxobxpbxqbyCbyCbyCbyDbyCbyEbyFbxqbyGbyHbyIbyGbyGbxrbyJbyKbrZbgebyLbyMbyNbyObyPbyQbyRbySbyTbyUbxwbjcbyVbLPbakbDybyLbyLbyLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyXbyYbyZbyYbzaaaaaaaaafbrhbrhbzbbssbzcbssbzdbrhbzebzebzfbzgbzhbwJaafbzibzjbzkbzlbzmbxWbznbxWbzobzpbzqbzqbzrbzsbztbzubzvbyfbzwbzxbzybzzbzAbzBbwObwObzCbzDbzEbzFbzGbzHbzIbzJbrwbzKbyobrybzLbekbrwbelboRbzObzPbrybzQbqkbzRbiEbiEbiEbiEbiEbzSblsblsbzTbxjbzUbzVbzWbzXbzYbxpbxqbzZbyCbAabyCbAbbyCbAcbxqbAdbAebAfbAgbAhbxrbwnbAibAjbAkbAlbAmbAmbAmbAmbAmbAmbAnbAobApbxwbakbAqbakbyLbyLbyLbArbAsaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbuZbAtbuZaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAvbAwbAxbAwbAvbAybAzbAAbrhbABbssbACbADbssbAEbrhbwJbAFbwJbwJbAGbAHaaabAIbAJbAKbALbxWbxWbAMbxWbANbAObAPbxWbwKbAQbARbASbwObATbAUbAVbAWbAXbzAbAYbAZbBabBbbBcbBdbBebBfbBgboRbBhbBibBjbBkbBlboRbembrwbBnboRbBobyobrybrwbBpbBqbiEbBrbBsbBtbBubcCblsblsbBvbxjbxjbBwbBxbBybBzbBAbxqbyCbyCbBBbyCbyCbyCbBCbxqbBDbBEbBFbBGbBHbBIbBJbBKbBLbBMbBNbAmbBObBPbBPbBQbBPbBPbBPbBPbBRbBSbBTbBUbBVbBWbBXbBYbBZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbjtbuZbGibuZbjtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabyZbCbbCcbCbbyZbCdbCebCfbrhbCgbssbChbssbssbAEbrhbCibCjbzebwJbAGbCkaafbAIbClbCmbCnbCobCpbCobCobCqbCrbCobCobCsbCtbCubCvbwObwObwObwObwObwObCwbwObwObCxbCybCzbCAbCBbCCbCDboRbCEbCFbCGbCHbCIboRbCJbCKbCLboRbCMbCNbCObCPbCQbCRbiEbCSbblbcDbCTbcCbCUbCVbCWbCXbxjbxjbCYbvSbCZbxpbxqbxqbDabBBbyCbDbbDabxqbxqbDcbDdbDebDebDfbxrbDgbDhbrZbDibAlbAmbAmbDjbDkbDlbAmbDmbDnbDobDpbDqbDrbDsbDtbDubDvbDwbDxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbyWbmfbDzbfsbEJbmfbyWaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAvbCbbCbbCbbDAbDBbssbssbDCbCgbssbssbssbssbAEbrhbDDbDEbDFbwJbAGbDGaaabAIbDHbDIbDJbxWbxWbDKbxWbDLbDMbDNbDObwKbDPbDQbDRbDSbDTbDTbDTbDTbDUbDVbDVbDVbDWbDXbDYbDZbEabEbbEcbunbEdbEebunbEfbEdbunbunbEebEfbunbunbEfbunbEgbEhboRbiEbEibiEbjWbiEbEjblsbcDbvSbvSbvSbvSbvSbvSbEkbElbEmbEnbEobEpbEqbErbEsbEnbEtbDcbDdbDebDebEubxrbEvbDhbrZbEwbyLbExbExbEybEzbEAbEBbAmbAmbECbxwbEDbEEbEFbyLbEGbEHbEIbyLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafbvbbwybELbwxbwxbwxbGhbvbbwyaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbCcbCcbCcbyZbEMbENbEObEPbEQbERbERbssbESbrhbrhbwJbwJbwJbwJbAGbwJaafbETbzjbEUbEVbEWbxWbEXbxWbxWbEYbEZbFabFbbFcbFdbFebFfbFgbFgbFgbFgbFhbFibFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFvbFtbFvbFvbFubFvbFvbFvbFvbFvbFwbFxbFybiEbFzbFAbFBbFCbFDbFEbFFbFGbFHbFIbFJbFKbFmbFLbFMbFNbFObFPbFQbFRbFSbFTbFUbEtbEtbEtbEtbEtbEtbFVbFWbDhbFXbFYbyLbxwbxwbxwbxwbFZbxwbGabAmbAmbxwbGbbGcbakbyLbGdbGebGfbGgaagaagaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbuYbvabuYbwxbuXbwxbuWbsEbuZaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm index f348360c2b8..718e73aea91 100644 --- a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm +++ b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm @@ -119,4 +119,4 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") attachTie(new /obj/item/clothing/tie/armband/science) /obj/item/clothing/under/rank/security/med/New() - attachTie(new /obj/item/clothing/tie/armband/medgreen) \ No newline at end of file + attachTie(new /obj/item/clothing/tie/armband/medblue) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 92c9a4ee7ea..b8d5a110cf9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -198,7 +198,7 @@ /obj/structure/closet/secure_closet/security/med New() - new /obj/item/clothing/tie/armband/medgreen(src) + new /obj/item/clothing/tie/armband/medblue(src) new /obj/item/device/encryptionkey/headset_med(src) ..() return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index fadd53408d5..30a815d8d00 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -87,15 +87,15 @@ desc = "A warning sign which reads 'NO SMOKING'" icon_state = "nosmoking2" -/obj/structure/sign/redcross +/obj/structure/sign/bluecross name = "medbay" desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here.'" - icon_state = "redcross" + icon_state = "bluecross" -/obj/structure/sign/greencross +/obj/structure/sign/bluecross_2 name = "medbay" desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here.'" - icon_state = "greencross" + icon_state = "bluecross2" /obj/structure/sign/goldenplaque name = "The Most Robust Men Award for Robustness" diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index b1f1c924178..f934d1a1277 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -194,8 +194,8 @@ icon_state = "med" item_color = "med" -/obj/item/clothing/tie/armband/medgreen +/obj/item/clothing/tie/armband/medblue name = "medical guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and green." - icon_state = "medgreen" - item_color = "medgreen" \ No newline at end of file + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue." + icon_state = "medblue" + item_color = "medblue" \ No newline at end of file diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index afe6dad66b1857579dfc0dfcb42ddef3b6995c63..a5253fda9990e4596fd54a16e3e14926763680b1 100644 GIT binary patch literal 54594 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 literal 54592 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 diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 85f8f6b6861a279297680f61516076c841f1e6de..34e6521a457a342277f5e87bf71d9d283730f800 100644 GIT binary patch delta 46831 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 YzmZLD(fz9dU_%J}g}OrVbBoXaA6`;Qwg3PC delta 46794 zcmY(qby!r<_CGv;fGA3*lqjGeDc#ZyA|Ww!BMjYeKjt{yYf@IrS791}yrGG4Tfi2g#4b z_iqKG+h2{A6ciMcM81i}k0t2CD^Zq}e63&3Ko3jJ%!m5>EO(xZi*;{1hcZsQ#(Z#0K zv$GRk=*i}9>z!K5Z`0(ht_rmWoL60c+luyr!$m<#} zKL~nCX7EPQ`A<(!`tYXLV{xyBtF`k{A-tfVpcSnyBWv}lfcXx0cJ)QHI}VUI(K4%Z=IJ4m#fNBwN3JO*5&c{hi6+iM1Q?6jcRSr!t|-rpdFe~+N4YR`)ZxqFyCl|3uJVwv(f?zr}U z0ePeaRr|ghb6`BT)^WYki-DsqlZ}r7Q%X(X$N%)<5-`Q&*9@xueLs`J_RaV1Dot-? z2xNxwxj@{&$}H8?=CSe+$Y2tRzCr8m{p|Bu3(#bGI_18%L5mEzy0ctbST8=-n0;n_ zzkwX5$exvqu;-M_^j)!1T7JZ74r-eIt)}7^ zv#oOBZZl)F#=~Q@Xdo;@7Xn_$$^lOSJ>%P+m;T-Q6j9NemcMV__tw_z&Ay#Fp&($@ z2gIXJ(@=C-t%C?f(+Iuu#np{MFxJ}|ns&vI*sJHW?~JqIvx>qklo$i(q zKig?nJY>W}GdjAMPcKC13vez~*12Y(1$9i%itO zYvQD=ChWzh3VHLWdf?CvVA1=5`qmS{F=?e&!v|lj>|je7w!CuGjo7JNVCOMI$}Wx8$Rk5~DlG@vKGwJk5kIP`0o( zC&rtXG9&Me%CdvFh%d08lWVXX?$q=utmEIUba$ zo5+{;%HXx*IJrmrq0@=Rq?)b4b?5YECx=pmU~#b?4TLKUfP%+-a%Y{=SmQ+M%LJi0 zHL4w7GcU7ifMOK|-v{=WUuQ^H2Zu;W>LB*>YVH-~RdcWAm9?~zc^%iKs88yJwNyvA z)WbaNWWIm@J`319BqAsuOGvTgQjkD_yifr#v&J7`q_Q8Hw*+1W2BHhOACCv2eKM8` zy2TX6x~QP(@OWSvDzOi`<6vRgcMq<|14Y`e!bC{f^xs_ad;z`N*G44&lpyaG@xGD+ zt}7{0hKq{7dj*4e8ON+a^5aU`!YwM=i4MH<1NX66cv8#_k6#AjOFVid8|_1f8j-|s zwKpJ)h-r`OmpunJBPpf0#D6+GF2(+Te_twxKQ6|gLp}DdDIY6=HZLzhb%qYWdHJCR zvMMUV!=tGR`K_+1tUPmlxL901tE#Gc-4~l(slOV!csTp%)2EKxmwKvyJ#B2tj@;U) z7a{*f;s)#T{*`4*DOc(5J#@2;!Ykh0E0659et7%o`_4aWc#JZ9sY33RwfA^DzB8Qs zrN?eZlnk?aoc&~SMeSQkjFt6SoBOd$42?*&_q9Ew^@%Tw z*ToJR=*_`zB8Rpj8xjMrw_ZD=a9E4;_TDk}*$Wmu? zgN83@wGVjizQv{&P7=UzkDesZ0kW z`|RFEByJ)@I~%6%Tqynf3RT|l`#jcrZr3#w68&}t+rP$C#%t>N7uH_d;PSV?SOsN) zy8!#bo$qe#JCKzcjnxqy%R9Cd#T*V}bQ+(N54e=vkHsD?hzz`T8Q$sE%Y~siw&;7U zu87zaB_$`BTCM=>XgZ&@@=!~+qx zKY2)UFK^8iE~j)Gde$l%XuCSv_M5pduKH6s;mRT#wnflI!|@Ganh z&k6Z(tr%rIl=v3@aJ_2C1m5HXfl#Wj?75va?+fQXYCl)mWbE5?vVQyaZFGhh!Em;S zcl+(j7jfI(R|gZBT!8iqm! zK=W@p&Bfm%!KkJ1CsZ^KLewC8#0kdR!R@TQ!<_N*lcUNFuGi@Fo`#%P=?I8gi6Kb! z>0g6h_urxRDNKK?t?TFo^MWq;^NDoV>hcwa&6z$D6;~v8p)7-mPlj~*?^Eqaic*XS zGr3vg<2^zb1zOSwHfhaJrO>XG83y%B(!a{%(qv7mI-tf?=>TQ%f zkw_>J`mR#9QK@an*cW@#cdz^hkL&u!)J^o9C?^BRX0u3 z?H>gOCTM}$>pD@Nv?rRTpdg&Zw$?||cg(Tltb_sSS;0}OWSGP&!yr?^O@G;&sY;RnaTC~Kn|9>qX;oIc=fChvznoycIN%|4d0ddeQVV67iU zCU%om0UVScW~5{r)GK!*@I$4)eRbZAwj&jSy~~cS+p7=Z#3g+e#hFrmOmah-Qt^V1@s<%Xk#GTqY<>6cihQ zXz-&1b~Nn;X>CcvW#N52Hli7*A?L)$&rQ}D8>XBf)s!XIjK;T|-6+p@bKZwjhb#Z{ zB$f7IjEL#}quc(}%^)%lJPFN@{+Whai<^AYlSts6b}}Y}Ba6NLCOoo7JY-eE z_+T1U?ab3?Um>t#Fj2Rh#nDpB0t)82B;Y(+OAD0_LOV4-(?}Il{8fBBjTCn5sX&68 zt&$~nL&a1xPdc?P!X3;yasD9;xhaO7Ymi{j>E%HA)D zqut_n$U;5N1N^f0w`C5sx@TUx-D2bJnCRU*kP+hkR{ebaY7sJrwszf#^qt=p`Zwrf zoNPu@Pyi*76|e7l+fYh3QOs%Hf2Mo<2+^*%P)BU{3bFkAZceQQBNOi0Lr5m0aKPy;H2uG2xD&nmW3a4D+vV zFDG29Ix~)^0$d5D=R8M7OFPYNEgl-o!>c;?{b9D;pp$_-!Qht@Y+$c!y|vcOV!=U! zHN-aEuBXFo-?Hdsr|!IDD{TMjSu*_S7NgL%6TVlzfW1Feo;k@x9LUYi-Ly!35kuqJ za)IP5^2J^wNXV>s3A9>NY(4|}ixnlAJ2m@v!!zQ(T{W?Pka~1+el$8h+u2U#=-8FV zH&Dt!SJ_MRRVxHmr(>R~uh40F=X_ol zPA|CR&|Ul|CCEuRmjlq;Nm%jbE^v{c3qDEA*p%9kE;My{-1M+4J zP;3^o68q~E{8w169%z~I+#MO<1L`UV$DeAaD5ls+-KViO4HpeZe;^k%6)tmV(}yo& zpE=s5{MB6`(`HYwlkiQ$eZ>_OXY=rJE^-E_YWDK#swv?L(po^Q*R!x`FGW&8_k9)1 zM$;1~oUZdX354FK3^v(CTnZ~NXKjX&Nhl2$ zxw-9&;*@MetU+U=+j~RS^XuNAF2R`D*ajzD2qCTuHauUE?h)R zy@RjsP&bp()Px$o*`RSZiTYaV(y&3*w4e^mx*+NO0wS=AEcm^aDj)=L=-A)12Q&3Q z#(6j@?HpJUL6+9(7cLfw?WNbiQ%~p6Kz{m7tLkGTDLKEA?a_VH)XRlij2yHT(M zy3|feNd#Fk#{oQ>aCQ_J{MdLdy$kg>IRJlI=v9;%Lw1&nwm$%{H*epfJ$aIgm+7eO z=H|wp2H)M?6{=Tehfz$_yeb+46!RX8Iohqi;<4odVpefKVuu!_J^Mf z?^@KMb60p57M)UY%@>%$aB+Ti^9&Eo^1`GmK5&9ofcqL2EC^z(Jh{x?j{3egsNvFX z1Tg&Kvs4s=&?E-Y-KIPJ1@><5{{X`iNbB3{qTxaK(O3A4dJ9+$ys=VMB(hy0(9Az^ zew%MC-pJ^VoN`S;JPc=#**^8ZyB5Z(-&+T>wPB81Az*xkhL2)!grB#te(br|`F-$g z2B`_uci|8YS0|eIGTBoCbw^c zpkU{wUfCu4U-KjvLLfHGR+Si@3v*cHuyfPUi^O$R;5ZvOU&$Vs!=c`gG845CUS7Po zux=rfDh60oxkb80*_t|#iHVIjxXU~zJO*_0tryrqxu~ys5!Ke)^F2sb+_yk^Mbc=> zv;KKLu@;+CsJ35#>7f6&DwbXJ@IAQf{hp;DE9?~Uo8OCA_shErUb}yfKigHO#ZCYI z@YVO6fPy0Iti${Cif0>`Fu#01#lr6A;&xk^@&yv0ueUWDTyd$tpC96(i>LsUWG>8N z8{r4JN-;{N>ol4}SqynhpDJx9@kOV92ff zU>df+^h_A5;YTh6UM%G7{*QsvH~BlP#M}k)72I6Yz$3o~1qGkVyH_s6o$Fzy2oS4r zj}#QRQyphy8?8=mCzS(nqywEmgLU0t+uGls8pi16udb?p#3rj{!SaswCf^1O-msPW zJ#tZ9mX&NIz+1bt$#U#k^8nS<_JuOQaLG{sMG~@8tBXE0HFfDycsD&NE;A0z{XijJ z@W&bRyw@U>!<4zTgYdHA#-)@OrA}TF8KXB7CM`*S(A|cfKcyBr0;C3`1JXKP-CY&z z{QaP(#~{M!u&E246AC94KMaXzD@*t91K;0^lUe+gViKt>)Es>7Us=u#pjcSdvTm`1 zjir2?^xD0_=153LLQ%;BK34dBnd*_R zliTf9anWV~2SE=I`Z-!r&lcJD&USc-vR0YZ5hGxy``f-o-2pfFB?X4fnMbv~)h*HY z^ASNKyXDm%U8Yws-a_1XhMCtToWaTGb@K(MHc1xT9&aN^_o@^=)iIJbjI7##tWSKf zRkD>1*N+Ez=^71<6xczrp$kxxS^_A5b)JGp=UuVrn|BNt@wBTZK2UF!aPDOnR1Gys{Jbwlge5;vgOydV9yPj(*Q%OP$YSLR@Sqo#i)aWFU_az z%Y=x_h#Y`6^b$1Marzsl4Q=h#l4RfZ2PVf(h2`;*dO~*8mt99QOUr9GU+dg!eUHUD zcR%cs9~i)QiSK_nAd6pk&G$oeaaF8{OvF8^^(A%76#j@$nO8q^)%|b&*tDi~`EeAk zX@2;uwz?R_;(HG2*>leM8an{1`QVX^G*RHA*blAwZPkgs)M8_ejnAox$}qV5nVO z{%5*W!dw@l5RN!tUGKUwetMM1CY zcMp^k1XiN{WeKyj3GU04Gw|waYyFreWumEWyBnBPqY)4ro4uZ(r`JQ1h~@h^Qeu>FWRwA4rnkE z)7hB}fgTkUvJYhW|79|Z*itHcJTSi=eAYU;P96M!epCED$|m!Ra(@Bk?F;mh~^sshmKP!#2~GGgb3%D}g0+8oEf3D_Hzc zzp8W>L;Mp*V)uX?h8*92;|er=Zm8*GWG&OZR^PSFGUUDNdBQQP!bxe*bBY=Ay8w{f=I_=#<-r z$F1|0=6`u;9HM!2x&PaOvBYrjy_MV9m*q@e5ukPU#vwh}uXzJ-K?p%mzIq#ptfFQnQb^%V>-Q%^rgiHCqU%3BZ;jI%N6d6J&w~!Kn}l zb4_#dCezILjn2Zkc)`1z8WD_P@2bzX31O{HQuPtsk%esG##CF4ZqAO(1KQGMXv_vB)w5B9(wWZFCLA$;n^k7wzKf%%>ZXK z)4^>p$SnEAK79eh3EVErhm8nJ%HnC^6dcjWa`C>=J!Ck?oy*Xn-8Tka<4jQzD z1eOk3){Fbyh0{aZeT^Oz0~j!Jvu64Bf+(3y(zC_DFHn@tBUCqq4IGk(92{(OC%AXe zQQrAxT_{zkaiN7z!C@zJ^mCcqs1Re0tI<87rb8Df43xJ8<@R>{*$K&BnfQ@WZF@M8 zsR{BQ$yc&g&B~l53*3L_Pmg>b!4*P@ooQidY1@$U)AL!t6#OgP0xjV^hW0NdE0tg9 z*ao8&RPto5Z-S%EIk)UrP&rrsD^5R0)_4MS!k_QumlCJ3pa4OVx)@|(@P<&78 ze~JdgdXkC@T|gU+!H5ugQ*Sbc!OjQ&RVk}U%$NitJ{oA-8E?P~0CC_QBvOh-_@&#OM%Ar+RfzMY0 zpS3N6U-rLjnY~dN$Bb+7w22GIGEGi23>!P+3Bv z5J-IGr#m^H1XR7G+y^fgtcym`CC*}q-o`?&vX4y}@`R{FFc{8^iuFnl+r@)WWl*;$ zxQMgY8v#Uq{>ybPb~3CVHlC6^(9srJ4m>gwC+IP3-DU_5TURTE2#<}V4;;HC0j5C{ zOG!U$Ru9;)m30go(SXOVu{H#|wGbG-Yeq7e5m6%8lFDM^{HR6m*0FytZkr_^Zlf@~ zv!BCwn}jDQscg99{UAc6=7_wuJky;1Aa|a(!s*|g&fYa8t>`jm^A2V7UTqB}rlO6N zskV@Rv2TBKMA_W-@s?HrK0pByQyM-d3x$nv`op*}X}@n?19j;*)p?wlpAc+)X2&^1 zn})%D9HGvdTS}Rzz0G&*3X-$v{G;)yJ1lKu7^Qi?-VISL%%71l!w2l{hP`X_EjGFF zpOrhS>334*TWcaB@dP6uo6_GQs?=AX7{Zx{zOz3w+UFFOkAJwdL^YCuB)Hb+-Es*lxa~8mH(IQQ`4XC|o@TQBEX0?; zh9w99=-2K(yN1dZ{Re-~*f_d8ZV%qV;M>^Kk>2S3v`H?J0DZ5s{B77(enU9&&Fy5F?)YPF35G;eK( z;0Q08&%1mwEad1>gVBzLTGxiAifsg%*MKIa4%>x49+Ln9>gTI7St*9C|*)-yL>K#g~mlL~5Jr zZlKJZeQyp-?0_SF>+G1Ft*sKLdkNV0R+}Qe>?JwJNPGBHtH zlM$Py?|W?cNY%$gGq0x1jC?Tl5tqP+PZLe>EM{L|d8}gK2Ee3*Nd82L70F=l&9si@ zuy*sl-b=;~4oV3iftZ_kqxltz78n#c^W)8#vrUwEZxlOWu94tB&;d;Bf=#@Q-tR`$ z`%6zTAGXFDMx!4b7F_tD?2nW9?;i)-Uv^x6C z+TE?>NegD;RfXACuM~eGt<&Jy`cCx(9-vVXnV>bF2f56U$4Qtqn|)7!g}d2T`6QCR z%6+CTySQgdx9({|L+?AZ&k5_j%;?XX5}x+=G@!LDW_aBG>=nCBS#da^3F zCb3fq<#~%W8|2?gI9!*%9KrpI^(`#1SDd?^ zlvghEfcsjs+W%J?jJ2gX_zb2sOML|4+YT75uRviOx&5|l#PK%V4Eu5!d3X?Hlnwaz z^FN=nx#QABWKCa_#3aF(>)yIV-q}Qkum-*+zo+c_Cms3w(z$hIX~0zKTIMVssU{hn zCfN(qY`x9S7D5w!2-!gknn0-`t%a{pTQ()Y&OI{NSyOjE6Y@q;WTF>x`yLjlFLUdz zV5nwDgY@^r=Um9!e!6j51v$tAsJEq|XWDlD?zbM*FL7%pd={MUsZk0Kj)9$Gj&O}M z-5P&lv@xU&{GP@B^(r;YbHxts4Kn$Q-3v*tg|*}x=D=jDPV1`R5k)Ys*cs3H)XyW= zhNu4B+xVDMB5irCdHIkPn3!+z9*|EHpFN6-Le@%}FvsV9zSdo+&;^zbgwas43UODD zb~eS`f0g=s61{)!s;_@`@9Qi3z+WF$+ri}&@~Bjt{SeoQJ4XGd;_njRHtBx-qd*+O zPHQ%}f8JTr;gt>|3MyH9Iy3ZYs55IB@ZB^Y%cS`c=xb^qso81&?s6NtjDp`|H*`Zs z&SFA~BHUB-4_2eh06CL1*PzLEFIn+rzvcPE>K-^#3y2M^4B#WWOAz67-=z# zItF6#pxOWvAl00^F(SB)-*uoWw4Nx@5zorD|Bdr7lHWQtGR$G1GJwCM+`F3aV?d>y zunexHYGkf00c~x4MEEUkKduQnpiJRuE~Tkr3@4W9ZOU)v zFPV0eVVt~qxe%I&QZFa0@-ueR18chX@#wCGGWOb3c_ol{$N}vd@+y(q0Z_zP8`e?f z-2Kl;>9vbgq2h~g9oGv{Rd=1tzLP#yiD)jZrN6Bow!&wWC6$Kl4(v4y5q$L$RAumW zcC`ZIke82LfENSpr`Jz#+AgGNLKRXy*Gbw&)Jpa;Sd6qb8V|;s7Lv!gw8SxPvzE!* z(shzlf1`AjBSl09EdIjjS$x<|fN{2m{N|~5(lp%S zJ$#3!wajWB9q^3D_Z5QCzwYTd@9%Zl1G+UGad{8ZOwBQ&KVPk>(=cKsKNv0r`tI_( zZt!h~00%#f{nI%=BVs8+P%)0MZ`)*Rsps;ae!q*6-2gD@oyO|*R{k;dCv&fH zBT+JQH{?~3b>!6j@8=yxRwLxo4s$6j9RrA!`I!mBCRv?1{o+du1`S#ezDY2v|7#;3 zkpS(>zF*c4@YYvlQsxG!dhdNYQdH}^&|NJ#06P`<04G0ewoY=@Mo(+;{dUMQ)No)Z zgoq^0VGfV@x1(;>wbrJZ%)axR9la!$@_qj@19A(y-_RAUU`01YjW@e@;jf5W{dN0u zTNx6$MXW$!3|bq}_pUVw%gfBf7v^pqPlCl;^D$ffd<6$)@#2okFNb}6DD?=QX!;s% z19_T?8m1RezvC+DANN8O%lKJzOPAlIwc5E_Kl3p>sPQ7v+f2Fb+2_e>`1pJc1yx)I zabE|2cYqOE;>?4vyyAzMasMHhe8P{0K|TCz5cQtdi_Emj(yPKx3r9FX>wvGteC21U z6GG(!F|wIKf2aD4FnEOqCZo>>Gh}x$?=A>t{5>l%CujbDffTkE54Nc zFeUF>Je)HH&&%B{gaK2VW7ZF9<1Xr}yJsl4^2SQA2;z5~IpITY_+v%?68gC5Of{V; zeeuwK9B;1DN0TfkB(mACjwSbd{;>;gUN!P{JGqEgy}_y=t=~;vqO;@0&V-kViAl$P z$LYX}$>Fb^KCunRyj*2e3?94n;hOo;cuA+w3wwB18MV+5g zn+FIDB56c)W5U9^CyNvvA1>$gD$gfmY5&0YtLDrp;=X=G2l=zVdXp^lb7!KU=n$a8 z%EV85hwMxe9qW!nQoMYi`CBiFmhHVO|IqXb%c~Qp<-(2;y$P&sch}8{-9lf*ko(G5 z`$Kb^Q9o`C&~ig_(_PiZRq4w^H%5Sr4(4lmc4l<93t~ij=4(s|h=@$vaJXLNeEs@W zkWnpFtfsPTw)%yAGa9Pc+>bi=){b2D+@^lm%78R#BD36ACZP2z0Mb{;{PF3}Go)Ur zB>)!yt@VY`L%bFnan=jirUC_^5Ht7#-kmS``#WHU>`R1Xk(RIU^<)AZ66_{3XHVT> z-AS=PG1hTWSlNT>&Cc((o*_6`2wqf7+7T*!1}Z0A)sO{lZrpoy4b5@g_OO>Rr|03X z`TfkuU?|rluPs%4nHAl=`w;WaX*W(@TvM}xkCi_E5lP5QDsAzlG%l;)fG%6PusS^t z@SG{Kcmnh!nGO7;%k*&y8#uhibkHj$DLHw;ri*g&jA0lAL!Gp2od{&rsVy88bUPL^ z^2G%iEj2qf;N~q4B;a?M!fKOYA>J1EVy~Ipq>z3O9J$qay!ESJqcV73cCI}(01(oV zRNe)N$^0z70Z)8$8wrHU0SHK3e}5KenEl=C)j=%D`+x|!MD&hUC29HW5rd4j2M$-b z(=1L}QnIII!EsMOyN-R*tjZ@5YGCzu4Yw@ei?YpafM_3>q*j8?Qa+fI+ zYy$6i2$~?e6L0)R#5G#uA$7KMhrToF^`+7$6Lf7>nEY`DY1H}M>{7%m1YqmmTH<2B zdP97P86hUfC=#q00ht^$T&+~`l045{A?pp6{%t@Pf0T5!2t zW|NKU>S30BL1c1PtZF1L56~vk&d0EzEuMEVBWupd>USqeHcXm~R(Mo-y=c+*-h}b*y-~NwQy@sErlJWj$kRt$>^X+)&TTVor9u!Gsbi2~XE z;<6k;y@^&=+fp!l)+`xkUtixer)jwsRDI!$*XQO$Hz~ibPwFjeOyJ`yYQc(_PHWut z#m2#;x!F{p0zld_MCZKeTX#>%(<^>$y^S)>oy|60hL3yABR`x>3|^&l?^l)YVj3^G zcbUpzZZ~i0Bd?DPNgUWCkH8^|G`%YiTX;|Z#jkf0&ef=_MAZB`^@hV{KP3atPJ(+InJ;2-i}4zXQ_zkf0VZOo<_(z`+pfX*i$g`)R98Os6P%<;vI^};G&(MvXmar` z)2|wo;(3rHT60TLyJW0b5Bx2~hTU`Nl72}!=RT_*v()zBeCEn+121)2J_~Zjr8C?m z`=%|Y7MD|CLJaATB9-DXx?qK&H%QzJSiD-f2q(%8*(m2DQ8-3#wH|)*aB(Ub8WD9y z*%i5O;dPDyT8dX{cDzHKa56-kelo!LjFM@s)2zZ5;vkRnDhjXTBWU|-)3HcY8;uSP z*Ji*Ym2ZX^AA0bNLFXoF>FVLB?c|BYiS!CS+QuMMh!=zwsZ@4rpF~@$^w|X%wsm2d zdgh@-_n*W##edv@=W;>p?6EMYtHZrBaBjr|9~9eW&C+S1A^5+3{{_$9GWZx1%%x5MJ zl)^EQw;z{u;$=4D2>$~8xx$-rVRJ4K<^%)`C5eTKC_nvWS?{?~`P?IPo-NfZKLNHo z%_ubej?(dKyw^4CNOIIt1&;Hb7{e~NJCHbsA?xCMt@Vun}MorgmTgNp5Op>`zuaV>}Qevq6RJs^1~S) zX+baqr1Dy|FlSCgp%uZz;#}J2PT?*7Rf0SIWa5qn@p8{+f@d0;Zi1Bmsi;g&uf66-ASm}t;3!uI zC`Z0p4(|V{zyloxC0yDWj!njF3KzUiHWe7#S%hU5wUMc~`K-!&)HR&F@I4JCqZY#J z1+VUshZ8*)Y(@U5q-EyBmq=%1&3f+7tsHo(dvf6M(74Jz+w-wga`DZQx2)J}7dZ+2 zYwm-EQ}zdk+lEOK`EYoOsM%7|o0W_RAiv<$)#WiDTzR}R)TsTND z1ZOsJ(9OZ`UMXmqc289c4G1LLHEeMK-N0qXuAc>oBa4@Zj)Wvu<*qjOE}$l;+v0$n zGOo;F74StLVQb$cv_lKk_4$;A!Qpe?HuPNl&A-$8@(-9}(R1D|(f!m3A;9`CzS*?_ z0_u}Ll+x&*=C#*(( zCb^=4ja>1!GWkN??a0tNnjd3g%EsonlMgay1pHWmOXkDsWS|6jel* zgv`rUidECcHuW0+D)7+dRRZinSjCrUYw;@Ou9=^o*Z&fq`5weiKfN>-Uq>B`(_@gg?xK>M@MDfffSf(#9O$Q=B z686@b5ARJQQAg#k_)-wJU1_e9LcW)YghW>62ujp8oiK2gizesi!%m}9 z*}=j+l!VN(l=~yL`~K{`0HPke&*QvC1?H>m`LrrOhcr5}Iv}0_+QpsD?5&wIL}Czu z3Mu5q+|jt~cP5i%V2g{2y;91YWL&6-L6Fg=*+GqY-5am3yZzO?p5M0zERH?j4rc{f zs@3dow0;ZUUSSG0ZfAXncuXf+iHUU`C4&Ojm2KCoiw$75lz(MpF_GIuzmv5OIs2|h zOB8^Q$#=$C2pb$duhV>=@j{>~XO;Y5mUmC@rAd4#AYTm3v>JG!>u#o$EcjCCR^jdl zC3}+&Tw_KtCE63I?>|UFrNcc6)4;rFt{oK3_3|&gvx5lBQ1b? zw3yq}%R#aH=KARjQZk}%IsiO@5Q8`z-qMn-HNQEWq8MZRyVl%GMg|K+#|qst&J7oq zLk<-o0m!D(-_6Y#o#gm<`sGL8fz8RFKdlE}DL43XJGRB>Rv+2>ESVy(>aTrP)gDu| zw!397xh>kMn|!V|3YhZaRhemi>n z;@f40;=Z9yJS-vg5{d%URAQQ8(`n-%U$IP;f?vNwORrobZOaWs78GZbS80{nRZC0l7 z~Fw0KzIpAx4bf zGhTI7qnGJjs8=t|%*>2XvZ8)Y$Ig!TG$G!;>w0xgA?I;BGULjBq`Sl!2KsKGdHzuQ z)PJ~aDvD8!QN|b471MR!F8pq(ZW{~KB~A8+SAJo@=if7yrUqRJc-@n^@a zek>gzXC4xWir8Y>V`E-PTedqclnQKQe}uofj+_m-+70d5NSbdxf3$MHEn06w5ir&{ zG*}1dguO3*LJ*+!`Q+fy^3hM75jb+Wowms^F7yTaf&b55p+CUvX_ev(-vGf2lAv0J zXXUdrz0tnKC$|f}sYo3(r!!rX{b)j;(@O&vE21!zcdBIw{^z5F>cjfT43GO~sTqF! zv<Az3?bxT`i@eOsaHjccAnX;P5Sfm+^VWv9%iO9VE{3F@=w!&}9qxEg&)DTxvt z$No+2nFUmg=n5O|QuvfA_Irov>B&mS^&Fhd1%&S_h{KcXn=%x=K`_z_xtyoNKPQ!U|rbMz7ZljC-$lo%p%OeMMA*;tzd#Wp!QWNZy5_>H6iC^5%@)4pUiya zD!fk*9`=dE<0vko=B8IzKY<(pGL@*mH~aZE*jnk#BRS%$HB>AqWBw?=TA3XiHfA7q4)|3?3dtfW zOoC^l{U=FwfJQ4qhnpAr4-WRwQ{Iz-76sm{ig$gc)&k(_7j5 zD!+!Ky(UD&*wK9IJLPs=U^V3@0iznPzze?FJ+Bs?CQUydyfs;OiiN!ixnzBiQzyEL zmAO@f)t6s(NqCu8TP+6ZHq%iOvLg0- zE5<|Vb9u73rZgrYk?^uIAfzN55Gmf74UN-wAauVsj!QH>z29f4FLZ-)!0$aq5Jr5H zaJRky4C$R|D64@%4Q&(den`9N)js6TD|y9T4e#POCv-H+lps&@WrL!k%PxM<53R1> z%O(y80cr<3R|DYU@MSR;Q*POY3NeHI2i+qoYeDN4XB+EMnMmi1Mw_J7O|DBZT7IGw@Y=24Z_I4Aw4Qrv zeg|=&OmvMCpidTD{=i^5iUPIS!uYprCQq?oSYIEFm;&Ik4#Yiihp(b)%IYxFuPG26 z11FYHw5IV@21_C3>GRXLd5>x;)%JD?@7pME7f>otjf*F8nVo!l{|oLZvi@aG_^wuG z!C6&l)|I;XaJ2i4piX3I9jPt*z42ERz5_^wu2WvIJ#hfLJqN8_4gMYJdfT|)`tDhT z=zRFPQ?C2mn=hlR-MwS)Cbvc?s|FjRx-&bWf#1<8!_Et-BQl@u?-xF!a)7;SVGQ_@ z@Rtpow8I~_it@M>$OD2*;LY=?;U^Dr37uB(h9uCIocNM{@L!Ne_lcPP*ME6KzWFXT;RRDCk<7quf5aR zF<*Y!P9Z8wnfL6>@>*4E0v#I^1Pn&!`L?-$oVssBw6f6ls)>1wlcPP^4o?!9WxQq(M|VrE5SCP$U$P zZs}Ayml9MYqA z*0GT*19PvM5%KNA#d4*AwU#^*S3x2JmyYk|ZA9{k53H?$2TxNKys3zVH$JNM&y?kR zIFeS`gt4oqMf4+MW$`fJMz5Fp`P5%_ci;tb9tb^(?%s&(zQfcyI`h+OXBYn9j(q!L zdGxTCzwMDA6IZ~S&&TNL-)FhRMwYn#{HNM_AFx_n1IU>d0?Y1KDbqR2&A>sV{1;z0 z7+@?@A%46i(%sSTWhj^5XILVSj!X8u7TP#bsl4<+Nogj3|E}BfgY7JfNl}NevfUR^ zM;Y=&K%L8B@r(Lt9i9Qt+v@*<(#9psz}O&_OKjBQ)C~6hV)`#n7AQp_#AG zyrGwO{}YwRL)1s&^Y2C-p@r!gZI3*DS>)4@df#L10PM-`iJPR5u+YzA{=qMcFKut6 z2|}K6Pd;56jV&|_IJx?yUJ;yM6_kgZ)P+a3jTOW9h@=H;_~GdEgW~CGhFC>H8AmHfl1v0bk&O*Fh~} z`kNMf?21Z&zXI6jra)Ocb0(7~??~7r--xtai9A!$YF@QIL6tLW{yV4H3Q=Ot2&P7D zD>nv#F--m6Q>_kR%qN|ygjk#Z-H6vh;okL1hdED#)c-lbt+>=;N(+|H zA;YR?6g3-fZWQlp;s!oIO8X19@s}@Z?2}qRkPz@VO@>i%Tc0lcg9hY89b9J8_|Tj2 z!j>z+)aOBljQg#@!NHi66eGc?^`ZR5Hgb5J4^7kI;G?sxiOOb_8dZILeWI9El$(D( zidew3BZg6O+S03tK)i1TL;n@)Ujs26@O$*Z7gLeOg9nAxWiz|PS9b|lpmonYc-;QJ z`UY~HP-S%G4q1ZgJE#5!x2a1TLh7 zUlPu{<0n>fka}SOYde9dd&Hcl{#YS<3BJsE9^#3}>1BcS^H z@96uiRkjDrl$peVEWn*H)WHbta=xGoxaCFq=ShZ=?h%*d5{BFXn6iJnZni4_oWB{D zguHo&M{h-|8rr=Q1?aq8@$tO5T@`qgfei2%>F!v1s7CoPZW~;m7lJ&}`Hud5%Fwlz zEhQ{t8>=nGo)o|RJb~Pr4X-M6?4hijDe+z02v=Yg(MukBy{zQpvkB|k&1eQsOri!T z;}^lBNM_o5WwB}gw!u`}BC9CQJ6n@B?)w3RAHGK4G~IpsDJ|2*`ItbY*-6((>DjBM z7moPI_Pd$Ht&FwEELKGEfQKQW=hV|~PcEob?c|GD+*iWl=R)^BB?E7BVS?7LifS94f{*IR9I1wla=IK2(=TyO<_?EQ7b1?1 z!;X}ih1>t>s6W;AVfcQ>0RT7+Jv+5zTN1d!p1}hp$tKQ5R*J;~J3mDG#io4y^3J1l zDtiv&f^D)Bne{*Y@yhG*oQ=Va+s!&2M!*Lgm=bTNfFHS0!F~Spi~?kxB(lWoKTlOn z_~rqHeqp%zVB2MG{D~Z4ZSEOB0~y1W z?pw}tdv{dtOJFhN;$))or);>*rmzYtLXZsjUI^Zv9xq%d*?PEScL<-kZaQ?7(?}A* z6z7%DGs?^s!Q}Ol4(u9Ajb-ZisCM9%C3e1jQ?!fcWo)jHfP9mh*2XL+u(uE! zy$-|-H#gR5muZ75RgLkRw2dByBSTt9sw_c#LzK7XSuDR&#wTXM$Vp)Da7g6Q@8FG( zza~aNIy{MsE66>z+I=$1bR;bChmXcqcsYT}v@3w1Gy{Ul$j zD`L4Q3Yi2UKq;+^Buudv4R>>VSF1fceFS@siyPxo*2iu~%BvfkBDj(aZHCDLGxjGR z{U&~U3OcMpCFF2lS zjBp`<-gWmjn2b>_w;Ug&t&c#(@6XSgLip92t_wv$=Umj->h&eYEuy*K!A9Cv3ujR} zE;hqL8q;9nx~EdSeuNmJCkF44$ea0BO=f!vx~bb!~%RS>KlN890DMR$K0E^!Of_c@J$#3Z?r5W<#EF{0&AwYiDUjO zd=x>NnMT#GIM_!G^j@zoC=~73L%jHeM6kC?Gam}FZq1=j1`AcPQM*Nl3D_Lw?}q{dFVU95q7gaq><0*f7RiSe0<$u=AGA@A*iP{6dI%hxhkuD zS$^2uuY|KGLR+NMdc4)GzMyaWAeuCORn`lOK8y#QHYJVU$~J7VhNm>hhx(=y7$n_& zsZ5TkI;qE|g=a!okBl6)HgGz*gr)G>L(|ox_L_y=3ZJP2%<*b}^9^VF+HRNr1GDVR zO+A}4Qj^++^i^c%xMQ?$FRB&+MvY9hbV3gdY&Mx{Q?ErLXZ4+rmdAJt3&=y=nl2+7 zKu7Y>>!y+4+D$RrjFNL_5hq*;S$6k8d=%3D%8PSMw-WvOo*%ikT+rN{KvKS!SvaBx`WF4%@Mh{a)>=eIe{kEPUEArT67`ghd7c$8R* zOz~s%3H=Yj#Jl+Bv-{?la9E;OkHaMz8fAYqo@x1}c3oQeQY;;OS8Pvv^5yHA%&`4n zCusZYiH!vQ>k?~1U!DAIrdF3BS3<>$t)81dThv4}v_$+ moHBuYrI%8TXkmkQW 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

    XG*98|` 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 literal 158812 zcmd42cT^MY_c$0uiXcS+5s{+O5m4zJL_t7$iF6SJ>Ai-kARl}gpeKH_w(8P?b);E?4JGpv2)HdGf$ak=HBPt``k7$dOGT~)HkU?AP}v_ z)5iuN5c$G+p`rj*eU-3m#o4Z-}u5>5v8h^TXeG`7T zyv8{nO2i}#A?L$dL+u8>I(oy8Pe)5OE1tYtlEP=@VXL9?1AhljR7H#efUet)yGgyA z)liDsw&wZZj*e;8C&O8UAq-8mM>ZL=+eHE2sFAT=QzPdBueHhO5Vq$B8V1m!NE`=2 z1T3JP{;AL^jaMZ6G{|f8S+#IhZnJP^=#`V7&2fyFHuP@_ik%xOBQ>KS5Ahsn-$~EP z>+cGeTMP&|9=UHeLKy9G{hO>RvUFc)sUPAsDQXNa=RBa=QY9a@(6Vvf{Bi#!SRs8_ z%p>sG^-VXVRXSPgOX}HuosV*%f=RuCQ)H;gm(N052tVe7tF#>;3{y(iZRr9tH+#V;3bo}YceR%W|) zHc<0zMXM#-PjNen8xNzF1oS7B$TGKO9*0-_kkJ#2_d@x}dqm{E%AXUs;6!#(^4`+B z^2<|wSMwJ~7to`jmzeybd@-$x7g0#5)g=x z-$qQx3RLRjmZDFn)B>A%52n`Xg7xyX`-cNqpK(MC4CJ~@#z#D?(M4E@bg7Aqb>Nwu zxolY($ye-XQrs??SeN?bs=UB)(bX;ox+ke^D}MiJe&d*YJ@EUUH1e`^*cZk7M~`Ab z3Du?Vtn%`kaPMcmsgyH)HQqJe7-F}VXIWmEmL;d4fc)OXTzn!j=VL=wk7d54_dVkl zr;Aw{-jRWFbz664j#^#Sjui zn9HwkTG<*7C(CR`JL@&>v)u63Q_OJBXG{x^3rXQ?bJ-N1->=)=9CjI+dq`w~WSH{}ME2e{iSox7dT~#?s534m;i|j0>sl6~_dVb(X4w&qY-(3yN zC2=`wF+EA_A6g2A(zM0tPsDqjLqSPQ8sS&3AY8%A@>m9x{mnOpwOJ9@L#$mNQ(N4e zc7yyjikM!_FH41$Z@s?7d_zNzt3D@b3lyy+l$d4jXFjO&vs4+hXeZx@p0}3o!VFa? ziLM|X=FQ_ou@3`OugI%azI~opM#Hy!rB~V6kV>N$vJpWSOY^y|iLO#59W=-9G-UBH z+>?%`d zK)RZyC9bRUH5atW&nOfG6Sn#M^Z9ENt^Di=iV^Cz`&}Q!apfh%F_hTXd0q|r7w&_X zva^=N{c>GE1xB~ncz*G;?JLrHT_8Ql6@3w!$Zn^l-Md|2GUYsVyHnMhIhFN|-&wkc%(j{dF3$N|YX}4J)PtYoXqRjkRr@(Yobt9-D%ph?&oP4_+%K`9D0l zxb`L~pTXw3)E~x|tST>_M2Jz}(q8~^_HN!y6p&BMlJB8qXqNmoExfj%#<%sQ|yG`z&wiYg66}FiCw@v zb4}3wUW3kv5K*_KORPAJ@Qw%9PhR<%ewun=tD{g9VIU_gq&9^gi@!=R3op9^R(*hp zu$Ug#%ST9C(5}9HIj=FfCkWZd$i`m2aZTY0wL2$snYq9Y&trrt?r8z0Nqo}9L(LmX zU0Cm=EU&;o@1i^~YW$8nBj;)%kNA4Vts8S3oePgQxg9T2?tEj^dGa8#aN1 ze7Hre7yNANS+bgE_yx}N-cAf(rUS3)!zD_c3`X$>HIHgzTL_U?RR1WJU*O2Kln{Un z-Wj!cTJv6bk1PISshdzqn`Nz^3Wkj2Ld37Z&xF_uZKfxdoWdibqx z!GVI8gXHD=g&7WBZB@#&F$Kl0iSLa(Q%@JgcOAWa{Jjas#skA*X;p6(FLSd6HNdLb zBP>yY`8L=KjjPgWID)psC9N z4QY18fhUV6KhXVjs(>*U0wVn#Lt1^|+$`nEj(j@9j!yOkt zc|)IaFVMZ zren@uce_MbZ)hooQ8o+y=z-9{_C>B4U&~G2&)nAzRLp{ZGbDi;10Tc8IYa56P2Er+ z%lkX@l%mz-a&1fm%RSt41NG0g zp*O+s7u`!d_6y)B(=ElO@Zjp<}@7d{{I+36k z#2?bmcUI((q*DS4iC4+9US*epdL{fxH=LMcW7B(nz{DE)RX(A;&{vJDX6^E6j%iXE zy3?lSG#tKWNV1|xm-F_=&iyV&rO(@I6jPKyUU)$%hT%RMZ3 zHke3k+$3E*%FjTE3+<_jP&LRw6jk-&PD|5{M=Kt9u81b19a?vj?QW`eX0LelqK(k zQ~syI1-i8J-}X!4Addgshl3b8$^LWC0J<3P-ys*3LG=H*R|ZinT=>sD73hNee}`P) z`oEoAdHO>OOGYW=KSM24LG)b0PiA8W-_k2SrQ*C}PkY|;ex#c|=Y^eoYgpDzg#796 z%ct$;8eDa1rNH|ND@!4tSVwG%I6`++az-jm$1r15xBi9TF(wj>(<%^VVGpSh5u~!4 zpfbjkvVjtt-}yW*bKiF#7Y5_gxGgKctQCQ+aCh8XAI<=sN+DHtTaG zm5E`aLBNy&DKm*|d~yz*>>btC-5TXl@Txks^wLPM@E&C(9CSDAzkoQ5rE#8|G6ppspo2Ymqd=AhWHIJ=zRl}f+5wl-xahjOm+z_@?Dc>TF|yF%bo9=#-aCSQ#M17 z;?wWb1r*w@mZz8ycDwQR$H&tKCiZncCN&CJA4}g=+PjF3G*fS zZ+GdGa&2T4Li0=zkOx19>>_LItt??=-^)4HXKOkc?sH@hl_?aB_|uaX$`tNiwwWR= zdU}#jR-Y`#mqX=>lW$wZJI)GPlY&fXc!p0KZDlhis`d(8w32*g8<3{+>MCP{6mG+> zVpicAF317iLEhx6on%i@@G2B$b-c>*wnrX-R+)AGIzvU>z~XmUl{^u?pJW_mI|x;) z@#CMPGV0Bo9scMU(}7fBZxNSxO}%{`q%qj)l_K%LaPzx|p08Mjme>@0N5&m{u<8_I zR-xQDdQxvPEf>;^6AiBJ4dbM8UK_WOWB7=ys63ecc~NaW;EBPRDYN||0N_s{YB)14 ztaMxCliwNaDIztyC`ML1R>?VH>KJur*7BO05)5odI21ImaZ-=7UJLQQDF**prd{ z=j@|$2gTcRHi?S?&r_O~rjtK@GB~lFdTO<5CV4`WS+$-QgVMdSNZe@$7)GG|`QIKE zI*IjDH&{PzE3NPdlGd(>mq^}LiAGZ|g{upm?k5s#0!bajCDitOW1eGbTABfWcGF(S z=0ue&>2yCQ?E9ay5JJXz$+vzl`92U;^WytO?JBrB(Ls3VeG9CLH5e9HZq=%1k6n7E zcGp0Fm{;+G=gu~NKN2we6itU8-`>GzOIvr%?6G9uwiscy_seRa^Jmu0^ zrDf2C39;!s8}xXEgTg)f@@g8Y1)CJkY!p?P>jbsdn1XtHh|&#QH{Qr1cu~)LpsKMP zz`N#^MN51F8--BLTe@H00A@En3;db2y1KE#t37s4Nr~fe-b`VPtnYSZwPhKMm$De&%R%sysPy{L2~NHp2Z5n;p8Am~WqZ1r_138ninazmiu} zdeNQ_W6c1uZcXF(3t#{3a!OErDaTN4fkl|T;C1@o2(4p!)w%VdIL=M~?RKt7_EwpS zzb@EUNu8Esk`a>U5jLvU7&(%FVV;UPEH6)SX?NKt1ZK4XLdfW7o`Ox%<-Ijt2?sPi zBB2oUku)?k#?POZ4(G@@FZaedjyvnYJE&=B#;eSwn3EU-lcl`Ej#Mpd0q|qd#rhfp&kPG6NVEt9cd^TOloLUNr4%;!Jf2CZ}89sEfh5fx35`3yG8b(kC zCdH?xljuS~$~pP%oJ>@ij~8kr7dlHijyyJRbZeM)NIW%+_?((rd=Q-MSsxf(OS~(y z`-8E8FuphqbIl4xHq`b)=N*c+FVnI);<7_pAkLOThi`t@s;V>o@K#F7x6dgj(&X)% zd~7y{l!zivXgN*gvK$KO2!E9wAguy8Oc5pv>F(N3{gtIjF5A%Bi^i9`{l zTTn36itCWbyi=k0JjEDJa+tfEdO;d{zJZCDxG?*DTWlpwn!B|dC%wGT(Y@HpMAIc2 zT4{g~;PClb=*qX(?WZISwUi@riiXCyM1Y;ROHT|KKhSWWR zg%rlhb=7&NB1i6ELn&*sgBRj6+9xSUargcD_6RQi6{%}oUbx;Gp9jAcy3tbgqkCl;iuL?@O#CXUnupk19RR5L2K}ID`+$>NOLuY@q;o(@g8H~yhixX+W*a$W zlV!FpP%Dxjf*jg^U_&XGxB~3L&85q%zTU z2*uH9g#n||ZtE*jR{&u-aj-GEnpZaq&(*mI%^QFE!W(q}6D@u~5Zqmi7ASJ^~2{JEIaEcFc6Mp?QD*#SIh% z$>+Yo9zx1EW@(1 zxb|n-^G)Eq5L`wo#-e!oiO}F#kFMHT`|Vj}>2l>M--0kbR2yj#-+->K&V(10iL_Qi zw?hib6y+3QB=BiIEO1Ykpo$^^J9BGG7mDXCHB4|GVmK{G3_;h)t`^G5_9X97cZ{F- z{yFsBC`#*vvRuFJgqdz|93S}1ymQt(IU3UOt46^Yw0N$`KVOXQO2NjK>pZuDU>c4N z?-K^=WiI>_fsrjfyPRHd0H=kHk+wO7gtPAmTih)Xs4%u2^PKBA%?{#P2#U5YqDGBp7m3*WA$;Q|y}+yqagEo@CTQ zL{TG=P$6wWfUW4iZ+h5M-qj!y@K6s@Ti`yo2Fc2yefZJIGbRMDJtgb~`ejGN83 z?h!)XO%-5F$*5TV7mKKr+4sN36v*!G|CBX#j#%LMA2ij%Kl%fvO7gG6f9yJCzjNZU zBUj>XWKKm@rwOP3Yc!6l12*7K>c&}8%b~|n5=ZkIj9}ep`cTNj3n}f!E*(k#7RYlw|=7b607ti>$p-VY!7H z0H+OG9z|XGwAUi+*jEru zr=imUNg)2ZCE5Kf7X|I?(U62HqaJVxO#u@jC?O(iFWIp zUa*He@iR_nees+8org?u;Qm@a0s*~WLPKHsB2&tpUsu{w?ylVIK0a;MA#mTJRJ$wh^&zqO4f>NbRKOC z@+$M(o)6t6?=gXM0FqL&dMKL6DZ;Ym-Aya?G-+6o;9?otvpUBX7S`R2)tZV7B&%M+ z?>_tF2MSXoh-FVrsa)!^b>px-mCEuJn@!K^OV?oJEB9U>-X*}?1Y+%U{x8tEbf6tGawOkzs8{M9s{kWn7!=yaNZAMQjpw%=(5mQB+_f4<0@B{?rol*J^VbzwO{DV2$4 zk@Ct7E~Q{R*8lsI0z%SVG#CYeETXJ@-!2+)kom9S#-kd<027qWLaDEr#ioIknr|Y| zW;%BG^vgyPl8@E>n9X`q3S8y6#1%DUSm2SFvhrA=WQpd((72QZ`%_GXd((7GN{7g0 zuemb*j{He^vwFV7>4fVT8xr{1N?XO|9H|MZ6&zciakKL<(BI{(YIwspUZw;oV~;L9 z2<6abUuA`x^sUWLJ3Vlo%x+MK2`NM+51D;8e_m2;`n*qx>Y54MZRqEyk>U7ZsWZDq z|AkXl4B|eZS*>E`+EMmO0+;VFaCqRDJGx;Mvxpg~rYv2;nX9h(Tz^X3EQ;)^{-6v=^tZj#y;7OUSgbV~$h$m8)0q|}3SfXqq zsxdX4&1O^YkDChC8|TY`qPc`0fA+}>1V_I$&V^r`BUd5sx`b6jcvMfaCT`ERHUNMPpY9x*xPJ1(e7ZT7@~gprZtfdG zvCc$jRN>4z0Yaa5R+9nwlfa|lI$i&##dniiV<1fwxlB3?cx_FO6%Ipeew}pkQR23S zhqh;mJKhn1-D$0_ub=(`sJIfpBFHGey4@aDV%C(k@n}ha3b+j3tP!5on=H~}{T1j{ zwyU`~e<(82sKvn7Q?{^A5%ALPA zf6ITy^JLo}UQw)_RUSq<1EhGaB4JCceScVPy44@5+4x!ZL4na*n~SR}55zzs8oYXZ z!IU7b{TbQ9ZJTwcurP0S1spoJFf0{SnG*NVRxww@ohJamgyT$RT1i>&YomT*A>j!9 zvmBgi-Vq!ag_m?bp?DqMFr9JlL!yG|M)glW$0v=>Hzk}3d9^eDVjAZsQ0{PH0YA4> zwYZxbV(Mp&Ph}(SSF|K|SAv>)ty5<6pX3x&N8+tLd^Ze+kLf_l#erdU?MUu#rb2AZ zN_jqE3CsA-l_m+OPxpR)x4%HFNoT>@xAr@7$p9Dgz)d^K%p0q3ioebeIz&4H2JUo& za~f`IYWatY3qbw@eZ3z+O)fr-ws|*;Wb^(}UCQo+tM?ALr@CiKx|Rbwg41GG)GmRD z0+e9Wkqd1@LI3C?AdnO9#Q-~UKyX-EFaG1r1%Wz4{udW>zRB2snn9q%xPNu4^GE+5 zdXWF~mj6MW=RY%E`hVy9mSBbnh>sI3{?ED`*Yb?yoYw+F!n%GPlvCwoT++mC{`=r(7>`N# zc&I;9;Q_X>ywCDM!&{98D_HHhD>T%RW&e9+Hymso>X`QVMB~s?A_@~o21+bXO48yM z6U237Uc9`ZAiNUI<-`Q6MMY3Ho(91nqLmPQdpt|DtbN52@|t5#RNl}%bZZ&JK(3qn z;GtE^Vsn)&=*=iL{$et+x&!U6sGp*`*yeYbOczBAim6VY{yv5ceyMr*Ee;b{vbm?# znhpu8u>cIc{x3W2O3!nB__vU%<1Pp`5XcmP?Lf|l_ytOWFdBJy0wjw z1=T4)6d9=~bTxJ1+sTKN(^ z)Z93q>nH6}p#$@BRqT$Yl@hZbeotD+dEosn&57To&IIP=tClOj3_os64hc5)^>|+) zmdS;vv}!bE9N8KOb9t$NYM;i9Zt6bVP{g9W92H}1JYIT)j;9^>(hnJy`2#n+yNVln zRMyE;|003<`*Ar(v0L}o!tR5Bc4LJlLKp(IO(M|80{HL(@L|6YxNh9!4xD+|uN?dG zo*ir-EgO_E!q`#%=`l*}sK`IgtESNnv$lugXCKl8XQY6$!8Az{9f?_0V$M1ra=P#p z`e=$&J@oh6)w@FxDp;c?Y-hgzzoT4#xa&$Wh6OcVEAd7%}gV^j8V*XM=w_JPGAtzVCb zVNGI(L1yFK!8Jj()8N|aR^B=VceZJ!>rO8`YZd2?J~{rb`QnF}DT@%CI7v{_DU0XE zG}%ULH0Ut7wQTTeP`4rb>pC1Aq)`f)v5+AH)Toojrb1l+>JD?xjH+uRX9>`nlyo%y z!z8CB#}j9FD6_5-(%#xI;cj;QHB@ByZ|s`b_|qz%QK6i{C#y8dDZSgeMZ@C> z<5FpjK{}-UKPgF>JeGVeNJ(PDnS;M{yGib!XikM&{eB6rFf9$a6ULNex~m?AGU*JRvs^SdKz)cF8I6o1 zCWPxM5sePlIAxU=yCPzC{b#m?AtxL4PWK=uj(lCOz|9Zyq7$I*naC>0j|3^GIhdZ) z8g8aU=`zu8GDwxdonc5t&TK}BX_#52gM_MN%l_&){wzG5J<<2JI?WYWwO(60V&6$X zOP=-UWNxEyl{xG)_qiX9uiYc*rnt-V#j~2tNXI@LJMW;CWwt(Hv?y73x`Lh06`bG? zdEKXh^4-&bjGrC6M*lOa*u&}zo%l%#8Yu)ujlLmTKNT4+RatIv`W)8Av2~a#GUru$ ze!aQM38jcjIBo3zgO)#gJJb>|&=Yh@nPphcSbWZ*_aQ?+SdDp>5f|LW`;$9LCbQ(! z9Aogm)`o&MIo*p6`nt?X0RsfPefuXI_v8knSTmGv>LRpGlrwAjVAsq)wCC0G`N4Cc zq5LkbR+9Vc-u(h4w=xq{-P$(Pu)SGs2f3l>jlxIoOY%NcW$M0K4c133-9&Kz`p z)Sx=q!uj$+Id%n4qgu%HNYr#=%U8*&jMTd z(3<4v$}ghNkVIO!VTn%5TBepnpqG+F7HY7WrA%9r-;d|HUyAeoaW_jIBnyA*_%9;W zz2gsO$5ES^0%UX(WG3l%uTzNY^uNS6Wb1~rBCW9OcKRcR0lyr6 zL&*#pwnsB7zqaOd=v^5kkpqZxnDe@hE8L~EUSm3R3h-?;ivh@q`3h!nF!J$ApjH4_ z`tCpIYH-9*s!jo@I?)=|6+Add%g%dj#&=KuAk$H-TvLs5C#CsDSHW5h-~>Emp3@Js z`&9pG;rbBVyQ3JHSIt><`sw_7>_3c5jW9oWdO+Ew-+c>{z5FXTVaC47r3cU?U!1A3 zwY$SGvG5}Y079M~E3ShqS3(lq+kd?p4xPtjZEytS;n`9i{Z{-uGdLp+gD%7ITx68n} zFQFbrG8>=Xy&KXlr%tOQe|yKZMY@2!X#REA8}CDdx-@Z{@6FS|R@`Hx{tXfhew8yT zH$$xD^n+$d7nDB_y=s!b*6iBmkf|{LELke&i$fkU{=e4KH`w-@k9K>%`c$TIqd7kER?4%lr{DyuRvW zVwHRp0>Cvs$wBa03gezn1L7aO4aaR~)0_5~(|sNd5{_n>xK=%hd}RYi8kl{uG;R+g zkP~JdAafv4WDJO-rjyX&Fs8>0wsSY`KMxN4$7#xN?%Ds(aWTz@S1JZ;S&^ol4p=%*$^Z2O+vS&`-2iEvb~INMG!;1oe7sSh+9?1zaAcHv-QO~6 zcj?Y(&?xqN413RMvWf6xo!f_kYoXd+GXf7&+%Az7FtQ#NCML5N#B(P8Wa;? zi98C-bOOv0zcZ?^8$>!04i|ZCiKwWk;i@lr^?zp&N+`s#EA+S5*??$6-m0!1yA;w!CW+` z==06u+X2ko|ETyd)p>uz6yCrM2|4yXZKyg9QzK>}BVu#OxOIKw*~VOVm%Yr4pO0?*V?WKT>iURB4m{xVamhaw zyJ?g@dfouk7+#r|{wmfiP}dl_=KeV~VB=j^F{CoS{s)_apb00Xab^Q|M%mTq9kn%w zeH_Ie@ff(=WZi9_XIZE;wE5SUycjKYqiZ$&y0BR(;Fx4y^XaB{zb|Z7|NfgWh;=3X z!s%Ahl$Gc1y;ZfZTgbp->8!?C$=4CM$MENYNinurOXyNDagO-Y0U0)3R3r z;*x*e7V-pU4gEG^-0E~njh$OI%fx|u&wjd1HrN23J8ET^hZW?R^lxJ1yY(=^@JeK*}s zf47&K`-=sBS30OWhPXCn*SZYLTK?<8MzsZc1IaB4uNSyRE5M=}1}Z8lz>5LIroVY} z5%^QXs{Kxuz8HnzrHfBpS_xj?nE zC*%&v-6cYj$~?*?*IZno5%G$=Tjrr3ndKE;lSH`69>5m&!(;; zjI2U9B?0o({X3}~BZP(|I6LkkUUQiQ^le$d3=Qr@a!#Nnj~83R!kEq-5OFufOFd9( zL$`Z+ZW>rrR#Z1VT<+k!B=A0vtn9>*wA}Wsl>muN6WKit57-^yvHJGiL%(s`9=Ofr zY!S6;`61NW3dfJ0^~sR%Vb5KLrmq9*SoAe zzLW2D`;*T2uiTXWIhY~W2Sm;&jggXY_|iI&`Dt(z2~rus>mP}XFGpZ7# z5`{=HugYVv1 z2Wtg=XPh>Go8m5sD_W^!M#*oy!#Pdk!_X6hzjeEB_iDlHC)NyxXEVys)X#-&3_Z|e zCyf}*GbZyx2c0vGxS917@(1o*{Gp|8oBJMiHpBNlpTL-C!lm5jD%Xax`c!Q+%xYdl ztPSRP59R_%YHFdAXhd0M<+H%Rz@(SnpO{WuWPP{nOxoaG`((gIPHZ{zb3r!p3@X0O z4J?0mh2y1F4zV0BDm7;pN;ohSz^^LJK^^M)T#|;{Dh}^df*y7k$5ouK%ewQl$!`KH z!`F!#QAcIHPbrlLc8U+GdR?moC;T_5nN(YBAS z;(`lFk=X9+-ei(g@3q=bjY_7=3o{ySU-E`_$)J?V&IAnF^mG4=OddX?ndi}XML92O z{9>_{o9Nm(zl7RQz{ciF8oHiG%$vGU%z!ICWF!6`S3J7&2c`4G(=1ruyh)W+j^B`R z1-N2`#R1)4i>)}Kq`Bvlq3|YMiXjqB(G`i^h<*9)f1hNsC6svb&m?y~9(LO+1;b2R z4f}L3kv6t)!KW(Uf;L}HT;P$hYLXREzgRPzb9a{?JV$xO@Ly1PD`M7RfHtq|5z zIWYzybH6-X)y~N)loUPBi3>Ko{8fl@AVcu|y8ieD>Uk__2jW0ybdZaWI^|N}xDHl- z6rSS=z_*{YJGVt*&nWxe!Q}*?NFl6aH{;2|kh&61F~H3*Y99_YZxjh_2X?_ilL}Nd zIQbTT!nS+Oxnqi6=~T~f&Z$T)_fv7(xaKAjs_QI)19pqKlfzAk)hZL&qCjs6r+}l) zi(^JAKrl1ufy4GK_wR4WnTJWaNBcqhYeO1UCXJR*UKx)CNjfsCOeLG-JpGE6 zS^6!Dtr*!Uk#QMM>YE_YxA*?F4on2=T8-#G=lo&!@`!^RY(EaM&`L()9_Nfz>7Rb) zKijZ1xI94g?vUD=zHjAD7-1JQ-+vWHKQDL1@ukk>wApN{Ke*0*NE~?KP>vkf9Om*T ziAU?eIQj5oy~6x%#vgygiQ6g5iT_+kpC&z!etCV6LV1jW_Lkk={{A=+o;VWFKOOBW zyp~E>4;JO;e~&Z=;u4x#TF${oa}8Qxz)s7#dv;2~0YY`F{ne*I{@v^qNnA1}NG0YQ z;#tPk8ACZV@bh7~!Wz$V(M`Hm27U+XG>4S!4_o|TpVsPOyk-No|5XsCSsN(xnn}~v zs7JnDT8HB;w(`=-Dv_O+2Go09Ku!F!%v05sfBgV?6ZbhStt9Mpne(Ji>FlYKUg-pMq*ef*;dZF`_>4%9xL`ej?w}IL-O9zQD6oQx^(jna@+CS^EJ;iAew%Xh9JeX$tt~zyGg^ z;0<4aA20ts!d)K!f64Ry?=1hrN#v!eU$>v|X2IUB)R3GdabZsX)&4!6ohOkm@x-?0 zch}ayk}q3is_5hI)CKG=bwa3}pSZhdz=Xnd~M|goC+RE-cD?IzQ_mEtm61|T( zc7%Po883Tm@4gF8r@?iU(ts`Qdj=W^m!lbZ_Z!#F;{}0u@8mFs{^ezB)Myk zSwx{<~#q6qg z8$C&LQ9$1-hAdC3bV~Vh+tqis&5nK$(IX=2meZ@Rw?Ahq<47|CGQIP?U3}Zfep=Nx zlOOlHdLVdC$OUe+#R8)LvsPsfoA69W|)jxLRIA z7hr@OgkTMm)d(s6BZ{jz^`gIBk5R8jUc>F@AlCUPFXQLHXFIP6;mcyCplxJ?&;DEs z#4ryw?ZMEYU>-SK*m?f_`C(TL;a$t5tUi_+BE773Gl&mFZ+MAL-ISV5w>?|6rXI)2 zk@2i%LP)mOBNE@3>mp*ELS(_s)>WUxe+OY^pcAj>OGY9Lw~)i!c-O45?BuK;^nOkC zZ~V4V4fXbhZXk%YS)BlQM3GjWpbQ!pQ{M_#*XjCB=ihO0E!14gnd$c#xcUI2NL!g~ zNtj2^u_?MptFPSsaeCpg&4};ekQlyRdW(PnF87nGEAqzhJXsB28PpOo6z_tR{iZDg zmcEBe`w~0E^jc|j>&Nu{Y$Ov42h=`(Jn(Pd15*aAqUK_wv5+%G$;7uRz-3~9=oEJj z0?=W2TtVi1s#2m#DgRZ>!=)KNhu#Y~Qp73YFMYG_JzM8+A1byO3TaK9Gqe94fuY;yLt*#wiPo?_^8$+@A}n^ zZFBG!{qa1<Nx>FUa|c4R zp%8!1mK0S%M6U!)b+J^{9&9Q3vhes=H1sxBLv)Yf>?x<#A(MbQ#6p{HzFT(T)5n6S z#j@NxtFIF(el0=(;z>ep@Y@8GuSY6PFMs0+PUB{!NwevGmyw`!HaV6hh4`lgE?wT= z?c>Y>I#|sQIbEklG^<=%j=Z7!KNxqXP}z`gX)5b^?i4v;9U5(}74~_GA(NyO5tTu? zoPj15tNUyn#EFlPMe>S}OU6>8qSb>%6N&JfaSzoBK9)(WK-Zq*qm6~iwSFtK$QA&R z;tU{@#AtH+9WC1+kdT{%?lH-6fj3E){7UAd{D#R#+n@CGG~avBJEH`FrF3lPDWHH# z^ZMVBo)lK??B}ShNl!nn5a0~UkgoMxLHubLh?AOlC^BTf^8Tv*P^N^MZoj5dkiq%w zd6SO35>h0{K&|eT>)eKg6K#eq`atGjzf>ph7cag=xOgH_M&r=L`RA=<$ZTr26OTDx zzf5Fp+>hhPX3Sm7wP$6ocuA0)BOD(I!d|!9U?Jw9SydR6DOQv^wP&_%(~wlfxO%H= zQf(=?YX)}}(qHk4cb#Xeu1(fnOQkv^Ic?<(QSl1Kw8CK`G$pG){G}x?3rBsl*!?a` zoioG;Gf_3V9ZKZZaHgc6X!2YZw_W>KpI~%_Q*y?_=g$+TwbCpSl-?n*+0GVA%! zwag0WulFIjVs`PnYEdMy{{$QNl@^5)H(qYySJ7jbfO@|NwEO&_46V%+*= zP8^$LFK4n#j*ElyoTPS!d{6c~9A5k^_oXjNWqim-WOy}VibpN!goULKT4Goc=II&L zQu?!q6-Y}Ww8?EhXL^bO&fLSkp-m;ZB6uLdi)Pg7V0zeHs6lU9sIHw)q2Rg!>e%(L ztDYq%Ahh~HL0pOUNM@+>9a7%KRVdwoQ_cw3m+tj>nkFF zAkL*@`uGu9?yG6N4&?8)zuR3ZJ%0|D^V`IiaO-4>a{`uNw=n4ib;p}!?qPk0K8Hb_ z)##-2+mdlShcCZ)m#n0VU|z0EbIL3zx0%duH)LBMZ{u(F#um`sGT&}+t<^O=Yj+El zvvDQ7S4c^Lgd{+V1OkD1+FI=G+R6ImYIH5pt40u>)0wtgqeWKndvsf)KZ7Wj8csN@ z2aZ#)q0nFQ^Yvs$ZkDa(9yk{bgZAV7h8Ar$V&xO9(-Wxyt)&r?rmR+)YjI$*PXgnewm=Rr&^^r#FrEE z*K(+pxakG2(6xjXdj@hK6!$Af|A`R@@bmu$eo^7ME4H@wpckHV;~Jk~Nq#<;pCw{XRa;jT7|@V%ICj8Wtf=l9U~;BdH7jO ze|(6ddZ<^8KlnTfstuPIDSmtC@z}n8H`EJhIbGvvJ682KYh5;opz~TtDOfj}vkNQt zrK%&a+Ey)?w$SVMZDUEgfXNBZ6)7v!_1c}&-!xIhz4VJH*knokUHGr}#Jql$Xrn3V z1sn4|+W7!iW*WpkU12kc{@spigD$(2-On@Ky?oW_3#TKm2F`hi{dt{Q1*-nfh?K13 z=8nzDF9pUb+Aa4mLe{VxR^EK|Tfgph#$Q)<#b;Xce+$Q5r~h_lN|?z7)TD}-Uk?&h zVpA|ffuZqmqRYYGdS?KuV5N|~Uq@_omtW3pP|05Ld*BkEB(#5H-mTi|#?IIC(%YC- zQ2}jk=_eSL@o0dpy?r$sx_pMlk?A!-^)l{kr{j}J2c2Z}Pm_Qg5VJ);Uz1lrkRD@^ zJvwRL8w4H7DuG2sMU1(dKQBeD4FQc`mDbB>-sJkro-!!TDo+A(wD;q}S0B|yS~e*( zpa1NWBP(suXOKVUZFaScb$bZI+}6ft&5(hlpg&_i9Bf5^b`}@+@Bb^^*GclLuTb8` zFa@bH7H#eITK!Bpp1w)xzlryrH)!n-end zJRt>Z?7f@+gRD;LW0mp|K$y8hK~wKpzdzZ?mbBkZ>d8%=+@i1%4D-!jhj!^mD(eEk z??Q$Znzgq4-c!Hr|D(y*ETYvXg1?V_9cCHs@5M-}*F(}p}8b-+9Ti~P{D zCO1>2FJ8qv4z~OCN@Y9U^JN7sZ00H+3=(zZbr%@^H|pLyu8HmI8$~&a9UCH2g3?qJ zRGRdI1w<(#O}a>v-diX^5m0GL@2K?NLrh}`=diC=^!-rETYh6H*22^`tsZbaZU!$j}_dOVEoNwg`*s3H%P}{ z{G&3nLG>W>Ezbc7tF19E22htU@dh(dRXLM16;TsfK5u-}_z4fXzq^H~p#(!Dg8Z6# z8lkpx0wQ_w5o4}f{k}=qb88CgPV#BC#>M`#a=G9@_3aR{0F2GciFWG z@C3Id(foN%=l@I(?m6^7krPZi99aHuMs%gK{h$rjL|OmMSmsPjzxaDsFtZ@%NUwC5zR(rdY~d=J=J*N%jWN2FJKikk!1 z-l85PM)+~Pl+N#))S~1J<;B`rlM1yM`9p#Zt(g}p6Y&wv(CA8&G=y!Xh_6^5hkuF~ zUApxO+*W0zL%xfF&hHmD`;T7lc^MHf{sUvLGw7z3s>5`Cn+6iUP8sA%NA!H=UL$Ou z^eN|T( z|6PIz9o?8f!LIjuWktDsH5>}W_M~U=eWg;qedi*N;dN>A4yor{p4&>A_Hc;0I=iK) zKv({Xb(YzqZky>weSvs%LwVJAx9djEw+pjv!REJCnCda-1%UaBI5W)<6YaIJCJ-L9 zVbZx*e2vae$PPJ2)gia^xz*b=hn&sfW2_%eE=HHRN<_H{p`fmO`S|lIl7b-|^a*00 z3%_v5Us1er_w{@Ekjq!8P*-kW1Z=7(=o8rd)?w`Bie*c0Tc$LWRlgv2SE6@0@`wxw zq-MijzIw@S%W%yKLgj?SWuz&T!5QU~Tn={0+3|9{7uhlOE?<8*Sgnrz`(SA@r;PAs zDyT;am3>5fMMK|{!1Qew=!Sk9+v*d`Bc%Qwf{d6T-vGO_PNQIFYz85?tXtRkcx|sz z(z()!CdMgy9OGdyGyH{LXj^!A^-Y4s8nG`d)3bF@15w28&e9hLo}%Bp0B^yR?`xcq zyOu}iknQMsm+->g*OPH2=HR7;;I#!%3W4tH*~2KcqGfs9lru^-e&Br zMkmdC4cBO{fTZCXP3vwQgmz*IW}|tdM(u?4Li=S2n>bpa=)2uiDC8`&>q^Q1$^r!S zGrwxSrCnYom{BRSMhTo|7wvNEWXapkKdH-kf}1OQP8c#d zp$GIPx>lwfaR#q5!WqnC<1*wMr1>IS%~T9;3yBwnZP}~#M1r_yg_4A;dVL7n z-Pz(bEmxz_3jMf;FDE`i9@=1Sf~F^qRvHDMvK`@>9A zo^`QJ$dnOja(|UtGt@Z@{A}m)=xw=@>JyTKS}qFxMb<*&rLK7~$jZql z12I^*gnH*C6x698^%0}23)1~5<;KF`fNCT~#^v{FPy|e0xe*{Oe%0~7qI@0QR}VTK zD9$Bk1JqFl-7D*oX;)V6wva>6!`xuuAavi4ezb=JdpY+ zP}bBME}AK9J+Zz0CqR31m2?g{vbCY|g*%kZH^(((5 zkuTBBs+2K^*d@Si8>HW!GBH8Jr^Ks9y9(dTNUdlava$2DpP>pqq(po?_U($^7|&5HW_O&%6#RfG{Mulr7jem`=SuEWR*NXoH)!Y}zXUq( zA3OXIR_Iosy@x{~lSDLD+&u>T6u1>J!uOyA@S%wjZpBn6aR=VbI5T*<+jdwyp`701 z2K>CQonhG03qkFOT@d(5OW~7w!zcV^+O**7ylK4i35JLJTiTe1o#)^_(kQ+g(JK zd~?!=E*<&fxkq;QNiCj5Kcy37KQTjIfiGuXo6!CnqNq_{Bb;VLS&kh+?AeTzwp66( zulz~=GOcu6lO0IofqmgVEp3M|G`vP$n&E zDpJ5eSRH*_)H6p-A*mG(<|WWC3iY+tFoJa`Wev(E4GTp9F&K{{cpM&QF_3 z__O?!{|}h^{}`H_?%zQ6|L1Y=Pa^qxJ+_sGL`viH%1Wv+`&WJ{iQN!^~JAr{*U@ zubYqYSI|s3Dkb%#l&AS(-?y4Ki;q>hTO%zFc9+s*d=AptkB;RBZ0ZZ|UK4Uze9lkA zv=lj}7GUFTNuK)*y(F?nzBrGs;p|(n1-**gg}Fu)7sIQjnPrX>7GH1Q~8Qxaxg+ z-&Nn!S76gWw|U|m`~tRJ=vhcVE$R`3_IUU#M6p^dv7&VN2$oTpIZ3vU8y!{(X*ayQ zxQwdmt>_zMqOb*?Vb`5mn~yb;SxzF6*IO%-FpHj_#Ps@6=%WV`!G`}-qV z6)&1vy9aK>y4v(gveT})+GjVQ2E4Y2yvUt++LmI_1K)!74ev{^BqPaXzjh{3tZkFu z&e6Cqc8P40pfg*ESWftMvpF0FmpJWa8yutvw=g2~^1iK)4_ zu)V9f7MR_yCO!n=d_y;X<@wgM!>R1A(|~SDczAa=X^LD>Xs?M(A;-13XuJC?>!mJN zqshruK?mwTVcyutV4rwRiANb_ozhgo%R;Aa0d^~4$w^&DTrZMbFpgi#n~$hg?#VoUmv0|gwzXSDrP$>IO2

    ~B31fP?_8Moc2 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 Ah5!Hn diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index f89176d1d220dc45deecbd8b4e1f374bdaed6639..8e578cf28ef4e3472dfb0b007bc0ff6c88d4f6f6 100644 GIT binary patch delta 47849 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
  • @5cEp@W2V3Y85GV4|TqVx;N_!1&B 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

    tkGXNJjd7Upu_ZSm7By}ZHga4e3i{9A|C^zgCZ zAq#n2I}8pD%rF$?#;uw2=ZIkw+AXt~i%yYI(t?7UTsqr$l5sK6el+(Z@EI`N;B;dK5|SnCtr0;><<2*3+R0B4U+q>g|YL}!M{ zHy!nX2Xy!qmp4MLuBE`l51(c}f3EV+%35?#4_-L7TKe{`X@duc!;m52ch+lZ_;52$57FnmhKneWy>$7eAL$%|R{7EJxfBI?6Hx^a5 z{Hgvw_+a-`D}MFYKjEuXho-JumkrN9k21gq5WoFtnSs8fqy(6|GgP+0a+aTO3{A=) zIx|c@2-jfmyM*6t(L4|Byt|f_&)TlXeZpci^TAx@pUPs!;F6LOVg7e<@Wc~Y(5h7( z?rBf=4;?xT`^;@%Ow*>Y^TGwrJ{fIBBIgPGE?$S>^UndMPj3NlzkL|`^nq%}f9IXM zAU@vO*;P0HR{1N3pSSZc5dYJs*G3sAQ~#}6-Nm&(q9H%OV*4vM2S5hWX#{|;0k^im zVdJdIa5~=}F*645jh|xfY~B?32GN;ea!SvBT3YN0r~dKfu-6XJPc#2)wR7d_Mow`4nK=+OdQC#Auh5 zC;8{&ll+yyC*`O5XZ%;U{HgvKepaJY(fTjf0oWR%{Sy#g%QBo!4WI9X2GN;ea!Mnt ze11NK!%p+h_#)ouH+k|MIAN8Fs~iDZ|9BWjJO)VJ`m0?5B=~d-epKJ~9G*{S6|5Sp zhoAd@4Y^Hlt2S#iPY7_>BLpTLD_FISfBO^fgSK+C&lj)7=ikym?ov6+iQ{ zzc~3*{WJcl{;N~|gh%p!{I@Kw{@;4*a0PrV8R#R|B(?}n$KO(5ntilcF09mWIvKfR z6M$72L}!M{?}8Q1~hv+Kk8e5;LeW~bZ}_%Fuf!=62{Fe&j@EB>jnYQ<;#fAy7h>GzZ= z0N)neS#A6i{^ouG(BaZCh{VaSS|Q;uxS*X!@xNL34kRShhBa%lap)h3^`8nIucvbI zpE6|-@~`tKKEM4@{hM$b^qOI1@I{k@aIk+u1^J7;0+h2^EVQA_e`->A%chO?sHzO2 zGsEOG@kMF*M{aE%n{1savX|z$z?N|p4HEFt_%@pz<)87xcq7H0HtjBm!qaTdwrU6a zdOpET2vLW}Y)13>_XNIH>jTNjc;JXa_>BK2pQOW6>Y_YOL3Q#^_}eWZu)lswfIWA^ z14|9nh9CBLD!>9H)efmkR{gM2s{fWuHTnFH+!SWq6yJK^# zaf=y5XNJj1S?CJ@`Q!%7{}jeM>A3T7j zX|>~1{lEHZJ&u3EukQMP>@nKqd8_@2$=^N)@G+i`Muy3qHCX;cL|1MufYt(hdb}8V z>TtcbCIa{d(V1cL6DLkUpSV2h1|ob9CKnsw4_g(S3viYH-nuRvAG8qYlVc?~&ya!d z{}FKWW+6QHTsSIwI)sEoz+>iAIEJ$B7n6r^H0NTSckv`X&CNdhY&hbpsvZB?XK7Vr zA#Q`dj5Jg)|4%<1fv=^?%YVa$Y@7V6mw$fyTfhEhy}>t#&J2^k*)^I=$6p8}QDn76Gya_C->S%@)T3Jm;!_Tvb|G@$5lQ;TuEiEuqCYO5zj$ga6n5Kg<71?>wkz{Z}S` zdk4VwNYgv7m=du2RcR!30ztU9nKqqyTfA%Y4Wio(ljBpLl%M`?7svQ>m4D)g%Hn3d zL0kKU$vxgGGvZMxexYfFHw&VyZ#}rVg?swn;@(sE0U?n$hz2F`Yxq~T{wtHenr-a4 z)fDmLzl(;`t1?W^-M>wg-@W`(hi3gz2M|~*D&2&};Mvay4YRWjz$$N*ePfGzX>M(;W-@V){A=(@zBTf%y8YQl0A!(%PQE2a2Fv%J%`EtG+n465jJOXRI8bzR z4V6O%(SQG8kMY;*MTWiW7jTWAovuswnWNo+R8Dnl2%>Wb>Blw%u@QhL_`h!PLjLz6 z|Ha7vLgXLk2S$&vTSg`RYw)ecC~M^Je*JT#{c*bisS(nXkW~U5T@eRh2=8 zF~~rMl1^#z|1B&bvR7<^?E&*t-9s_gvLks=E2EMAi3(~ zp992yO3A+l-ztIISN>BixQEJpPD}}{y#RhXN@|`2$4(r@BNXvOON{|E{FDX@=*A4TksLu4uiJRpJaZ7;nZ+`STaegYd~JC}?RdD~eZE z(2;1!#r_tpa?*;?66S!(WjPpf(ozSYq$B*yzpqu$DNoTPCVwrx{3>aroH`cz#YDz} zZwT3SGN29UQphhVfUK-ct^a+6fITf z{Qo8Ri=iWjy#yJlnH&zKBW&52lu^t% zNz1C`s~qE13{xylCLIt!f|HQ1Sow0|9H6B~_lL{ZshslVq?MpWP7(hXf)n3WXc)7XhGGgYUh)78%16mil$* zyO6ABE?=?&V#&@FhW$JCpKpvzNb$R`R|*uXAlyF!UvcPlMT_O3l`Y%B1!A~_&3AI? za0ezIpC5LF7H9e7<2VwQqJ`ykM7AugtG<{`cct)^mcM;Zuu?|K7cE-M*%*&$)APNM z`~q!UR3ZfDm8ig=1~0P@H-Era#GN~L;!(SsD|7;_&PI5(Iv?Tn#<=mE(&8>mRAT&D zym61C8g#`fRfG5zrpPjjx_+nR_i?rm7N;x$S8;`nQ7#?M@G8WVx^{#XdIC8jUnvYn z`~_)5#)-T~0sT^f%2C$@bjBkihxK~7$AVNPLjVMdW2 zN>!jWmv1PP_ROg>G&RU6FkRD=lAH9yw3H|9^d+C{D;fIiE9v^IYiY%rxaP~LvON(%CHG)%@pwS6c|4TT)4JoiW6^Q|2K z*=n|c#zON0b|dvP`XhVc7BW6xY|Beg?DazqCgl@z{>$f41H*TLA+l)k@%GKoXXRAM zs~DzOoLo9eif%?q$ycm=IdP8A!d`D!oysX+PFf)?)Mj{1K~7QsU!_%A{`L_7PpWP* zQjaAXHN~j-CGy)sIqQ)jg3(@5l5PG#FFE7+Lpw?AN ztHzNG>(J6~q+2^VA&3Llj?m$5OewOYXmJOhQka#+6FoKV)`QcPcIJ#6nf%2%0Ioc; zQ|%WJmS)J$kETY#j`E?5?8z+#O!v98n1>Xe{cLGz?VzM{7E`J~M`>|4u8^L}=#VR4 zVcBx8E6~DqZuff<^ns-hj)^Li+tG`^DZx6c8vlRU6d)W$|hcEWx5 z@@Dt>Jry12Lyj%2Wa(L2YTQi0(2puADmw0miP(LX-Wg2c+HLk3M=mW$V-C{cFt0*f z#sl-^(t-G#fi@-+G5J=7$*_gKBeYN+cVY@@VAsFQ8DfDs0Q26P$E|#%PQZjKOudXg zz}k_sd@>A2d@-3QjjyEq?HzzSjnuQU^ymJZMU`UR^anu7Pmb;ns%s6?e_MxhE5a5M zreg`D8j4W)DScJ6urm3+TwH!$3d^Ab65CCqJg#C=8Dg$VT3XhtkWEUy6%xvfcz40O zIK^Up`jhgTaLG8>UJ5;hDMq50Oq9mw)9EQ%#N=-`5aJW5CK*r^$jy|NM24MDc%`J%D?Zs z@9bGS_UOTN0QLwBxEqsSHa{#z%buSvg1dO-V^tOw($VD6XE_;Emd8`~h?Z-fDqK)5 zSx_ZMKC>iCok5MO9tlXvUu+W4B_r{Cc1Za%i;BRAJw5&SodG``hTVoKDA#@|MGKBR zu3;w-Ml{%bdmc{&gmhE~rW7BQ)Q40Sm*Q#HDBlUM`S)tV?w5d2-gIp@5a^nb`trnb zW!={uuHdRY9qz(2;%(hO|3GHz*3cc}pNuVnQ~BK77Z~GjH40S5>o)Vemy$7_pN=8y zPyYjh!`Y?Xk36#zjq-K1U$X$?>k2L)6w*Q%mp&lf`%c9AEoj6GOcd;+vfmWHB!%K zg38+U>n?aU`B}KX>q?k8%>+X}_ko44X2P!P=b>@h95|n8T@JkMqQ(9m&TMm&eKLw~ zoEBhD$I6#_N0NHqWqgh5(xn0|+f?x!wkx=dF6PUnWAnH2d1Y8t`Hs+1opS&?vm&`U z0IgPQp9jdw%Bq8r?KP8|} zpj4-mOe+U-^TrLLD@e9{fLnVdoD?nYz!gHup`$AKO7SYhl)A2p7O{M;Vv3bXaUZS! zkh2RPnu$#=poSBhZiBfcc-o*v$u^I+SqWf^91L z@jC&f@s*UneGb5NBlWl5zo{&G*S~P#0;D9HK-;1P%$<(!+HjbQKZf@Q)wO;AHb&$^ zQCVPxQN|M(&(ihQ#lWn6Ct+eo>%zj=2!Gg$@B9FLxdz1lR~zRDdh4FFM-eUbu7BY| zeg#@6zQ~@^8gLd@Pz*RqM^p;{cVP-?VAtLu5h#;e@A`b1jKp|3@?~Yp^=UH@Ek&(! zZ8tm|_8?}rE(iAV$L-qaxH?sEEh;oQ-2;O3}gYJ6pb-d<=_dk(1BW zwA_wB+yX#Hwz2Knu9jJo-*E|u$=}`qFk4=mNxzH-Ua@TJ_^2{eFmz` z^P{LU5OeOp6f2kFs-neJUZrq_@ltfKbnHI6_N33SsD3<&BU-lY#f{rwh8;nTt7ZuZ zw3#FE~!E zBl~FPmmI^grUGy$CM#3uOVQG|Pv1y`N>!u*OT>k18ATU%UlL~Ju4%`ZkZ#e0RYVHu zXw>Rnk7G)aM6}%6sbNj!E)#)*zVGR`3J)Lf3vJuQI#tV~l1;|3T~uP5D=7I5i?$@~hdsWQX6;Lv@(b;R zJBumYFd??fi$}5~Eh#DTcopLEF(@pTj#QK1t#4tr!i4gz3R6e}yJoa(Tp&Kur}|-O z-G#}@6Z(u6v9`k6k+XaXu`0V3qeE$YqE{*Tb9({AIsx;qn`WS;FEIRkfs?1y(@(5I zSz5#HwbQuF*AH=?Q28m6-|;w#Db-M%rNvcTjyc{xIdm9)UOR=dGMVv;;et}U3e!nl zS4m61eigF1idmsRTZ9-bEUl+7S^0clj1Hyo`Sf{;7BRlHeEY;i1XD;hQABanI4iUF zO=-vpJCdr(AXCAUCQWh)(~4a2zoWEJr&JZ46-#$KrYbrJ+fn&Cjw+r~j25L1#ALLH zQ(6=2X$dg-Yngp;GSWegy$(nzJj*CXAe&F1dz4?Q47$(kgtPK0OV83!K1ZFSw745r zNMBWS2xa69uR=_zYbjbhiRlO}QfdAx@k+{Ht+bJJs$>!X{rHZ>G2saB^V5oj`RVy# zVOrrmx@JF87~y?k{;IC|`T1dfK88oWJ23fW^TT|67WOnIADhm;u=ji8Z4JG46pXXuMjrOk_#r#_~SKBJ955@ zv^avv@u^2%@xU_8O>a<u=ape5)Jue8hmUc2Tfe%*TKP`2Iht1Y)U1^g2QJ6GXS=!WSfpvPmh^?0B*Ri_CXL(4Zmbc&Xb7IarX zHFg)4UeQrq`Qw>vUf5vBxOV{het0;eHe`E|qDJa9ogyG&nhNq;-2ks(jaz6DGlouO zM?oBLvk-+34(&5PO;FTGeek$&C@U@n z;~%A9(iq)B3uo~{rGnRA8w*A~m2EwRf{vpl$JsDL!+2h!yuq(Hh{GH=Zk)?>$idYb z$pWbt_x?q8+6NCE3{g>$vT1P!^Mzry$0!q638~_L7PxFK~W?1UfKTO z8{!S6Y6BS6r7qJVWsIKemxt@ZAOMdk(ptQ@pCPXd@~#x3Y*Y{v8S4@qa&fcMvN_`z zr2K8$w}qIf7#yHc2jw^|&SHi~M8L#}6JgfOS#W0;e$$W_rcq0yj`H%{ZmDT!lBL3W zH_uVYVd0RU>X{xy7L^*pqoUBaj`~H%?`|T8FgO&%q%dJ?*DPL#FOJF?sfQe#jP$}6 zS@v_4771hMQMxGDxM2hL-U}uaLmB?iifM9>{tz1-3rm+TxkUrfB9{)CxFd(X1R1HB zFciPR(oouhfAln$MT?V|ghP(7e|MpA(bF^Q^LH%~PyEkXpbKRwl~qGZXkDgWEhG>Y zH)^A2J!(5W^+Wsv@!^Mb;LnpC0FdGn2AXCv8gVFXq@Ju}`giO<-x!&Y;tpEK z9O;DrO|b7f)tEG(!QpEdO0MzL#j$i-d0 zWCdc!a>~zIo?Kd-#bg}-!*#{i>zU~XS4vSXFWRr;6mkE2v|dsj4mF(GC$}dWM;}IS zAM6BttO}{oa+82;&9b}6c>_m%+>@VhQ2CA20Vr*xKBi62_d@auv~f|1;0{`(jL~Z? zIOS?kgRWSmY7pPT6j^3b*YA}4{-Q;ARsmLut8~c4MXRZ>I0Z)?HWwEg2XbloV#k-T zX~QOXW88RdIH@*kL2JUF1g{J;HZ}%_g04NZ>B&zcfRd6DxbpF|>QNphEI0aO4fc!A zzJN^|KZ5=5dcG65@Ab8+`^T+QjknbqDZdF1N;IQVn(^H9&p!VGHgDc+-&i7t)ygIT z>1)kd?`uA9OnS?TrKRJ#eL*WUQf~#s=7GaRS}PhG8!LwfVOko|kVP1-Je+>xe65+j zyQv`U^d%qs{^sQu6p)LvqSh9P@pPYzr(2zDTB^kK^$W^DuKdzUokoy_1UmLEazQI z-MV${CZHV6f4ih3nV&{E#^Gp;KF?K`<30r^|vWX9OX+c(1%I^^QwNu`;^NSn~fp@p8}^oLy;*LhUMs}Pg>jF%;(K;E@| zHPw~>t8)R?hX75=dG-ZdAXl!l!45!+4@3K;T*dYv$mP-{ju4FI*@LYe4q{S|r&ioZ zy;)u27Z7^2Brh-2-Lx71p-6--HD zs<=U)R%@Jd5+LO#7mcqVQjWgwi`}d2onI`yJ&tJ=3-V-w6mruBicRmd)%unkIE&Ot-!erRa_~GH<|7Yg_h+j{) z^Gaok%2<`oIj!iG0$Xp=Oq&k{*{Kx#r@yPmrLfN#!qW&CmQ4`}pQC~3Ajj@ILyIGr zOfk@pB0ThKBQ2R2beayixJ5-p$C=G^qJi=33@w$(m(MH1WLSjjit|6X)k05yeXIV; zjiX&*z?Rq5b}okmemkMLDH`!Q)6V5!Qd&MPKQEhVSIkJge`337e1a%E|MzS(9#B4( zY+aGHi}JDJS3-rLR8%Hyg3zD)a~56mM;bQer|5D{j1Ed5wE;#BE?@bnOh%tvTAaa@ z;*02z7EoFQU=`Q;*zqzD1_jLN}pU$%I>zeqF={K=l zheh(cmX+^mQtagu7OOKd(QC1OkGgd~s=Ynz&VW?=@R zcr>{f|EV5Dbi8m?%tmMMR~$W~0GS9kdW;W>FEY zf})jBR@+oasKL{82yywHkU&swqeTX$fQ0`)F8}NNJ5r0_SSW+zE z<0vhBV~8v-D@({L!+a8DaVpV-=0DlPP>aNv;PDlukB7&H?+X$o%k zM@K&4@fD7{f&b*vAs5&8@L>jJ_noC>$BrHLGWY=@uVR?|^m4;~-Ct7C8i3+m%Wlg~ zz)}7O%>NX|Zax6j(FqJ(uuVljekXA9aw7mLj2Vu1wqQB=7?zZgdUjt< znN_7_WfCUYDkrNbiTC#4`V%QLy(~{vWmk5el_7@9&&SfagBDhn6y`e*#`B?F3ZGf` zriB&+-HxvD&^anr*A%`TX;hjfdk4U`k>zQk7#10+7i;kBzB}n)WfCUYD);^DGf-uo zA4M4S8saHBq;RQW@*PX(4q8}QLSBWKe0*2JY)7CgWq2wtt84SVwH8nD?o8|O9?yna2mu9G7xZ{;%v?{>A;e`Xz}Q9* zwn4|8v`AqxEKxzrh@@k|D0yyfF5roax2>a2ptR#q+-5HB+|{P{y-%o8@8;(`ybH*el7XM;g0 z)Ge1>_EpQum}XT{wvC$@i-OKr^ia+^ag*Ly3&T{NTct3C$cs6a(@Ft-&0EB~s2 zcc|O^O7rtB@i_QFNQQPap*4eb2D_7YlKTgCCZ7^s(W`*|+v$xZw6%7NR5 zq05IS7r%uoVacye9z1TDvF7A)6iWq+$qn7o`;vj-+# zB(>3MT@gZ$(qAOK9qXoh;bO+D2n`5K|7T3(jfMGpXo2*e?ij5Gm=cX7AMBNf85bh# zYFT@ULpRCM0Jof!;`)dO7AFtU(lB9KsC~c%7ud=y{H|iEWo1lY0Tav8@({6`(I+?O zFdosC;j~cikT&;?yPk9PY9W_IE^u}Ab0&l%h{@51uSx0JoLep^oDTDArZ%B#|6aK0 zFwy>Jkwtaw-}txD2SlWCf{3^86^Cf1oL_?FsEkSCB%u=~uOTLkc}f2au`(@Ku5S0j zWe6rc?bOiJ2gc;Q?+8y9i@tvYNfGslU;gZ0J@XiXOXbWe6TRs?KpqR+zq#gW(nK#6 ztN!H~c?<9{$->-pgL5u_M} zvCX$Omv0GOySBPLJVPwJ{`=z5mern3k`HsF+rRPl)&C^I^in*9HHt{9$S=Wiv*lD_ z@{+#Z4CZb1<3xMBTYT9Y7wUFDxMVQnM@c2LKZ7aN5lI~F_VTERSB<89ed0C4AiQ89B_ZuYA21nevV~4nY@gmVk+TCusSYkp6GF?{2T(V?|Sd;E} z>IrkC0y=;XKi%$Io6B_vpq4S0t%|Mv8z)VkEPA?*iZ2cxq+3G&16bBHR-bA?gJD;F1qBSz0QRkqXf{kfMbNdt}>aB%yY%Jo4f~ zmzngSfxGw6;IceB>B>KM&K%Ly*hGTSgC9dV;gT0qDJx^v*VT)=NiKHzFkksqC**V? z+8pO?j&-&w_V#Z)L(-_^lH$q*SBZ9Nl)ej=ONY-ECU2k>G1kAhUXB5DlvRod=@yn# z<1d9^nIBwqm}46=nEjy=5hrb=ILWg9`Cl&(jieL)^pj6`=b^(@$~r)$>mf|wF23>a zL|exf@roG(sQ?pS$oEr1C^1I@YH#iwXA;padQ5UXC7KydiGXvYi6C*&$z%`{lpWQ zb^|STH(b`PTPMuI?<%HRR>nj}Bh@I==&!u;ifdu|OaW{rU?==>C*XIRv!Y>DKYp}1 zruH|4-qC$VepM^!FRUrFO8K(L)DS;Bc%iVVR}6k z@`+1M%t%Gmp}rC$*&jBNkW7tEoBhDvj{ReO;9(orn9#hYzirzM+<21g7hJ|Q z$z_gJ;dj-(YFQZ*-#xd{i+m3FBorOcNQ45lIjf=!sh?tR|KTrsj*jZ3ThJseln=r3 zBt4&^6X54WD@)qlE``bIVA-)y-UIXptX{&PQNZ?+X!O9LSZ8%C6i)cXB_AfR=>2uWRuz}h_%Ki#Tyf#DCh2~F1~*|xJmzFD!}K~f2d0+DFl;Pno3rB2 zwxazfQv2uP!VhFxDW}>F`8dQzS#@n&_W^n>goEjiXA0or-bZP?3zPj3=)?K_;E`IfIBS3ndFycF)Y)OXE_mU>^@x0d zfwEFDWrvr+L?;1k>Ld_!^(=P`$G>50bGqXA(dKmd+S!JB#&LeMJ3DwdhT9e&PanwA z=js%A)eQBy(Ccz3{A!6m{gj~8@H!74mLCUI(HKClQI_E#_j}}G2Q%Jva6+`AdS4=T zgxE?tI9WK~WTlRE*58{vF1SP94D^$8#2 zCeCV{xbjeV?DvO6lp0`n>!t^cQ~qR`IbW|_@?ql2+r!RBuOrjWZ>Axf@^FG%MqMD^ z{z{v?{UuH6kyitBL_>lV7dMzI|L=&ndVG>BKzDuVy8y5CJcMwL4OyHu#}$f8E?g`7 zdgY?S1QzPL`{Um~R55){VcUP&zA7d*b*Hz>4gd-fcQzjrj!*9sg%AjYHga?GRI&Wm zRpJt(Rn(orXoIm=E;^w;Gv;hk2BGI+3Ap_IesOtIwmvv^IOX9K_g#_)`j6D9BAFIt zY;K+=9(kq4F&DEyV6L(<=1@ zH&@yU6Lr1(#gsU2)R$t?^z0m*w!7@JX|mZVmuT&)VnREegX{nxPCpz0jV(o2U&Ml5 z1D<`xOtI}~w)6STMT`0FCc5^e#7Pq;ivBKKb!T+Y?NEbyC*YMwKHNDoPZ$67VfM`x zFuibbf{9}xQjhv5_TaUy-P#Y1_?ge`E*}?Qs`~U{YWTJJPV#d<8Xkf{GvfqJ03xT` zlje{p6c;n*!M&f0&*!}--ahv~xoC+(@W_Q5qPhQN^gVLXq@PnO%fuJedxeo4 zTw0clurICB>6wci%nG{t-}=9kX~hOw2!zVc!3z(kxZ9`qiys=>#oUH(O8BphkBRLr zxMYMEE$pk7l`*dgeI&M*@0A~Z_0z1#-wm@c9*gp^-PPD@n^W^r(^>VS?09a|FtvXL zlk57kj|Mk-X?IGtGHF##6|$SW5+n2Q^t;*Z-t5_R-3;$Qa86xXGn!@Tftid$1NMqE~U zF3kuWBW*CPx>BI*PPy>&w3U6;vNC3+_`2BLN9z$Jk|NoaEb1`;KiVAoi#b-?gu0LG z`sVY`7xX?RBT)@5zj^aFBD!%Y=g1dF>lnk~x;lw5{KEEz=y3W38 zS#x0yhdwqFRrRrXn;Ls3aM()7;IUtcJJ!D?hNBa>YUN8I{HdLQpKVUH zr|zJ=o_p!mmjYt>764-9EF515 z!Ez}~UU!8Y0|?Q4tQWS$#kG;$qP(nbu%ya=zqsVWJlvBI2E7J69Pbr>RbL`veN{v5 zg52`3i(64sD;B2S7w0t0m8E}y*5?DJTQ2kK&ePggEh}SgTKygIgUfG~vp@T3X)**U zOg}PJx>>#j$Z?+kyXX!89|2(ru1Ia;zC>rNi&i6; zLN5q+>x|(G0TX6-Y9LInB#*uSBM>;A?>utgh9gy<^d4!Kldsfo;Za^sTx?)sIx0`Y z^~Ju&aV7<8b2e@V(`QwDck;MsA{2_z^{Bpe&jJ6rXfP)=R+olTq?SP8vtR8Jm0h2&y!d-R ze#BQEd2l!W^2w!m9Af9^$r_%x*u?CNb;~<3{sz$Zde*ikdmD$F%dob8lL;E8e0|ip z=gb@JYr8XHn12Fu()d~zt`T2Mwxu``3EZqF!4sKg!RfL%OTPQQ8DGcfBRP26OwYg?08;zIKjPz zoS&tUStU~K1nhEgg_(Bzv}t7IwVu_y@}+g0)pH8PMTa{g?Z2~A7B}(wv&)dMTi15& zqAMr+6l02g?@A8F(xpqK^K)aATMP8h+|V&F0b)Er0a*O@lZy_Mi^o{(cz*J*gNrM$ zst*ocUbxuB#le%?iXXz1+d9Gh|c;9`Zz zSd5|a;e8zQG5p(3oDY}tV0~~F>A-nzx!A=7HtU2lkCBYs*w-sxwpFpWfB8U;3gAB& z2I)csHD6A1%y{_Ce|~UL^H{1xu zT!_vJ8)}|0Jq1zu5G|Kalf>xz#3aRo!s+;2-L7yth9Gq!?5bcr*23*hkw_lB11ld> zEBa_8?r@@4uAF(s%x1A|>sDGJ%^4SPq*vQ=oux{Oqb3n{@b95TKvm3>$qTmr;e9z8 zIs4Yfvpx#QZQ5XOV1X0M0)`u5dMgv;6GT5mZ~6|9$Et$$tI}H4ACpwB8!mY<>6QNh z`cpBV`T5V~Wp^umm>q<`0>x|r1A5eMh3TyfXDPx?AEEb?Sl{iW55|J^xc}X`V~4nY z@gmVkg7t2>SYpz*ul*#{r(!NyvP7&&cRW^Q2(||nC_!?G=$`U!_z@?jp@y(<(wZFWM%Y-=AP&gs-{!SR6w3T6Q>4(*gw*o`p#`t|E& zC!m6%L)clir#zQnea)=1`YR(P;i>a3Yhl59&I20NZn&&nw@&23tUcq*0W&5#J^mP; z@q;+9Krvdtz|5TJwAl~r?btuII#Pb5bbz!wNkKC~D^?_Fu+E`~`w$WKe1i3C^lDlt zz!jHqO>&u25*nne3=+qr#}ML;+y0&H`%5DgRfnLI*&jBN#)RfI{cYQBz<0lG^aV%| z0t@(Qf#JMz`^8(10gyg+sw5gcaEO!&Dx+0jCb~NtddZO>W)2Z|NY3K9nV+4lz)796 zKe=Mj;5Y!CLlb~y9=+s@6(j~og7pyPNe!fugjX@-J{^`9j>KBe1atQ|GDbj`j4 z?IM?UI0NG<&YeYwKETNmM5lWT90w;S%raev;)aV?Oy(ZM#c6?JaCEDh&AbLA$4ik^ z%D9TEnzk5eOXC?Gt9P)I=5qdDth`W8EC9&KVqyjh=Ua)B(?N;Mfu@8jF6pZ}1`~0| z0{*!5=d6)uE=)cyh>w2@6thD+t-VYK0OyBH2|UJ&aC&ORV(kDM=g$Q3o73i)k9EUE z4(?$bfI5Kg?ye@3iSy5e$;Slo@oj;?`JL6D>;T9y91GK%Ujte#N5ZQSz!BN8DQ=9# zVjrmMBJ*)>xR_T#;JmCbdA~DL1xE)KIPokXI{;%7oWbmJnXibw@wuEAMA%h9bjDQ6g-4wr96uHa zoZR2KGTaE$>nK=_0jPrLsyO*iZ|M*(g{EZ20Qk7;rVr-MQn`?C0moC@Dz(Dtx-kIG z3nJ_~Of|1y3_w?#Bfl+h^x>(4%y$6naDatARW5jlxL>vKx?{Hv>4PCozF^T0w5LK4 zT@@!cXqvE9aKh!q=huk^*Dlm%URId*Uo^!GAN+P`0XVwu&tW#f;UjDTIR?PO^yX)OId7h1e7pqK+=3wb zjI=m;eE$5K>mre?Z234pxNu(iFtZ30`H$erU7QUdGYAOBE2LPtS)5$VpD!R$3ds^k zvZ%o?E>@T-R*()XP|OyP9e^icdYjfWi<86o5!m^8f{veDtS}kNCiUR3zyc?%1q{~5 zes%4tJDrG?uUoe+>owrQg$w0d0o~*rSkEj@j%~o+ym_A!`ayp`7yu^7q^(qIfw%b6te~7BLF)d z51zpwa9nm!HwH30wN>6w#bkYK;CSI;7n92asoWq07AR&57^>4)IXoZZ#8CWfk8_Z( zRo<+R&7AESC7@D)#KH) z`B-RGb0>g(IM#eTZ$k_xH}B^>)$MAU_jAn7&pO$>J%|Gf6q^M?vu4ebgLh7Z>2+fO zJP2slfVH)?^3ZrZE@LSYN;-iEPPoVuZ2n_RbU5t%+qZAe8qBnrRd86bSl|z+m_|Kh^$e0#$Me|!J`1H=-9_W%F@ literal 21335 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 ^X{+tQ5{@P`_Gq`YXQ3oD9&||5raznqBQC8~4r> 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 literal 56843 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 zky℞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 diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index de6de2b2fa2e0068b863bfd667c0abd3e72aed25..7ae9dadfd3b513a59216a35015bbe39c2a0e177b 100644 GIT binary patch literal 63538 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 Date: Tue, 18 Mar 2014 15:44:38 +1100 Subject: [PATCH 047/102] Modified sec backpack sprite --- icons/mob/back.dmi | Bin 54592 -> 54514 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index afe6dad66b1857579dfc0dfcb42ddef3b6995c63..062e1fef6ef3da40eb467bea87741f341db92541 100644 GIT binary patch literal 54514 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

    @zr# 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 From ad8a374e066b479d80d8409d0e15539014eb328c Mon Sep 17 00:00:00 2001 From: ikarrus Date: Mon, 17 Mar 2014 23:55:08 -0600 Subject: [PATCH 048/102] [MAP] Security Lockers Organization -Moved spare HoS uniforms and backpacks into a separate wardrobe closet. This is mostly to reduce the content size of the HoS locker, making it easier to use. -Moved sec backpacks into the security wardrobe closets. -Moved Captain's formals down in the stack order so it doesn't get in the way of the items that are used more often. Alt uniforms should be stored on the bottom of the pile. -Removed stealth change giving the Captain the super-robust dermal armor --- _maps/map_files/tgstation.2.1.2.dmm | 14 ++++++------- .../crates_lockers/closets/secure/security.dm | 21 +------------------ .../crates_lockers/closets/wardrobe.dm | 14 +++++++++++++ 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index 7b429ff256d..9303b6dbc98 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -63,11 +63,11 @@ "abk" = (/obj/structure/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "abl" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "abm" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"abn" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/cartridge/detective,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/carpet,/area/security/hos) +"abn" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/off,/turf/simulated/floor/carpet,/area/security/hos) "abo" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/carpet,/area/security/hos) "abp" = (/obj/machinery/computer/security,/turf/simulated/floor/carpet,/area/security/hos) "abq" = (/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/carpet,/area/security/hos) -"abr" = (/obj/structure/filingcabinet,/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/carpet,/area/security/hos) +"abr" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/stamp/hos,/turf/simulated/floor/carpet,/area/security/hos) "abs" = (/turf/simulated/wall,/area/security/main) "abt" = (/obj/machinery/door/airlock/external{name = "Security External Airlock"; req_access_txt = "1; 13"},/turf/simulated/floor/plating,/area/security/main) "abu" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 3"; pixel_x = -28},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -95,10 +95,10 @@ "abQ" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/security/warden) "abR" = (/turf/simulated/floor,/area/security/warden) "abS" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/warden) -"abT" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/turf/simulated/floor/carpet,/area/security/hos) -"abU" = (/obj/item/weapon/stamp/hos,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/security/hos) +"abT" = (/obj/structure/filingcabinet,/turf/simulated/floor/carpet,/area/security/hos) +"abU" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/closet/wardrobe/hos,/turf/simulated/floor/carpet,/area/security/hos) "abV" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/security/hos) -"abW" = (/obj/structure/table/woodentable,/obj/item/device/radio/off,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/carpet,/area/security/hos) +"abW" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/cartridge/detective,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -31},/turf/simulated/floor/carpet,/area/security/hos) "abX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/main) "abY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/main) "abZ" = (/turf/simulated/wall/r_wall,/area/security/main) @@ -8342,9 +8342,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaiaaDaaqaaEaaqaaqaaqaaqaaqaaqaaFaaqaaGaaHaaiaafaaaaaaaaaaaaaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaIaaqaaqaaJaaqaaqaaqaaKaaqaaFaaqaaLaaMaaiaafaafaafaaaaafaafaafaafaafaafaafaafaafaafaahaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaiaaNaaOaaNaaPaaNaaQaaNaaRaaNaaSaaNaaNaaTaaUaaUaaUaaUaaUaaUaaUaaUaaUaaUaaVaaWaaXaaYaaVaaVaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaibZUaaqabaaaPajhaaqabcaaRbZXaaFabeaaNabfaaUabgabgabhabiabjabkablabmaaUabnaboabpabqabraaVaafaaaaafabsabtabsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaibZUaaqabaaaPajhaaqabcaaRbZXaaFabeaaNabfaaUabgabgabhabiabjabkablabmaaUabWaboabpabqabUaaVaafaaaaafabsabtabsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabuaaqabvabwabxaaqabyaaRabzaaFabyaaNabAaaUabgabBabCabCabCabCabCabCaaUabDabEabFabFabGaaVaafaafaafabsabHabsaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaRabIaaNaaPaaRabJaaPaaRaaRabKaaPaaNaaNaaUabLabMabNabOabPabQabRabSaaUabTabUabVabFabWaaVabXabYabsabZabtabsabsabZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaRabIaaNaaPaaRabJaaPaaRaaRabKaaPaaNaaNaaUabLabMabNabOabPabQabRabSaaUabnabrabVabFabTaaVabXabYabsabZabtabsabsabZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbaccacdaceacfacgachaciacfacjackaclacmaaUacnacoacpacpacqabRabRacraaUacsactacuabFacvaaVacwacxacyabsaczacAacBacBacCaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafacDacEacFacGacHacIacJacKacIacIacLacMacNacOaaUacnacnacPacQacRacSacSacTaaUacUacVacWacXacYaaVacZadaadbadcaddadeadfadgadhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiadiadjaaNadkadladmadnadoadoadoaaNadpadqaaUadradradsadtaduadvaaUadwaaUadxaaVadyaaVadzaaVadAadaadBabsadCadDacBacBadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 92c9a4ee7ea..dd4e9d09664 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -16,6 +16,7 @@ else new /obj/item/weapon/storage/backpack/satchel_cap(src) new /obj/item/clothing/suit/captunic(src) + new /obj/item/clothing/under/captainformal(src) new /obj/item/clothing/head/helmet/cap(src) new /obj/item/clothing/under/rank/captain(src) new /obj/item/clothing/suit/armor/vest/capcarapace(src) @@ -25,8 +26,6 @@ new /obj/item/device/radio/headset/heads/captain(src) new /obj/item/clothing/gloves/captain(src) new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/clothing/under/captainformal(src) - new /obj/item/clothing/head/helmet/HoS/dermal(src) return @@ -73,19 +72,12 @@ New() ..() sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/armor/vest(src) - new /obj/item/clothing/under/rank/head_of_security/jensen(src) new /obj/item/clothing/suit/armor/hos/jensen(src) - new /obj/item/clothing/head/helmet/HoS/dermal(src) new /obj/item/weapon/cartridge/hos(src) new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/weapon/shield/riot(src) - new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/clothing/mask/gas/sechailer/hos(src) new /obj/item/weapon/storage/lockbox/loyalty(src) new /obj/item/weapon/storage/box/flashbangs(src) @@ -93,12 +85,9 @@ new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/gun(src) new /obj/item/weapon/storage/belt/security(src) - new /obj/item/clothing/under/hosformalfem(src) - new /obj/item/clothing/under/hosformalmale(src) return - /obj/structure/closet/secure_closet/warden name = "warden's locker" req_access = list(access_armory) @@ -113,10 +102,6 @@ New() ..() sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/under/rank/warden(src) new /obj/item/clothing/suit/armor/vest/warden(src) @@ -147,10 +132,6 @@ New() ..() sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/head/helmet(src) new /obj/item/device/radio/headset/headset_sec(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index b355ad88802..f95afb54509 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -20,6 +20,10 @@ icon_closed = "red" /obj/structure/closet/wardrobe/red/New() + new /obj/item/weapon/storage/backpack/security(src) + new /obj/item/weapon/storage/backpack/security(src) + new /obj/item/weapon/storage/backpack/satchel_sec(src) + new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/clothing/under/rank/security(src) new /obj/item/clothing/under/rank/security(src) new /obj/item/clothing/under/rank/security(src) @@ -34,6 +38,16 @@ new /obj/item/clothing/head/beret/sec(src) return +/obj/structure/closet/wardrobe/hos + name = "head of security wardrobe" + icon_state = "red" + icon_closed = "red" + +/obj/structure/closet/wardrobe/hos/New() + new /obj/item/clothing/under/hosformalfem(src) + new /obj/item/clothing/under/hosformalmale(src) + new /obj/item/clothing/under/rank/head_of_security/jensen(src) + return /obj/structure/closet/wardrobe/pink name = "pink wardrobe" From d97e7d84aa203de4c6d4109b5882fe3ad24fa145 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 18 Mar 2014 21:22:51 -0600 Subject: [PATCH 049/102] Allows roundstart cyborgs to select their own name But only if the option is enabled in the server config. Credit to Neerti for originally coding this. --- code/__HELPERS/unsorted.dm | 4 ++++ code/controllers/configuration.dm | 4 ++++ code/game/objects/items/robot/robot_upgrades.dm | 1 + code/modules/mob/transform_procs.dm | 4 ++++ config/game_options.txt | 4 ++++ 5 files changed, 17 insertions(+) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c29a796a39a..0300d4f655d 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -330,6 +330,10 @@ Turf and target are seperate in case you want to teleport some distance from a t A.aiPDA.owner = newname A.aiPDA.name = newname + " (" + A.aiPDA.ownjob + ")" + if(cmptext("cyborg",role)) + if(isrobot(src)) + var/mob/living/silicon/robot/A = src + A.custom_name = newname fully_replace_character_name(oldname,newname) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index c2c1cb2dd33..7f5c5588a3d 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -98,6 +98,8 @@ var/revival_cloning = 1 var/revival_brain_life = -1 + var/rename_cyborg = 1 + //Used for modifying movement speed for mobs. //Unversal modifiers var/run_speed = 0 @@ -277,6 +279,8 @@ config.revival_cloning = text2num(value) if("revival_brain_life") config.revival_brain_life = text2num(value) + if("rename_cyborg") + config.rename_cyborg = text2num(value) if("run_delay") config.run_speed = text2num(value) if("walk_delay") diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 8904cbbfc21..7f7aa10d91d 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -53,6 +53,7 @@ if(..()) return 0 R.name = heldname R.real_name = heldname + R.custom_name = heldname //Required or else if the cyborg's module changes, their name is lost. return 1 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6622d549dc4..8475e216345 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -282,6 +282,10 @@ var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) + if (!config.rename_cyborg) + else + O.rename_self("cyborg", 1) + // cyborgs produced by Robotize get an automatic power cell O.cell = new(O) O.cell.maxcharge = 7500 diff --git a/config/game_options.txt b/config/game_options.txt index a01b8ef2450..6e26961d8b4 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -18,6 +18,10 @@ REVIVAL_CLONING 1 # amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) REVIVAL_BRAIN_LIFE -1 +### RENAMING ### + +# Whether cyborgs can rename themselves at roundstart or when built. Has no effect on roboticists renaming cyborgs the normal way. Set to 0 to disable self-renaming. +RENAME_CYBORG 1 ### MOB MOVEMENT ### From 9221473e2cbdea89f8d1762cd1df9f7a64b8d515 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Tue, 18 Mar 2014 21:42:59 -0600 Subject: [PATCH 050/102] Answered Aran's very good question --- code/modules/mob/transform_procs.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 8475e216345..5a06adc4e77 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -282,8 +282,7 @@ var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) - if (!config.rename_cyborg) - else + if (config.rename_cyborg) O.rename_self("cyborg", 1) // cyborgs produced by Robotize get an automatic power cell From e33eeb3eb455032bfe099325c98e84c3924667cd Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Wed, 19 Mar 2014 09:32:56 -0600 Subject: [PATCH 051/102] config defaults to off now Not that it matters in the end this is literally ultra nitpicking --- config/game_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/game_options.txt b/config/game_options.txt index 6e26961d8b4..0c059ce64d0 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -21,7 +21,7 @@ REVIVAL_BRAIN_LIFE -1 ### RENAMING ### # Whether cyborgs can rename themselves at roundstart or when built. Has no effect on roboticists renaming cyborgs the normal way. Set to 0 to disable self-renaming. -RENAME_CYBORG 1 +#RENAME_CYBORG ### MOB MOVEMENT ### From 4a62906560ad62c7e3d24ed1e26b54b44d5509ce Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Wed, 19 Mar 2014 09:34:24 -0600 Subject: [PATCH 052/102] Part II of last commit --- code/controllers/configuration.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 7f5c5588a3d..ea330a5abf4 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -98,7 +98,7 @@ var/revival_cloning = 1 var/revival_brain_life = -1 - var/rename_cyborg = 1 + var/rename_cyborg = 0 //Used for modifying movement speed for mobs. //Unversal modifiers @@ -280,7 +280,7 @@ if("revival_brain_life") config.revival_brain_life = text2num(value) if("rename_cyborg") - config.rename_cyborg = text2num(value) + config.rename_cyborg = 1 if("run_delay") config.run_speed = text2num(value) if("walk_delay") From 2173f8d4033ff713fe401491a4d27f37a0b331a3 Mon Sep 17 00:00:00 2001 From: VistaPOWA Date: Wed, 19 Mar 2014 22:56:06 +0100 Subject: [PATCH 053/102] Adds the Cyborg module into the messages received by the AI It just puts the prefix of the borg into the $job var that is handled internally by NTSL. Also adds a var for the designation of the borg, it's kind of a read-only variable that makes it fun & easy to get a cyborg's current module without istyping. Refactors the cyborg naming code a bit. Removes additional fun (changes not shown in PR overview, 4317483141 counts of fun removed) --- .../game/objects/items/devices/radio/radio.dm | 3 ++- .../modules/mob/living/silicon/robot/robot.dm | 21 +++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index edac441eae1..5bbed0fc93f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -285,7 +285,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use // --- Cyborg --- else if (isrobot(M)) - jobname = "Cyborg" + var/mob/living/silicon/robot/B = M + jobname = "[B.designation] Cyborg" // --- Personal AI (pAI) --- else if (istype(M, /mob/living/silicon/pai)) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 0d517a64c01..ddba78b5a66 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -7,6 +7,7 @@ health = 100 var/sight_mode = 0 var/custom_name = "" + var/designation = "Default" //used for displaying the prefix & getting the current module of cyborg //Hud stuff @@ -71,7 +72,7 @@ robot_modules_background.layer = 19 //Objects that appear on screen are on layer 20, UI should be just below it. ident = rand(1, 999) - updatename("Default") + updatename() updateicon() if(!cell) @@ -127,13 +128,13 @@ /mob/living/silicon/robot/proc/pick_module() if(module) return - var/mod = input("Please, select a module!", "Robot", null, null) in list("Standard", "Engineering", "Medical", "Miner", "Janitor","Service", "Security") + designation = input("Please, select a module!", "Robot", null, null) in list("Standard", "Engineering", "Medical", "Miner", "Janitor","Service", "Security") var/animation_length=0 if(module) return - switch(mod) + updatename() + switch(designation) if("Standard") - updatename(mod) module = new /obj/item/weapon/robot_module/standard(src) hands.icon_state = "standard" icon_state = "robot" @@ -141,7 +142,6 @@ feedback_inc("cyborg_standard",1) if("Service") - updatename(mod) module = new /obj/item/weapon/robot_module/butler(src) hands.icon_state = "service" var/icontype = input("Select an icon!", "Robot", null, null) in list("Waitress", "Bro", "Butler", "Kent", "Rich") @@ -164,7 +164,6 @@ feedback_inc("cyborg_service",1) if("Miner") - updatename(mod) module = new /obj/item/weapon/robot_module/miner(src) hands.icon_state = "miner" icon_state = "minerborg" @@ -173,7 +172,6 @@ feedback_inc("cyborg_miner",1) if("Medical") - updatename(mod) module = new /obj/item/weapon/robot_module/medical(src) hands.icon_state = "medical" icon_state = "mediborg" @@ -183,7 +181,6 @@ feedback_inc("cyborg_medical",1) if("Security") - updatename(mod) module = new /obj/item/weapon/robot_module/security(src) hands.icon_state = "security" icon_state = "secborg" @@ -194,7 +191,6 @@ feedback_inc("cyborg_security",1) if("Engineering") - updatename(mod) module = new /obj/item/weapon/robot_module/engineering(src) hands.icon_state = "engineer" icon_state = "engiborg" @@ -203,7 +199,6 @@ feedback_inc("cyborg_engineering",1) if("Janitor") - updatename(mod) module = new /obj/item/weapon/robot_module/janitor(src) hands.icon_state = "janitor" icon_state = "janiborg" @@ -227,13 +222,13 @@ notransform = 0 icon = 'icons/mob/robots.dmi' -/mob/living/silicon/robot/proc/updatename(var/prefix as text) +/mob/living/silicon/robot/proc/updatename() var/changed_name = "" if(custom_name) changed_name = custom_name else - changed_name = "[(prefix ? "[prefix] " : "")]Cyborg-[num2text(ident)]" + changed_name = "[(designation ? "[designation] " : "")]Cyborg-[num2text(ident)]" real_name = changed_name name = real_name if(camera) @@ -1074,12 +1069,12 @@ scrambledcodes = 1 modtype = "Synd" faction = "syndicate" + designation = "Syndicate" /mob/living/silicon/robot/syndicate/New(loc) ..() cell.maxcharge = 25000 cell.charge = 25000 - updatename("Syndicate") radio = new /obj/item/device/radio/borg/syndicate(src) module = new /obj/item/weapon/robot_module/syndicate(src) laws = new /datum/ai_laws/syndicate_override() From f32f81d5b58e9b70c4d65fdcae87de7a3b30e66a Mon Sep 17 00:00:00 2001 From: Jordie Date: Thu, 20 Mar 2014 15:43:39 +1100 Subject: [PATCH 054/102] Hitsound for rods --- code/game/objects/items/stacks/rods.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 6b06a62a2c2..0d45301069a 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -12,6 +12,7 @@ m_amt = 1875 max_amount = 60 attack_verb = list("hit", "bludgeoned", "whacked") + hitsound = 'sound/weapons/grenadelaunch.ogg' /obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) ..() @@ -66,4 +67,4 @@ return /obj/item/stack/rods/cyborg/ - m_amt = 0 \ No newline at end of file + m_amt = 0 From a97a9563908bb5d99a591ffe6fdf0e68299c66bb Mon Sep 17 00:00:00 2001 From: ChuckTheSheep Date: Thu, 20 Mar 2014 03:23:34 -0400 Subject: [PATCH 055/102] Fix to the glorious Bad Ass Icon display --- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index b03f7ef275b..b5d5a46dfcc 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -333,7 +333,7 @@ text += "(Syndicates used [TC_uses] TC) [purchases]" if(TC_uses==0 && station_was_nuked && !is_operatives_are_dead()) - text += "" + text += "" world << text return 1 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 2ba796e294f..1b8f4ce1185 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -219,7 +219,7 @@ if(uplink_true) text += " (used [TC_uses] TC) [purchases]" if(TC_uses==0 && traitorwin) - text += "" + text += "" text += objectives From 5c483610878af1e6bb9f82db0e37c8d045200cd6 Mon Sep 17 00:00:00 2001 From: VistaPOWA Date: Thu, 20 Mar 2014 19:06:35 +0100 Subject: [PATCH 056/102] now works in binary 011010010110111001110011011101000110000101101100011011000010000001100111011001010110111000110010 --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/mob/living/silicon/say.dm | 9 ++++++--- code/modules/mob/living/silicon/silicon.dm | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ddba78b5a66..e5f66246493 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -7,7 +7,7 @@ health = 100 var/sight_mode = 0 var/custom_name = "" - var/designation = "Default" //used for displaying the prefix & getting the current module of cyborg + designation = "Default" //used for displaying the prefix & getting the current module of cyborg //Hud stuff diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 81a9c45bfd6..3e9b78638ab 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -92,14 +92,17 @@ if (!message) return - + var/desig = "Default Cyborg" //ezmode for taters + if(istype(src, /mob/living/silicon)) + var/mob/living/silicon/S = src + desig = trim_left(S.designation + " " + S.job) var/message_a = say_quote(message) var/rendered = "Robotic Talk, [name] [message_a]" for (var/mob/living/S in living_mob_list) if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it. if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] [message_a]" + var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" S.show_message(renderedAI, 2) else S.show_message(rendered, 2) @@ -107,7 +110,7 @@ else if (S.binarycheck()) if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] [message_a]" + var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" S.show_message(renderedAI, 2) else S.show_message(rendered, 2) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d96e3205c0c..422fe6693dd 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -6,6 +6,7 @@ var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/list/alarms_to_show = list() var/list/alarms_to_clear = list() + var/designation = "" var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) From 5e0d20fff559c19d5a05203247cc225b00bc2c50 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 20 Mar 2014 19:53:58 +0100 Subject: [PATCH 057/102] fixes the glass appearance of some liquid reagents Gives a proper appearance to glasses of watermelon juice,lemon juice, potato juice, holy water and hot coco. --- .../food/drinks/drinkingglass.dm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 0a3acf04f16..b1699475b1e 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -38,14 +38,26 @@ icon_state = "glass_white" name = "Glass of cream" desc = "Ewwww..." - if("chocolate") + if("hot_coco") icon_state = "chocolateglass" name = "Glass of chocolate" desc = "Tasty" - if("lemon") + if("lemonjuice") icon_state = "lemonglass" name = "Glass of lemon" desc = "Sour..." + if("holywater") + icon_state = "glass_clear" + name = "Glass of Holy Water" + desc = "A glass of holy water." + if("potato") + icon_state = "glass_brown" + name = "Glass of Potato juice" + desc = "Bleh..." + if("watermelonjuice") + icon_state = "glass_red" + name = "Glass of Watermelon juice" + desc = "A glass of watermelon juice." if("cola") icon_state = "glass_brown" name = "Glass of Space Cola" From c37f7781d644b4cee2250fcc14ab1899797c2fb1 Mon Sep 17 00:00:00 2001 From: Incoming Date: Thu, 20 Mar 2014 20:19:54 -0400 Subject: [PATCH 058/102] NPCs statues now respect whoever zapped them to life without removing their ability to destroy everyone else. --- .../modules/mob/living/simple_animal/hostile/statue.dm | 10 +++++++--- code/modules/projectiles/projectile/magic.dm | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index b849f04a076..5364845c027 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -50,11 +50,12 @@ status_flags = GODMODE // Cannot push also var/cannot_be_seen = 1 + var/mob/living/creator = null // No movement while seen code. -/mob/living/simple_animal/hostile/statue/New() +/mob/living/simple_animal/hostile/statue/New(var/mob/living/creator) ..() // Give spells mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src) @@ -140,14 +141,17 @@ // Stop attacking clientless mobs /mob/living/simple_animal/hostile/statue/CanAttack(var/atom/the_target) - if(mind && mind.key && !ckey) - return 0 if(isliving(the_target)) var/mob/living/L = the_target if(!L.client && !L.ckey) return 0 return ..() +// Don't attack your creator if there is one + +/mob/living/simple_animal/hostile/statue/ListTargets() + . = ..() + return . - creator // Statue powers diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 0fc097f38e7..cd0de810b2c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -228,7 +228,7 @@ proc/wabbajack(mob/living/M) if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) if(istype(change, /obj/structure/closet/statue)) for(var/mob/living/carbon/human/H in change.contents) - var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc) + var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc, firer) S.name = "statue of [H.name]" S.faction = "\ref[firer]" S.icon = change.icon From cea0b70aa3fc86eccd292cace248e14341b933fe Mon Sep 17 00:00:00 2001 From: Steelpoint Date: Fri, 21 Mar 2014 12:18:47 +0800 Subject: [PATCH 059/102] RDAccess --- code/game/jobs/job/science.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 5618b788db9..080a104a54a 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -12,11 +12,13 @@ access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, - access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom) + access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom, + access_tech_storage) minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, - access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom) + access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom, + access_tech_storage) minimal_player_age = 7 equip(var/mob/living/carbon/human/H) From 000d701347c53a595a3281cfab18023f07d89d39 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 21 Mar 2014 21:13:52 +0000 Subject: [PATCH 060/102] Fixes the missing areas in the gravity generator room. --- _maps/map_files/tgstation.2.1.2.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/tgstation.2.1.2.dmm b/_maps/map_files/tgstation.2.1.2.dmm index e840dc6d631..837f7a74a5f 100644 --- a/_maps/map_files/tgstation.2.1.2.dmm +++ b/_maps/map_files/tgstation.2.1.2.dmm @@ -8521,7 +8521,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafSafSafRafSafSagxafRafRafRafRafSafRafRafSceqaaaaaaaaaaaaaafcbiddUddWddVddYddXdeaddZdeodencfTcaBdepdebcetcetceucevcdtcaBcewcexcaBceycapcezceAceBceAceCcapceDcaBcexceEcaBcdtcaBceCcapceFceGceHceHceIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaabVFaaaaaaaaabXebXebXebXfbXeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicdScdgccDccfcbAcbicaXbXrccscaBcaBcdtcaBcaBceLceMceNcdtceacaBcbKceOceOcePceQceRceScdWceTceUcdYcdYcdNcaBceacdtcaBceVceWcbIceXceYceZcfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaafcfbaafbXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbiddSddfddRcbicbicbicbicbicapcercaBcdtcaBcaBcffcfgcfhcdtcficfjcfkcflcfmcapcfncfocfpceacfqcapcfrcfscfscfjcficdtcftcfucapcfvcfwceHceHcfxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXeaaaaafaaabXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafczcczcczcczcczcaafaafaafaafcapcescaBcdtcaBcaBceKcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbicbicbicbicbiaafaafaafaafcapcescaBcdtcaBcaBceKcdicdicfzcapcfAcfBcfBcfBcapcfCcfDcfEcfFceVcapcfBcfBcfBcfAcapcfzcdicapcapcfGcdicdicctaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXebXebXebXebXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddTaafaafaafaafaaaaaaaafaafcapcfIcfdcdtcfccfKcfLcdicfMcfNcapcfOcfPcfQcfRcfScfTcfUcfVcfWceVcfXcfPcfPcfPcfYcapcfZcgacapcgbcbIcgccfGaagaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcapceJcfecfycfHceJcapcapcapcfzcapcapcdmcgdcgecgfcggcfjcghcfjcgicgjcgecgdcgkcapcapcfzcapcapcdicdicdicdicglaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaafaaaaafaagcapcgmcgncgoaaaaaaaaacgpcgqcgdcgdcgdcgdcgdcgqcgraaaaaaaaacgscgtcgucapaaaaafaafaaaaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 823b12117dd48bcf3190eec12be3ada45a0da910 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Fri, 21 Mar 2014 21:57:57 +0000 Subject: [PATCH 061/102] Gives a gravity generator to MiniStation. Fixes a runtime with /proc/process_ghost_teleport_locs. --- _maps/map_files/MiniStation/MiniStation.dmm | 2683 ++++++++++--------- code/game/area/Space Station 13 areas.dm | 4 +- 2 files changed, 1368 insertions(+), 1319 deletions(-) diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 5c9363a3209..0930ef014d0 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -1559,975 +1559,1024 @@ "aDY" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-N-S-Pass"; icon_state = "N-S-Pass"},/turf/space,/area) "aDZ" = (/turf/simulated/wall,/area/tcommsat/computer) "aEa" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/tcommsat/computer) -"aEb" = (/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/lattice,/turf/space,/area) -"aEc" = (/obj/structure/transit_tube{icon_state = "D-SW"},/obj/structure/lattice,/turf/space,/area) -"aEd" = (/obj/machinery/door/airlock/external{name = "Telecomms Emergency Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEe" = (/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEf" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEg" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/space,/area) -"aEh" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/space,/area) -"aEi" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) -"aEj" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) -"aEk" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) -"aEl" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEq" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/obj/structure/lattice,/turf/space,/area) -"aEr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEs" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/tcommsat/computer) -"aEt" = (/turf/simulated/floor,/area/tcommsat/computer) -"aEu" = (/obj/structure/table,/turf/simulated/floor,/area/tcommsat/computer) -"aEv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEy" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) -"aEz" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/tcommsat/computer) -"aEA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/tcommsat/computer) -"aEB" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/paper/monitorkey,/turf/simulated/floor,/area/tcommsat/computer) -"aEC" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aED" = (/obj/machinery/telecomms/processor/preset_one/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aEE" = (/obj/machinery/telecomms/bus/preset_one/ministation,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aEF" = (/obj/machinery/telecomms/server/presets/common/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aEG" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aEH" = (/obj/machinery/computer/telecomms/server{network = "tcommsat"},/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/tcommsat/computer) -"aEI" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) -"aEJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"aEK" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen/blue,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"aEL" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEM" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aEN" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEP" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aEQ" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aER" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aES" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/tcommsat/computer) -"aET" = (/obj/machinery/door/airlock/glass_command{name = "Control Room"; req_access_txt = "19; 61"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"aEU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aEW" = (/obj/machinery/atmospherics/pipe/tank/air{icon_state = "intact"; dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aEX" = (/obj/structure/transit_tube/station/reverse{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aEY" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aEZ" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Telecoms Server APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFa" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFb" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFc" = (/obj/machinery/door/airlock/glass_engineering{name = "Server Room"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/computer) -"aFd" = (/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) -"aFe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"aFf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"aFg" = (/obj/structure/closet/emcloset,/obj/machinery/camera/autoname{network = list("SS13")},/turf/simulated/floor,/area/tcommsat/computer) -"aFh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFi" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aFk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFm" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) -"aFn" = (/obj/structure/transit_tube{tag = "icon-Block (NORTH)"; icon_state = "Block"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aFo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFq" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall,/area/tcommsat/computer) -"aFs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/tcommsat/computer) -"aFt" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/tcommsat/computer) -"aFu" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/recharge_station,/turf/simulated/floor,/area/tcommsat/computer) -"aFv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFw" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFx" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) -"aFy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/tcommsat/computer) -"aFz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFA" = (/obj/machinery/telecomms/receiver/preset_left/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFB" = (/obj/machinery/telecomms/hub/preset,/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/light/small,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFC" = (/obj/machinery/telecomms/broadcaster/preset_left/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFD" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) -"aFE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/tcommsat/computer) -"aFF" = (/obj/structure/table,/obj/item/device/multitool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) -"aFG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"aFH" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) -"aFI" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"aFJ" = (/turf/space,/area/syndicate_station/southwest) -"aFK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"aFM" = (/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) -"aFN" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/tcommsat/computer) -"aFO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/tcommsat/computer) -"aFP" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"aFQ" = (/turf/space,/area/syndicate_station/southeast) -"aFR" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/tcommsat/computer) -"aFS" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/effect/landmark/start{name = "AI"},/turf/simulated/floor,/area/tcommsat/computer) -"aFT" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor,/area/tcommsat/computer) -"aFU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/computer) -"aFV" = (/turf/space,/area/syndicate_station/south) -"aFW" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area) -"aFX" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area) -"aFY" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area) -"aFZ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area) -"aGa" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area) -"aGb" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area) -"aGc" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area) -"aGd" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area) -"aGe" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area) -"aGf" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area) -"aGg" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area) -"aGh" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area) -"aGi" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area) -"aGj" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area) -"aGk" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area) -"aGl" = (/turf/space/transit/east/shuttlespace_ew13,/area) -"aGm" = (/turf/space/transit/east/shuttlespace_ew14,/area) -"aGn" = (/turf/space/transit/east/shuttlespace_ew15,/area) -"aGo" = (/turf/space/transit/east/shuttlespace_ew1,/area) -"aGp" = (/turf/space/transit/east/shuttlespace_ew2,/area) -"aGq" = (/turf/space/transit/east/shuttlespace_ew3,/area) -"aGr" = (/turf/space/transit/east/shuttlespace_ew4,/area) -"aGs" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area) -"aGt" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area) -"aGu" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area) -"aGv" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area) -"aGw" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area) -"aGx" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area) -"aGy" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area) -"aGz" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area) -"aGA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area) -"aGB" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area) -"aGC" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area) -"aGD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area) -"aGE" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area) -"aGF" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area) -"aGG" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area) -"aGH" = (/turf/space{icon_state = "black"},/area) -"aGI" = (/turf/space/transit/north/shuttlespace_ns8,/area) -"aGJ" = (/turf/space/transit/north/shuttlespace_ns4,/area) -"aGK" = (/turf/space/transit/north/shuttlespace_ns11,/area) -"aGL" = (/turf/space/transit/north/shuttlespace_ns7,/area) -"aGM" = (/turf/space/transit/north/shuttlespace_ns2,/area) -"aGN" = (/turf/space/transit/north/shuttlespace_ns5,/area) -"aGO" = (/turf/space/transit/north/shuttlespace_ns6,/area) -"aGP" = (/turf/space/transit/north/shuttlespace_ns14,/area) -"aGQ" = (/turf/space/transit/north/shuttlespace_ns3,/area) -"aGR" = (/turf/space/transit/north/shuttlespace_ns13,/area) -"aGS" = (/turf/space/transit/north/shuttlespace_ns15,/area) -"aGT" = (/turf/space/transit/north/shuttlespace_ns10,/area) -"aGU" = (/turf/space/transit/north/shuttlespace_ns12,/area) -"aGV" = (/turf/space/transit/north/shuttlespace_ns1,/area) -"aGW" = (/turf/space/transit/north/shuttlespace_ns9,/area) -"aGX" = (/turf/space/transit/east/shuttlespace_ew5,/area) -"aGY" = (/turf/space/transit/east/shuttlespace_ew6,/area) -"aGZ" = (/turf/space/transit/east/shuttlespace_ew7,/area) -"aHa" = (/turf/space/transit/east/shuttlespace_ew8,/area) -"aHb" = (/turf/space/transit/east/shuttlespace_ew10,/area) -"aHc" = (/turf/space/transit/east/shuttlespace_ew11,/area) -"aHd" = (/turf/space/transit/east/shuttlespace_ew12,/area) -"aHe" = (/turf/space/transit/east/shuttlespace_ew9,/area) -"aHf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area) -"aHg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew7,/area) -"aHh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew8,/area) -"aHi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area) -"aHj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area) -"aHk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew3,/area) -"aHl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) -"aHm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) -"aHn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) -"aHo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) -"aHp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) -"aHq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) -"aHr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) -"aHs" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) -"aHt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) -"aHu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) -"aHv" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) -"aHw" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod4/transit) -"aHx" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod4/transit) -"aHy" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod4/transit) -"aHz" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod4/transit) -"aHA" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew13,/area) -"aHB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) -"aHC" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) -"aHD" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape/transit) -"aHE" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape/transit) -"aHF" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit) -"aHG" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape/transit) -"aHH" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape/transit) -"aHI" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape/transit) -"aHJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) -"aHK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew2,/area) -"aHL" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit) -"aHM" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod4/transit) -"aHN" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod4/transit) -"aHO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew7,/area) -"aHP" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) -"aHQ" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape/transit) -"aHR" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape/transit) -"aHS" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape/transit) -"aHT" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape/transit) -"aHU" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape/transit) -"aHV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) -"aHW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew12,/area) -"aHX" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape/transit) -"aHY" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape/transit) -"aHZ" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape/transit) -"aIa" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) -"aIb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area) -"aIc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area) -"aId" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area) -"aIe" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew6,/area) -"aIf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) -"aIg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) -"aIh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) -"aIi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area) -"aIj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area) -"aIk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) -"aIl" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/escape_pod3/transit) -"aIm" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/escape_pod3/transit) -"aIn" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/escape_pod3/transit) -"aIo" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/escape_pod3/transit) -"aIp" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area) -"aIq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) -"aIr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area) -"aIs" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod3/transit) -"aIt" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod3/transit) -"aIu" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod3/transit) -"aIv" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod3/transit) -"aIw" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area) -"aIx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) -"aIy" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod3/transit) -"aIz" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod3/transit) -"aIA" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod3/transit) -"aIB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area) -"aIC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) -"aID" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area) -"aIE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) -"aIF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) -"aIG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) -"aIH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) -"aII" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) -"aIJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) -"aIK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) -"aIL" = (/turf/space/transit/north/shuttlespace_ns5,/area/syndicate_station/transit) -"aIM" = (/turf/space/transit/north/shuttlespace_ns11,/area/syndicate_station/transit) -"aIN" = (/turf/space/transit/north/shuttlespace_ns3,/area/syndicate_station/transit) -"aIO" = (/turf/space/transit/north/shuttlespace_ns13,/area/syndicate_station/transit) -"aIP" = (/turf/space/transit/north/shuttlespace_ns7,/area/syndicate_station/transit) -"aIQ" = (/turf/space/transit/north/shuttlespace_ns14,/area/syndicate_station/transit) -"aIR" = (/turf/space/transit/north/shuttlespace_ns4,/area/syndicate_station/transit) -"aIS" = (/turf/space/transit/north/shuttlespace_ns10,/area/syndicate_station/transit) -"aIT" = (/turf/space/transit/north/shuttlespace_ns1,/area/syndicate_station/transit) -"aIU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) -"aIV" = (/turf/space/transit/north/shuttlespace_ns2,/area/syndicate_station/transit) -"aIW" = (/turf/space/transit/north/shuttlespace_ns12,/area/syndicate_station/transit) -"aIX" = (/turf/space/transit/north/shuttlespace_ns6,/area/syndicate_station/transit) -"aIY" = (/turf/space/transit/north/shuttlespace_ns9,/area/syndicate_station/transit) -"aIZ" = (/turf/space/transit/north/shuttlespace_ns15,/area/syndicate_station/transit) -"aJa" = (/turf/space/transit/north/shuttlespace_ns8,/area/syndicate_station/transit) -"aJb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) -"aJc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) -"aJd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) -"aJe" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) -"aJf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) -"aJg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) -"aJh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) -"aJi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) -"aJj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) -"aJk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) -"aJl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) -"aJm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) -"aJn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) -"aJo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) -"aJp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) -"aJq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) -"aJr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) -"aJs" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit) -"aJt" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod1/transit) -"aJu" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod1/transit) -"aJv" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) -"aJw" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) -"aJx" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod2/transit) -"aJy" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod2/transit) -"aJz" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod2/transit) -"aJA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) -"aJB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) -"aJC" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod1/transit) -"aJD" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod1/transit) -"aJE" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod1/transit) -"aJF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) -"aJG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) -"aJH" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod2/transit) -"aJI" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod2/transit) -"aJJ" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod2/transit) -"aJK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) -"aJL" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod1/transit) -"aJM" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod1/transit) -"aJN" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod2/transit) -"aJO" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod2/transit) -"aJP" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit) -"aJQ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) -"aJR" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) -"aJS" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) -"aJT" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod1/transit) -"aJU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) -"aJV" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod2/transit) -"aJW" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod2/transit) -"aJX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) -"aJY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) -"aJZ" = (/turf/unsimulated/wall,/area/start) -"aKa" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) -"aKb" = (/turf/unsimulated/wall/splashscreen,/area/start) -"aKc" = (/turf/space,/area/shuttle/escape_pod1/centcom) -"aKd" = (/turf/space,/area/shuttle/escape_pod2/centcom) -"aKe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/centcom/evac) -"aKf" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/space,/area/centcom/evac) -"aKg" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/centcom/evac) -"aKh" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/space,/area/centcom/evac) -"aKi" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/centcom/evac) -"aKj" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/centcom/evac) -"aKk" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) -"aKl" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/centcom/evac) -"aKm" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/centcom/evac) -"aKn" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"aKo" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/centcom/evac) -"aKp" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/centcom/evac) -"aKq" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/centcom/evac) -"aKr" = (/turf/simulated/shuttle/plating,/area/centcom/evac) -"aKs" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/centcom/evac) -"aKt" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/centcom/evac) -"aKu" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKv" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"aKw" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKx" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKy" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKz" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/centcom/evac) -"aKA" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2},/area/centcom/evac) -"aKB" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/centcom/evac) -"aKC" = (/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/centcom/evac) -"aKE" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"aKF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/centcom/evac) -"aKG" = (/turf/simulated/shuttle/wall{icon_state = "swallc1"; dir = 2},/area/centcom/evac) -"aKH" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKI" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKJ" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKK" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKL" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKM" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKN" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKO" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/centcom/evac) -"aKP" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKS" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKT" = (/obj/structure/table,/obj/item/device/flash,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKU" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKV" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) -"aKW" = (/turf/space,/area/shuttle/escape_pod3/centcom) -"aKX" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKY" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"aKZ" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/centcom/evac) -"aLa" = (/obj/structure/stool/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) -"aLc" = (/obj/machinery/door/airlock/hatch{name = "Rest Room"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"aLd" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/centcom/evac) -"aLe" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLf" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLg" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLh" = (/turf/unsimulated/wall,/area) -"aLi" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/centcom/evac) -"aLj" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"; dir = 2},/area/centcom/evac) -"aLk" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"aLl" = (/turf/space,/area/centcom/suppy) -"aLm" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLn" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLo" = (/obj/structure/filingcabinet,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLp" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/supply/dock) -"aLq" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLr" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/supply/dock) -"aLs" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/supply/dock) -"aLt" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/supply/dock) -"aLu" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/supply/dock) -"aLv" = (/obj/structure/table,/obj/item/weapon/storage/lockbox,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLw" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLx" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLy" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLz" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor,/area/centcom/evac) -"aLA" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/supply/dock) -"aLB" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/supply/dock) -"aLC" = (/turf/simulated/shuttle/floor,/area/supply/dock) -"aLD" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/supply/dock) -"aLE" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/supply/dock) -"aLF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) -"aLG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) -"aLH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/centcom/evac) -"aLI" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/supply/dock) -"aLJ" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/plating,/area/supply/dock) -"aLK" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/suppy) -"aLL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/supply/dock) -"aLM" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/supply/dock) -"aLN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/supply/dock) -"aLO" = (/turf/unsimulated/wall,/area/centcom/control) -"aLP" = (/turf/unsimulated/wall/fakedoor,/area/centcom/control) -"aLQ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) -"aLR" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"aLS" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) -"aLT" = (/turf/unsimulated/wall,/area/centcom/prison) -"aLU" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) -"aLV" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) -"aLW" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) -"aLX" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) -"aLY" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/centcom/prison) -"aLZ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) -"aMa" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"aMb" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) -"aMc" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"aMd" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape/centcom) -"aMe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aMf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aMg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aMh" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape/centcom) -"aMi" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "security door"},/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/control) -"aMj" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMk" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/obj{anchored = 1; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) -"aMl" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMm" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMn" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMo" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMp" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/obj{anchored = 1; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom) -"aMq" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMr" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/control) -"aMs" = (/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_y = 28; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMt" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) -"aMu" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMw" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMx" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMy" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMz" = (/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/control) -"aMA" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Centcom Customs"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMB" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMC" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMD" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aME" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMF" = (/turf/unsimulated/wall,/area/centcom/ferry) -"aMG" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMH" = (/obj/structure/table,/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/item/weapon/paper/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"aMI" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/escape/centcom) -"aMJ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape/centcom) -"aMK" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape/centcom) -"aML" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aMM" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) -"aMN" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_y = 4},/obj/item/weapon/pen,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aMO" = (/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aMP" = (/obj/structure/dresser,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aMQ" = (/obj/machinery/door/poddoor/preopen{id = "CentComPort"; name = "security door"},/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/control) -"aMR" = (/turf/unsimulated/wall,/area/centcom/evac) -"aMS" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMT" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aMU" = (/obj/structure/stool,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aMV" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aMW" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area) -"aMX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/control) -"aMY" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control) -"aMZ" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"aNa" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"aNb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aNc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aNd" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"aNe" = (/obj/machinery/door/airlock/centcom{name = "Dressing Room"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"aNf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/control) -"aNg" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/control) -"aNh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/control) -"aNi" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/control) -"aNj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/evac) -"aNk" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/evac) -"aNl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/evac) -"aNm" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aNn" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"aNo" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry) -"aNp" = (/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/ferry) -"aNq" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"aNr" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/ferry) -"aNs" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) -"aNt" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) -"aNu" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) -"aNv" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) -"aNw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aNx" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aNy" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"aNz" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"aNA" = (/turf/unsimulated/wall,/area/syndicate_mothership) -"aNB" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport1/centcom) -"aNC" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/transport1/centcom) -"aND" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/transport1/centcom) -"aNE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"aNF" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom) -"aNG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom) -"aNH" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/ferry) -"aNI" = (/turf/unsimulated/wall/fakeglass,/area/centcom/control) -"aNJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aNK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aNL" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aNM" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aNN" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aNO" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom) -"aNP" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"aNQ" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport1/centcom) -"aNR" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/transport1/centcom) -"aNS" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"aNT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/transport1/centcom) -"aNU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) -"aNV" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 6},/area/centcom/ferry) -"aNW" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/evac) -"aNX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aNY" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; req_access_txt = "0"},/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) -"aNZ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aOa" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"aOb" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"aOc" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"aOd" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/ferry) -"aOe" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/ferry) -"aOf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aOg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aOh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aOi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) -"aOj" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aOk" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport1/centcom) -"aOl" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/transport1/centcom) -"aOm" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport1/centcom) -"aOn" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"aOo" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry) -"aOp" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"aOq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aOr" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom) -"aOs" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/transport1/centcom) -"aOt" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/ferry) -"aOu" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) -"aOv" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aOw" = (/turf/unsimulated/wall/fakeglass,/area/centcom/ferry) -"aOx" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"aOy" = (/turf/unsimulated/wall,/area/centcom/holding) -"aOz" = (/turf/unsimulated/wall/fakedoor{name = "Shuttle Bay B"},/area/centcom/holding) -"aOA" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aOB" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/evac) -"aOC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aOD" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) -"aOE" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aOF" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"aOG" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"aOH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aOI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aOJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aOK" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"aOL" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aOM" = (/obj/machinery/sleeper{dir = 8; icon_state = "sleeper-open"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aON" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"aOO" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"aOP" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOQ" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOR" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOS" = (/obj/machinery/computer/syndicate_station{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOT" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOU" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aOV" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"aOW" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) -"aOX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) -"aOY" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"aOZ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"aPa" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) -"aPb" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/tdome/tdomeobserve) -"aPc" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeobserve) -"aPd" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) -"aPe" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeobserve) -"aPf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/tdome/tdomeobserve) -"aPg" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aPh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"aPi" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"aPj" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"aPk" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPl" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPm" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"aPn" = (/obj/item/weapon/storage/fancy/crayons,/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aPo" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aPp" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"aPq" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"aPr" = (/turf/unsimulated/wall/fakeglass,/area/tdome/tdomeobserve) -"aPs" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve) -"aPt" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) -"aPu" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 4},/area/tdome/tdomeobserve) -"aPv" = (/obj/machinery/door/window/northleft{name = "Centcom Security"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPw" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPx" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPy" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPz" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"aPA" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/escape/centcom) -"aPB" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPC" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPD" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPE" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aPF" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aPG" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aPH" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aPI" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"aPJ" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"aPK" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"aPL" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPM" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aPN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape/centcom) -"aPO" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape/centcom) -"aPP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape/centcom) -"aPQ" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape/centcom) -"aPR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) -"aPS" = (/obj/machinery/door/window{name = "Cockpit"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aPT" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"aPU" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"aPV" = (/obj/item/weapon/paper{info = "GET DAT FUCKEN DISK"; name = "memo"},/obj/structure/noticeboard{pixel_x = -32; pixel_y = 0},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aPW" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aPX" = (/obj/machinery/door/airlock/centcom{name = "Study"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aPY" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aPZ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/tdome/tdomeobserve) -"aQa" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) -"aQb" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQc" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQd" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_surround"; dir = 8},/area/syndicate_mothership) -"aQe" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) -"aQf" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQg" = (/obj/structure/table/woodentable,/obj/item/pizzabox{ismessy = 1},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQh" = (/obj/structure/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQi" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (NORTHWEST)"; icon_state = "podhatch"; dir = 9},/area/syndicate_mothership) -"aQj" = (/obj/structure/stool/bed/chair/comfy/lime{icon_state = "comfychair_lime"; dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aQk" = (/obj/structure/table/woodentable,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) -"aQl" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) -"aQm" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) -"aQn" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"aQo" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) -"aQp" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"aQq" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQr" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQs" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) -"aQt" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome/tdomeobserve) -"aQu" = (/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/tdome/tdomeobserve) -"aQv" = (/turf/unsimulated/floor{icon_state = "green"},/area/tdome/tdomeobserve) -"aQw" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/tdome/tdomeobserve) -"aQx" = (/turf/unsimulated/wall/fakedoor{name = "Centcom Security"},/area/centcom/evac) -"aQy" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) -"aQz" = (/turf/unsimulated/floor,/area/syndicate_mothership) -"aQA" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor,/area/syndicate_mothership) -"aQB" = (/obj/machinery/door/poddoor/shutters{id = "nukeop_ready"; name = "shuttle dock"},/turf/unsimulated/floor,/area/syndicate_mothership) -"aQC" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQD" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) -"aQE" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (SOUTHWEST)"; icon_state = "podhatch"; dir = 10},/area/syndicate_mothership) -"aQF" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aQG" = (/obj/structure/toilet{pixel_y = 8},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/machinery/door/window{name = "Tactical Toilet"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aQH" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQI" = (/obj/structure/table,/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQJ" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aQK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"aQL" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) -"aQM" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQN" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQO" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQP" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aQQ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aQR" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aQS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"aQT" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aQU" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQV" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQW" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQX" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Uplink Management Control"; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aQY" = (/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"aQZ" = (/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) -"aRa" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) -"aRb" = (/obj/machinery/door/window{dir = 4; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRc" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRd" = (/obj/machinery/computer/telecrystals/boss,/turf/unsimulated/floor{tag = "icon-podhatch (NORTHEAST)"; icon_state = "podhatch"; dir = 5},/area/syndicate_mothership) -"aRe" = (/obj/structure/sign/map/left{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aRf" = (/obj/structure/sign/map/right{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) -"aRg" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome"},/area/tdome/tdomeobserve) -"aRh" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) -"aRi" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRj" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aRk" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRl" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) -"aRm" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRn" = (/turf/unsimulated/wall,/area/wizard_station) -"aRo" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeobserve) -"aRp" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRr" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRs" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRt" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRu" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRv" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRw" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRx" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRy" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRz" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRA" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRB" = (/obj/machinery/librarycomp,/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRC" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRD" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aRE" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) -"aRF" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"aRG" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/wiz,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station) -"aRH" = (/turf/unsimulated/wall,/area/tdome) -"aRI" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) -"aRJ" = (/turf/simulated/floor,/area/tdome) -"aRK" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRL" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRM" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRN" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) -"aRO" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) -"aRP" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) -"aRQ" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aRR" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aRS" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"aRT" = (/obj/machinery/door/poddoor{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome) -"aRU" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome) -"aRV" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) -"aRW" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"aRX" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aRY" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aRZ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSa" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSb" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/grenade/syndieminibomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSc" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSd" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSe" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) -"aSf" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) -"aSg" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) -"aSh" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"aSi" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"aSj" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSk" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSl" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSm" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSn" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSo" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"aSp" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("thunder"); c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"aSq" = (/turf/simulated/floor/bluegrid,/area/tdome) -"aSr" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome) -"aSs" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"aSt" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSu" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSv" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSw" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSx" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSy" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSz" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"aSA" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"aSB" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome) -"aSC" = (/obj/structure/closet/crate/internals,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSD" = (/obj/structure/closet/crate/medical,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSE" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"aSF" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSG" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"aSH" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSI" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aSJ" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"aSK" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"aSL" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start) -"aSM" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) -"aSN" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start) -"aSO" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) -"aSP" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) -"aSQ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) -"aSR" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/wizard_station) -"aSS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"aST" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"aSU" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"aSV" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"aSW" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"aSX" = (/obj/machinery/door/poddoor{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aSY" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"aSZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"aTa" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/wizard_station) -"aTb" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"aTc" = (/obj/effect/decal/cleanable/blood,/mob/living/carbon/monkey,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"aTd" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"aTe" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aTf" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) -"aTg" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeadmin) -"aTh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeadmin) -"aTi" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeadmin) -"aTj" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"aTk" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"aTl" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"aTm" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"aTn" = (/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"aTo" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"aTp" = (/obj/effect/decal/cleanable/molten_item,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"aTq" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) -"aTr" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"aTs" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"aTt" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"aTu" = (/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"aTv" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"aTw" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome Admin"},/area/tdome/tdomeadmin) -"aTx" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomehea"; name = "Heavy Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"aTy" = (/obj/structure/stool/bed/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"aTz" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomegen"; name = "General Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"aTA" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdome"; name = "Main Blast Doors Control"; pixel_y = 0; req_access_txt = "102"},/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"aTB" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTC" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTD" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTE" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTF" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTG" = (/obj/structure/rack,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTH" = (/obj/structure/rack,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTI" = (/obj/structure/rack,/obj/item/toy/gun,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTJ" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTK" = (/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTL" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTM" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTN" = (/obj/structure/table,/obj/item/clothing/head/that,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTO" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTP" = (/obj/item/device/camera,/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTR" = (/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTS" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTT" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"aTU" = (/obj/structure/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTV" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTW" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTX" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/centcom/holding) -"aTY" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aTZ" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aUa" = (/turf/unsimulated/beach/coastline,/area/centcom/holding) -"aUb" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/coastline,/area/centcom/holding) -"aUc" = (/obj/structure/rack,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/female{desc = "A black trouser suit for women. Very formal."; name = "black suit"; pixel_x = 3; pixel_y = 1},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aUd" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"aUe" = (/turf/unsimulated/beach/water,/area/centcom/holding) -"aUf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) -"aUg" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) -"aUh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) -"aUi" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) -"aUj" = (/turf/simulated/floor{icon_state = "solarpanel"},/area) -"aUk" = (/turf/simulated/wall/r_wall,/area/AIsattele) -"aUl" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUm" = (/obj/machinery/teleport/station,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUn" = (/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUo" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUp" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUq" = (/obj/structure/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUr" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUs" = (/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUt" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUu" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUv" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUw" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUx" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) -"aUy" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUz" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/turf/simulated/floor/plating/airless,/area/AIsattele) -"aUA" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area) -"aUB" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) -"aUC" = (/turf/simulated/floor/plating/airless,/area/djstation/solars) -"aUD" = (/turf/simulated/wall,/area/djstation) -"aUE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"aUF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation) -"aUG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"aUH" = (/turf/simulated/floor/plating,/area/djstation) -"aUI" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/djstation) -"aUJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"aUK" = (/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/djstation) -"aUL" = (/obj/item/device/multitool,/turf/simulated/floor/plating,/area/djstation) -"aUM" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plating,/area/djstation) -"aUN" = (/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/djstation) -"aUO" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plating,/area/djstation) -"aUP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation) -"aUQ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/plating,/area/djstation) -"aUR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/djstation) -"aUS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/djstation) -"aUT" = (/obj/structure/rack,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/djstation) -"aUU" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation) -"aUV" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aUW" = (/obj/machinery/vending/snack,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aUX" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aUY" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aUZ" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"aVb" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVc" = (/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"aVe" = (/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVf" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVg" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVh" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"aVj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"aVk" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVl" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVm" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVn" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVo" = (/obj/machinery/door/airlock/glass{name = "Cabin"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVp" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"aVr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"aVs" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVt" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVu" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"aVv" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVw" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVx" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVy" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVz" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVA" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVB" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aVC" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/djstation) -"aVD" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"aVE" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area) -"aVG" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"aVH" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVI" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/space_heater,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVK" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"aVL" = (/obj/structure/toilet{pixel_y = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"aVM" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"aVO" = (/obj/machinery/door/airlock/external{name = "Ruskie DJ Station"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation) -"aVP" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area) -"aVQ" = (/turf/simulated/wall/r_wall,/area/derelict/teleporter) -"aVR" = (/turf/simulated/floor/plating/airless,/area/derelict/teleporter) -"aVS" = (/turf/simulated/floor/airless,/area/derelict/teleporter) -"aVT" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/teleporter) -"aVU" = (/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/teleporter) -"aVV" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/airless,/area/derelict/teleporter) -"aVW" = (/obj/machinery/teleport/station,/turf/simulated/floor/airless,/area/derelict/teleporter) -"aVX" = (/obj/machinery/teleport/hub,/turf/simulated/floor/airless,/area/derelict/teleporter) -"aVY" = (/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/teleporter) -"aVZ" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless,/area/derelict/teleporter) -"aWa" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/teleporter) -"aWb" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/airless,/area/derelict/teleporter) -"aWc" = (/turf/simulated/mineral,/area) -"aWd" = (/turf/simulated/floor/plating/asteroid/airless,/area) -"aWe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area) -"aWf" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area) -"aWg" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/airless,/area) -"aWh" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area) -"aWi" = (/turf/simulated/floor/plating/asteroid/airless,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area) -"aWj" = (/obj/effect/landmark/corpse/clown,/turf/simulated/floor/airless,/area) -"aWk" = (/turf/simulated/floor/airless,/area) -"aWl" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) -"aWm" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) -"aWn" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) -"aWo" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area) -"aWp" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/asteroid/airless,/area) -"aWq" = (/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) -"aWr" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area) -"aWs" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area) -"aWt" = (/obj/effect/landmark/corpse/clown{name = "Clown Pilot"},/turf/simulated/floor/airless,/area) -"aWu" = (/obj/item/weapon/paper{info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"},/turf/simulated/floor/airless,/area) -"aWv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area) -"aWw" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/airless,/area) -"aWx" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless,/area) -"aWy" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area) -"aWz" = (/turf/simulated/floor/airless,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area) -"aWA" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/airless,/area) -"aWB" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) -"aWC" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/clothing/shoes/clown_shoes{desc = "These shoes appear var-edited!."; name = "uhangi's shoes"; slowdown = -1},/turf/simulated/floor/airless,/area) -"aWD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area) -"aWE" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area) -"aWF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area) -"aWG" = (/turf/simulated/mineral/random,/area) -"aWH" = (/turf/simulated/floor/plating/asteroid/airless/cave,/area) +"aEb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aEc" = (/obj/machinery/atmospherics/pipe/tank/air{icon_state = "intact"; dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEd" = (/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/lattice,/turf/space,/area) +"aEe" = (/obj/structure/transit_tube{icon_state = "D-SW"},/obj/structure/lattice,/turf/space,/area) +"aEf" = (/obj/machinery/door/airlock/external{name = "Telecomms Emergency Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEg" = (/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEi" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEj" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aEl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEn" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) +"aEo" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/space,/area) +"aEp" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/space,/area) +"aEq" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area) +"aEr" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area) +"aEs" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) +"aEt" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEw" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEy" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEz" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aEA" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/obj/structure/lattice,/turf/space,/area) +"aEB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEC" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aED" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEE" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/tcommsat/computer) +"aEF" = (/turf/simulated/floor,/area/tcommsat/computer) +"aEG" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aEH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEI" = (/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"aEJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aEL" = (/obj/machinery/computer/telecomms/traffic{network = "tcommsat"},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) +"aEM" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/tcommsat/computer) +"aEN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/tcommsat/computer) +"aEO" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/paper/monitorkey,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aEP" = (/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aEQ" = (/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) +"aER" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"aES" = (/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) +"aET" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aEU" = (/obj/machinery/telecomms/processor/preset_one/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aEV" = (/obj/machinery/telecomms/bus/preset_one/ministation,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aEW" = (/obj/machinery/telecomms/server/presets/common/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aEX" = (/obj/machinery/message_server,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aEY" = (/obj/machinery/computer/telecomms/server{network = "tcommsat"},/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/tcommsat/computer) +"aEZ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) +"aFa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aFb" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen/blue,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aFc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aFd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFe" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFf" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"aFg" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFh" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aFi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFk" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFl" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFo" = (/obj/machinery/door/airlock/glass_command{name = "Control Room"; req_access_txt = "19; 61"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aFp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) +"aFt" = (/obj/machinery/gravity_generator/main/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) +"aFu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) +"aFv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFx" = (/obj/structure/transit_tube/station/reverse{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aFy" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aFz" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Telecoms Server APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFA" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFB" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFC" = (/obj/machinery/door/airlock/glass_engineering{name = "Server Room"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/computer) +"aFD" = (/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) +"aFE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aFF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aFG" = (/obj/structure/closet/emcloset,/obj/machinery/camera/autoname{network = list("SS13")},/turf/simulated/floor,/area/tcommsat/computer) +"aFH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera/autoname{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFL" = (/obj/structure/transit_tube{tag = "icon-Block (NORTH)"; icon_state = "Block"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/tcommsat/computer) +"aFM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aFO" = (/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aFP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall,/area/tcommsat/computer) +"aFQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/tcommsat/computer) +"aFR" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor,/area/tcommsat/computer) +"aFS" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Telecoms Admin"; departmentType = 5; name = "Telecoms RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/recharge_station,/turf/simulated/floor,/area/tcommsat/computer) +"aFT" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aFU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aFV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"aFW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"aFX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"aFY" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "19; 61"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"aFZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"aGa" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"aGb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/tcommsat/computer) +"aGc" = (/obj/machinery/telecomms/receiver/preset_left/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aGd" = (/obj/machinery/telecomms/hub/preset,/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/light/small,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aGe" = (/obj/machinery/telecomms/broadcaster/preset_left/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aGf" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) +"aGg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/tcommsat/computer) +"aGh" = (/obj/structure/table,/obj/item/device/multitool,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) +"aGi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) +"aGj" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/tcommsat/computer) +"aGk" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) +"aGl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aGm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"aGn" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) +"aGo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"aGp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"aGq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) +"aGr" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/gravity_generator) +"aGs" = (/turf/space,/area/syndicate_station/southwest) +"aGt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aGu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aGv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall/r_wall,/area/tcommsat/computer) +"aGw" = (/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) +"aGx" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/tcommsat/computer) +"aGy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/tcommsat/computer) +"aGz" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) +"aGA" = (/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/gravity_generator) +"aGB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/gravity_generator) +"aGC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/gravity_generator) +"aGD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/gravity_generator) +"aGE" = (/turf/simulated/floor,/area/engine/gravity_generator) +"aGF" = (/turf/space,/area/syndicate_station/southeast) +"aGG" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/tcommsat/computer) +"aGH" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/obj/effect/landmark/start{name = "AI"},/turf/simulated/floor,/area/tcommsat/computer) +"aGI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor,/area/tcommsat/computer) +"aGJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/computer) +"aGK" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor,/area/engine/gravity_generator) +"aGL" = (/obj/machinery/light,/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor,/area/engine/gravity_generator) +"aGM" = (/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/engine/gravity_generator) +"aGN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) +"aGO" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) +"aGP" = (/turf/space,/area/space) +"aGQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/computer) +"aGR" = (/obj/structure/closet/radiation,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/tcommsat/computer) +"aGS" = (/turf/space,/area/syndicate_station/south) +"aGT" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area) +"aGU" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area) +"aGV" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area) +"aGW" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area) +"aGX" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area) +"aGY" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area) +"aGZ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area) +"aHa" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area) +"aHb" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area) +"aHc" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area) +"aHd" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area) +"aHe" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area) +"aHf" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area) +"aHg" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area) +"aHh" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area) +"aHi" = (/turf/space/transit/east/shuttlespace_ew13,/area) +"aHj" = (/turf/space/transit/east/shuttlespace_ew14,/area) +"aHk" = (/turf/space/transit/east/shuttlespace_ew15,/area) +"aHl" = (/turf/space/transit/east/shuttlespace_ew1,/area) +"aHm" = (/turf/space/transit/east/shuttlespace_ew2,/area) +"aHn" = (/turf/space/transit/east/shuttlespace_ew3,/area) +"aHo" = (/turf/space/transit/east/shuttlespace_ew4,/area) +"aHp" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area) +"aHq" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area) +"aHr" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area) +"aHs" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area) +"aHt" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area) +"aHu" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area) +"aHv" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area) +"aHw" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area) +"aHx" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area) +"aHy" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area) +"aHz" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area) +"aHA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area) +"aHB" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area) +"aHC" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area) +"aHD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area) +"aHE" = (/turf/space{icon_state = "black"},/area) +"aHF" = (/turf/space/transit/north/shuttlespace_ns8,/area) +"aHG" = (/turf/space/transit/north/shuttlespace_ns4,/area) +"aHH" = (/turf/space/transit/north/shuttlespace_ns11,/area) +"aHI" = (/turf/space/transit/north/shuttlespace_ns7,/area) +"aHJ" = (/turf/space/transit/north/shuttlespace_ns2,/area) +"aHK" = (/turf/space/transit/north/shuttlespace_ns5,/area) +"aHL" = (/turf/space/transit/north/shuttlespace_ns6,/area) +"aHM" = (/turf/space/transit/north/shuttlespace_ns14,/area) +"aHN" = (/turf/space/transit/north/shuttlespace_ns3,/area) +"aHO" = (/turf/space/transit/north/shuttlespace_ns13,/area) +"aHP" = (/turf/space/transit/north/shuttlespace_ns15,/area) +"aHQ" = (/turf/space/transit/north/shuttlespace_ns10,/area) +"aHR" = (/turf/space/transit/north/shuttlespace_ns12,/area) +"aHS" = (/turf/space/transit/north/shuttlespace_ns1,/area) +"aHT" = (/turf/space/transit/north/shuttlespace_ns9,/area) +"aHU" = (/turf/space/transit/east/shuttlespace_ew5,/area) +"aHV" = (/turf/space/transit/east/shuttlespace_ew6,/area) +"aHW" = (/turf/space/transit/east/shuttlespace_ew7,/area) +"aHX" = (/turf/space/transit/east/shuttlespace_ew8,/area) +"aHY" = (/turf/space/transit/east/shuttlespace_ew10,/area) +"aHZ" = (/turf/space/transit/east/shuttlespace_ew11,/area) +"aIa" = (/turf/space/transit/east/shuttlespace_ew12,/area) +"aIb" = (/turf/space/transit/east/shuttlespace_ew9,/area) +"aIc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area) +"aId" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew7,/area) +"aIe" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew8,/area) +"aIf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area) +"aIg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area) +"aIh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew3,/area) +"aIi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) +"aIj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) +"aIk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) +"aIl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) +"aIm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) +"aIn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) +"aIo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) +"aIp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) +"aIq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) +"aIr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) +"aIs" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) +"aIt" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod4/transit) +"aIu" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod4/transit) +"aIv" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod4/transit) +"aIw" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod4/transit) +"aIx" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew13,/area) +"aIy" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) +"aIz" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) +"aIA" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape/transit) +"aIB" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape/transit) +"aIC" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit) +"aID" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape/transit) +"aIE" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape/transit) +"aIF" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape/transit) +"aIG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) +"aIH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew2,/area) +"aII" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit) +"aIJ" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod4/transit) +"aIK" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod4/transit) +"aIL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew7,/area) +"aIM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) +"aIN" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape/transit) +"aIO" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape/transit) +"aIP" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape/transit) +"aIQ" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape/transit) +"aIR" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape/transit) +"aIS" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) +"aIT" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew12,/area) +"aIU" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape/transit) +"aIV" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape/transit) +"aIW" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape/transit) +"aIX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) +"aIY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area) +"aIZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area) +"aJa" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area) +"aJb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew6,/area) +"aJc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) +"aJd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) +"aJe" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) +"aJf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area) +"aJg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area) +"aJh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) +"aJi" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/escape_pod3/transit) +"aJj" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/escape_pod3/transit) +"aJk" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/escape_pod3/transit) +"aJl" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/escape_pod3/transit) +"aJm" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area) +"aJn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area) +"aJo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area) +"aJp" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/escape_pod3/transit) +"aJq" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/escape_pod3/transit) +"aJr" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/escape_pod3/transit) +"aJs" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/escape_pod3/transit) +"aJt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area) +"aJu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) +"aJv" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod3/transit) +"aJw" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod3/transit) +"aJx" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod3/transit) +"aJy" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area) +"aJz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) +"aJA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area) +"aJB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) +"aJC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) +"aJD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) +"aJE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) +"aJF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) +"aJG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) +"aJH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) +"aJI" = (/turf/space/transit/north/shuttlespace_ns5,/area/syndicate_station/transit) +"aJJ" = (/turf/space/transit/north/shuttlespace_ns11,/area/syndicate_station/transit) +"aJK" = (/turf/space/transit/north/shuttlespace_ns3,/area/syndicate_station/transit) +"aJL" = (/turf/space/transit/north/shuttlespace_ns13,/area/syndicate_station/transit) +"aJM" = (/turf/space/transit/north/shuttlespace_ns7,/area/syndicate_station/transit) +"aJN" = (/turf/space/transit/north/shuttlespace_ns14,/area/syndicate_station/transit) +"aJO" = (/turf/space/transit/north/shuttlespace_ns4,/area/syndicate_station/transit) +"aJP" = (/turf/space/transit/north/shuttlespace_ns10,/area/syndicate_station/transit) +"aJQ" = (/turf/space/transit/north/shuttlespace_ns1,/area/syndicate_station/transit) +"aJR" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) +"aJS" = (/turf/space/transit/north/shuttlespace_ns2,/area/syndicate_station/transit) +"aJT" = (/turf/space/transit/north/shuttlespace_ns12,/area/syndicate_station/transit) +"aJU" = (/turf/space/transit/north/shuttlespace_ns6,/area/syndicate_station/transit) +"aJV" = (/turf/space/transit/north/shuttlespace_ns9,/area/syndicate_station/transit) +"aJW" = (/turf/space/transit/north/shuttlespace_ns15,/area/syndicate_station/transit) +"aJX" = (/turf/space/transit/north/shuttlespace_ns8,/area/syndicate_station/transit) +"aJY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) +"aJZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) +"aKa" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) +"aKb" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) +"aKc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) +"aKd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) +"aKe" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) +"aKf" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) +"aKg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) +"aKh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area) +"aKi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) +"aKj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) +"aKk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area) +"aKl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) +"aKm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) +"aKn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area) +"aKo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) +"aKp" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit) +"aKq" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod1/transit) +"aKr" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod1/transit) +"aKs" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area) +"aKt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area) +"aKu" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod2/transit) +"aKv" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod2/transit) +"aKw" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod2/transit) +"aKx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area) +"aKy" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area) +"aKz" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod1/transit) +"aKA" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod1/transit) +"aKB" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod1/transit) +"aKC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area) +"aKD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area) +"aKE" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod2/transit) +"aKF" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod2/transit) +"aKG" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod2/transit) +"aKH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) +"aKI" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod1/transit) +"aKJ" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod1/transit) +"aKK" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod2/transit) +"aKL" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod2/transit) +"aKM" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit) +"aKN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area) +"aKO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) +"aKP" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area) +"aKQ" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod1/transit) +"aKR" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area) +"aKS" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod2/transit) +"aKT" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod2/transit) +"aKU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area) +"aKV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area) +"aKW" = (/turf/unsimulated/wall,/area/start) +"aKX" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) +"aKY" = (/turf/unsimulated/wall/splashscreen,/area/start) +"aKZ" = (/turf/space,/area/shuttle/escape_pod1/centcom) +"aLa" = (/turf/space,/area/shuttle/escape_pod2/centcom) +"aLb" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/centcom/evac) +"aLc" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/space,/area/centcom/evac) +"aLd" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/centcom/evac) +"aLe" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/space,/area/centcom/evac) +"aLf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/centcom/evac) +"aLg" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/centcom/evac) +"aLh" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) +"aLi" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/centcom/evac) +"aLj" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/centcom/evac) +"aLk" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aLl" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/centcom/evac) +"aLm" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/centcom/evac) +"aLn" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/centcom/evac) +"aLo" = (/turf/simulated/shuttle/plating,/area/centcom/evac) +"aLp" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/centcom/evac) +"aLq" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/centcom/evac) +"aLr" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLs" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"aLt" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLu" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLv" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLw" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/centcom/evac) +"aLx" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2},/area/centcom/evac) +"aLy" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/centcom/evac) +"aLz" = (/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLA" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/centcom/evac) +"aLB" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "101"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aLC" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/centcom/evac) +"aLD" = (/turf/simulated/shuttle/wall{icon_state = "swallc1"; dir = 2},/area/centcom/evac) +"aLE" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLF" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLG" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLH" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLI" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLJ" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLK" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLL" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/centcom/evac) +"aLM" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLO" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLP" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLQ" = (/obj/structure/table,/obj/item/device/flash,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLR" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLS" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLT" = (/turf/space,/area/shuttle/escape_pod3/centcom) +"aLU" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLV" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"aLW" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/centcom/evac) +"aLX" = (/obj/structure/stool/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aLY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aLZ" = (/obj/machinery/door/airlock/hatch{name = "Rest Room"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"aMa" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/centcom/evac) +"aMb" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMc" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMd" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMe" = (/turf/unsimulated/wall,/area) +"aMf" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/centcom/evac) +"aMg" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"; dir = 2},/area/centcom/evac) +"aMh" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"aMi" = (/turf/space,/area/centcom/suppy) +"aMj" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMk" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMl" = (/obj/structure/filingcabinet,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMm" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/supply/dock) +"aMn" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMo" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/supply/dock) +"aMp" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/supply/dock) +"aMq" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/supply/dock) +"aMr" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/supply/dock) +"aMs" = (/obj/structure/table,/obj/item/weapon/storage/lockbox,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMt" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMu" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMv" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMw" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor,/area/centcom/evac) +"aMx" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/supply/dock) +"aMy" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/supply/dock) +"aMz" = (/turf/simulated/shuttle/floor,/area/supply/dock) +"aMA" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/supply/dock) +"aMB" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/supply/dock) +"aMC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aMD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aME" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aMF" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/supply/dock) +"aMG" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/plating,/area/supply/dock) +"aMH" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/suppy) +"aMI" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/supply/dock) +"aMJ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/supply/dock) +"aMK" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/supply/dock) +"aML" = (/turf/unsimulated/wall,/area/centcom/control) +"aMM" = (/turf/unsimulated/wall/fakedoor,/area/centcom/control) +"aMN" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) +"aMO" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"aMP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) +"aMQ" = (/turf/unsimulated/wall,/area/centcom/prison) +"aMR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) +"aMS" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) +"aMT" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) +"aMU" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/control) +"aMV" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/centcom/prison) +"aMW" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"aMX" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) +"aMY" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"aMZ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) +"aNa" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape/centcom) +"aNb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aNc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aNd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aNe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape/centcom) +"aNf" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "security door"},/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/control) +"aNg" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNh" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/obj{anchored = 1; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) +"aNi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNk" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNl" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNm" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/obj{anchored = 1; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom) +"aNn" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNo" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/control) +"aNp" = (/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_y = 28; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNq" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) +"aNr" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNs" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNt" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNu" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNv" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNw" = (/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/control) +"aNx" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Centcom Customs"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNy" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNz" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNA" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNB" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNC" = (/turf/unsimulated/wall,/area/centcom/ferry) +"aND" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNE" = (/obj/structure/table,/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/item/weapon/paper/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"aNF" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/shuttle/escape/centcom) +"aNG" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape/centcom) +"aNH" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape/centcom) +"aNI" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNJ" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) +"aNK" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_y = 4},/obj/item/weapon/pen,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aNL" = (/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aNM" = (/obj/structure/dresser,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aNN" = (/obj/machinery/door/poddoor/preopen{id = "CentComPort"; name = "security door"},/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/control) +"aNO" = (/turf/unsimulated/wall,/area/centcom/evac) +"aNP" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNQ" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNR" = (/obj/structure/stool,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aNS" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aNT" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area) +"aNU" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/control) +"aNV" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control) +"aNW" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) +"aNX" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) +"aNY" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNZ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aOa" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"aOb" = (/obj/machinery/door/airlock/centcom{name = "Dressing Room"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"aOc" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/control) +"aOd" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/control) +"aOe" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/control) +"aOf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/control) +"aOg" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/evac) +"aOh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/evac) +"aOi" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/evac) +"aOj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aOk" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) +"aOl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry) +"aOm" = (/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/ferry) +"aOn" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) +"aOo" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/ferry) +"aOp" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) +"aOq" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) +"aOr" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) +"aOs" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) +"aOt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aOu" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aOv" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"aOw" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"aOx" = (/turf/unsimulated/wall,/area/syndicate_mothership) +"aOy" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport1/centcom) +"aOz" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/transport1/centcom) +"aOA" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/transport1/centcom) +"aOB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) +"aOC" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom) +"aOD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom) +"aOE" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/ferry) +"aOF" = (/turf/unsimulated/wall/fakeglass,/area/centcom/control) +"aOG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aOH" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aOI" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aOJ" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aOK" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aOL" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom) +"aOM" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aON" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport1/centcom) +"aOO" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/transport1/centcom) +"aOP" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aOQ" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/transport1/centcom) +"aOR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) +"aOS" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 6},/area/centcom/ferry) +"aOT" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/evac) +"aOU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aOV" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; req_access_txt = "0"},/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) +"aOW" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aOX" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aOY" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aOZ" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) +"aPa" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/ferry) +"aPb" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/ferry) +"aPc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aPd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aPe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aPf" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) +"aPg" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aPh" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/transport1/centcom) +"aPi" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/transport1/centcom) +"aPj" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/transport1/centcom) +"aPk" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aPl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry) +"aPm" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) +"aPn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aPo" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom) +"aPp" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/transport1/centcom) +"aPq" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/ferry) +"aPr" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) +"aPs" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPt" = (/turf/unsimulated/wall/fakeglass,/area/centcom/ferry) +"aPu" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"aPv" = (/turf/unsimulated/wall,/area/centcom/holding) +"aPw" = (/turf/unsimulated/wall/fakedoor{name = "Shuttle Bay B"},/area/centcom/holding) +"aPx" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aPy" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/evac) +"aPz" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPA" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape/centcom) +"aPB" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPC" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"aPD" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"aPE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aPF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aPG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aPH" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"aPI" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aPJ" = (/obj/machinery/sleeper{dir = 8; icon_state = "sleeper-open"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aPL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aPM" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPN" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPO" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPP" = (/obj/machinery/computer/syndicate_station{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPQ" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPR" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aPS" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) +"aPT" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) +"aPU" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) +"aPV" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"aPW" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"aPX" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) +"aPY" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/tdome/tdomeobserve) +"aPZ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeobserve) +"aQa" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) +"aQb" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeobserve) +"aQc" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/tdome/tdomeobserve) +"aQd" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQe" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aQf" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aQg" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aQh" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQi" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQj" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) +"aQk" = (/obj/item/weapon/storage/fancy/crayons,/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aQl" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aQm" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"aQn" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"aQo" = (/turf/unsimulated/wall/fakeglass,/area/tdome/tdomeobserve) +"aQp" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve) +"aQq" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) +"aQr" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 4},/area/tdome/tdomeobserve) +"aQs" = (/obj/machinery/door/window/northleft{name = "Centcom Security"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQt" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQu" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQw" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQx" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/shuttle/escape/centcom) +"aQy" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQz" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQA" = (/obj/structure/closet/syndicate/personal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQB" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aQC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aQD" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aQE" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aQF" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"aQG" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"aQH" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"aQI" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQJ" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aQK" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape/centcom) +"aQL" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape/centcom) +"aQM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape/centcom) +"aQN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape/centcom) +"aQO" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) +"aQP" = (/obj/machinery/door/window{name = "Cockpit"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQQ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"aQR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) +"aQS" = (/obj/item/weapon/paper{info = "GET DAT FUCKEN DISK"; name = "memo"},/obj/structure/noticeboard{pixel_x = -32; pixel_y = 0},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aQT" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aQU" = (/obj/machinery/door/airlock/centcom{name = "Study"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aQV" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aQW" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/tdome/tdomeobserve) +"aQX" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) +"aQY" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aQZ" = (/obj/machinery/vending/cigarette{pixel_x = 0; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRa" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_surround"; dir = 8},/area/syndicate_mothership) +"aRb" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) +"aRc" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRd" = (/obj/structure/table/woodentable,/obj/item/pizzabox{ismessy = 1},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRe" = (/obj/structure/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRf" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (NORTHWEST)"; icon_state = "podhatch"; dir = 9},/area/syndicate_mothership) +"aRg" = (/obj/structure/stool/bed/chair/comfy/lime{icon_state = "comfychair_lime"; dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aRh" = (/obj/structure/table/woodentable,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"aRi" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) +"aRj" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) +"aRk" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"aRl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) +"aRm" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) +"aRn" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRo" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRp" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) +"aRq" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome/tdomeobserve) +"aRr" = (/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/tdome/tdomeobserve) +"aRs" = (/turf/unsimulated/floor{icon_state = "green"},/area/tdome/tdomeobserve) +"aRt" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/tdome/tdomeobserve) +"aRu" = (/turf/unsimulated/wall/fakedoor{name = "Centcom Security"},/area/centcom/evac) +"aRv" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) +"aRw" = (/turf/unsimulated/floor,/area/syndicate_mothership) +"aRx" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor,/area/syndicate_mothership) +"aRy" = (/obj/machinery/door/poddoor/shutters{id = "nukeop_ready"; name = "shuttle dock"},/turf/unsimulated/floor,/area/syndicate_mothership) +"aRz" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRA" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) +"aRB" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (SOUTHWEST)"; icon_state = "podhatch"; dir = 10},/area/syndicate_mothership) +"aRC" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aRD" = (/obj/structure/toilet{pixel_y = 8},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/machinery/door/window{name = "Tactical Toilet"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aRE" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRF" = (/obj/structure/table,/obj/item/weapon/gun/energy/ionrifle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRG" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aRH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"aRI" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) +"aRJ" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRK" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRL" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRM" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aRN" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aRO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aRP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"aRQ" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRR" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRS" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRT" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRU" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Uplink Management Control"; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aRV" = (/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"aRW" = (/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) +"aRX" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) +"aRY" = (/obj/machinery/door/window{dir = 4; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aRZ" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSa" = (/obj/machinery/computer/telecrystals/boss,/turf/unsimulated/floor{tag = "icon-podhatch (NORTHEAST)"; icon_state = "podhatch"; dir = 5},/area/syndicate_mothership) +"aSb" = (/obj/structure/sign/map/left{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aSc" = (/obj/structure/sign/map/right{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"aSd" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome"},/area/tdome/tdomeobserve) +"aSe" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) +"aSf" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSg" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aSh" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSi" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) +"aSj" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSk" = (/turf/unsimulated/wall,/area/wizard_station) +"aSl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeobserve) +"aSm" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSn" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSo" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSr" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSs" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSt" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSu" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSv" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSw" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSx" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSy" = (/obj/machinery/librarycomp,/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSz" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSA" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aSB" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) +"aSC" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) +"aSD" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/wiz,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station) +"aSE" = (/turf/unsimulated/wall,/area/tdome) +"aSF" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) +"aSG" = (/turf/simulated/floor,/area/tdome) +"aSH" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSI" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSJ" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSK" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) +"aSL" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) +"aSM" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) +"aSN" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aSO" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aSP" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"aSQ" = (/obj/machinery/door/poddoor{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome) +"aSR" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome) +"aSS" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome) +"aST" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"aSU" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aSV" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSW" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSX" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSY" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/grenade/syndieminibomb,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aSZ" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTa" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTb" = (/obj/structure/table/woodentable,/obj/item/weapon/tray,/obj/item/weapon/reagent_containers/food/snacks/burger/spell,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) +"aTc" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) +"aTd" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) +"aTe" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"aTf" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"aTg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTh" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTi" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTj" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTk" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTl" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"aTm" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("thunder"); c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"aTn" = (/turf/simulated/floor/bluegrid,/area/tdome) +"aTo" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome) +"aTp" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"aTq" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTr" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTs" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTt" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTu" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTv" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTw" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"aTx" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"aTy" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome) +"aTz" = (/obj/structure/closet/crate/internals,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTA" = (/obj/structure/closet/crate/medical,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTB" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aTC" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTD" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"aTE" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTF" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTG" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"aTH" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) +"aTI" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start) +"aTJ" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) +"aTK" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start) +"aTL" = (/obj/machinery/door/poddoor{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) +"aTM" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) +"aTN" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) +"aTO" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/wizard_station) +"aTP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aTQ" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) +"aTR" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) +"aTS" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) +"aTT" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) +"aTU" = (/obj/machinery/door/poddoor{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aTV" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) +"aTW" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) +"aTX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/wizard_station) +"aTY" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"aTZ" = (/obj/effect/decal/cleanable/blood,/mob/living/carbon/monkey,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) +"aUa" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) +"aUb" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aUc" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) +"aUd" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeadmin) +"aUe" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeadmin) +"aUf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeadmin) +"aUg" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aUh" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) +"aUi" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) +"aUj" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) +"aUk" = (/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"aUl" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"aUm" = (/obj/effect/decal/cleanable/molten_item,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) +"aUn" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) +"aUo" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"aUp" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"aUq" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) +"aUr" = (/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/unsimulated/floor{icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"aUs" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"aUt" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome Admin"},/area/tdome/tdomeadmin) +"aUu" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomehea"; name = "Heavy Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"aUv" = (/obj/structure/stool/bed/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"aUw" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomegen"; name = "General Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"aUx" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdome"; name = "Main Blast Doors Control"; pixel_y = 0; req_access_txt = "102"},/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"aUy" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUz" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUA" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUB" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUC" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUD" = (/obj/structure/rack,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUE" = (/obj/structure/rack,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUF" = (/obj/structure/rack,/obj/item/toy/gun,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUG" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUH" = (/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUI" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUJ" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUK" = (/obj/structure/table,/obj/item/clothing/head/that,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUL" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUM" = (/obj/item/device/camera,/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUO" = (/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUP" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUQ" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"aUR" = (/obj/structure/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUS" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUT" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUU" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/centcom/holding) +"aUV" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUW" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aUX" = (/turf/unsimulated/beach/coastline,/area/centcom/holding) +"aUY" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/coastline,/area/centcom/holding) +"aUZ" = (/obj/structure/rack,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/female{desc = "A black trouser suit for women. Very formal."; name = "black suit"; pixel_x = 3; pixel_y = 1},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aVa" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"aVb" = (/turf/unsimulated/beach/water,/area/centcom/holding) +"aVc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"aVd" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding) +"aVe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) +"aVf" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) +"aVg" = (/turf/simulated/floor{icon_state = "solarpanel"},/area) +"aVh" = (/turf/simulated/wall/r_wall,/area/AIsattele) +"aVi" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVj" = (/obj/machinery/teleport/station,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVk" = (/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVl" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVm" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVn" = (/obj/structure/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVo" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVp" = (/obj/item/weapon/stock_parts/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVq" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVr" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVs" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVt" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVu" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) +"aVv" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVw" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/turf/simulated/floor/plating/airless,/area/AIsattele) +"aVx" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area) +"aVy" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) +"aVz" = (/turf/simulated/floor/plating/airless,/area/djstation/solars) +"aVA" = (/turf/simulated/wall,/area/djstation) +"aVB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) +"aVC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation) +"aVD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) +"aVE" = (/turf/simulated/floor/plating,/area/djstation) +"aVF" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/djstation) +"aVG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) +"aVH" = (/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/djstation) +"aVI" = (/obj/item/device/multitool,/turf/simulated/floor/plating,/area/djstation) +"aVJ" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plating,/area/djstation) +"aVK" = (/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/djstation) +"aVL" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plating,/area/djstation) +"aVM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation) +"aVN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/plating,/area/djstation) +"aVO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/djstation) +"aVP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/djstation) +"aVQ" = (/obj/structure/rack,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/djstation) +"aVR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation) +"aVS" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aVT" = (/obj/machinery/vending/snack,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aVU" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aVV" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aVW" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aVX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) +"aVY" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aVZ" = (/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aWa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) +"aWb" = (/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWc" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWd" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWe" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) +"aWg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) +"aWh" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aWi" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWj" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWk" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWl" = (/obj/machinery/door/airlock/glass{name = "Cabin"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWm" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) +"aWo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) +"aWp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aWq" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aWr" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation) +"aWs" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWt" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWu" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWv" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWx" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWy" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) +"aWz" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/djstation) +"aWA" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) +"aWB" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWC" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area) +"aWD" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) +"aWE" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWF" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/space_heater,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) +"aWI" = (/obj/structure/toilet{pixel_y = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) +"aWJ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWK" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"aWL" = (/obj/machinery/door/airlock/external{name = "Ruskie DJ Station"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation) +"aWM" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area) +"aWN" = (/turf/simulated/wall/r_wall,/area/derelict/teleporter) +"aWO" = (/turf/simulated/floor/plating/airless,/area/derelict/teleporter) +"aWP" = (/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWQ" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/teleporter) +"aWR" = (/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/teleporter) +"aWS" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWT" = (/obj/machinery/teleport/station,/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWU" = (/obj/machinery/teleport/hub,/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWV" = (/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/teleporter) +"aWW" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWX" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/teleporter) +"aWY" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/airless,/area/derelict/teleporter) +"aWZ" = (/turf/simulated/mineral,/area) +"aXa" = (/turf/simulated/floor/plating/asteroid/airless,/area) +"aXb" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area) +"aXc" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area) +"aXd" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/airless,/area) +"aXe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area) +"aXf" = (/turf/simulated/floor/plating/asteroid/airless,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area) +"aXg" = (/obj/effect/landmark/corpse/clown,/turf/simulated/floor/airless,/area) +"aXh" = (/turf/simulated/floor/airless,/area) +"aXi" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) +"aXj" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) +"aXk" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) +"aXl" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area) +"aXm" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/asteroid/airless,/area) +"aXn" = (/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) +"aXo" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area) +"aXp" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area) +"aXq" = (/obj/effect/landmark/corpse/clown{name = "Clown Pilot"},/turf/simulated/floor/airless,/area) +"aXr" = (/obj/item/weapon/paper{info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!"},/turf/simulated/floor/airless,/area) +"aXs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area) +"aXt" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/airless,/area) +"aXu" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless,/area) +"aXv" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area) +"aXw" = (/turf/simulated/floor/airless,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area) +"aXx" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/airless,/area) +"aXy" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/turf/simulated/floor/airless,/area) +"aXz" = (/obj/structure/closet/crate,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/weapon/ore/clown,/obj/item/clothing/shoes/clown_shoes{desc = "These shoes appear var-edited!."; name = "uhangi's shoes"; slowdown = -1},/turf/simulated/floor/airless,/area) +"aXA" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area) +"aXB" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area) +"aXC" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area) +"aXD" = (/turf/simulated/mineral/random,/area) +"aXE" = (/turf/simulated/floor/plating/asteroid/airless/cave,/area) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2707,7 +2756,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaayAaBaayAazpayZaBWayAayAayAayAaBXaBYaAJaBZaCaayAayAayAayAaCbayZaAKayAaCcayAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamayAaCdazeayZayZayKayZaCeaBLaBMaAUaBOaBPaCfayZayZayZayZazgaCgayAaChaCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaayAaAeaCjaAaaAaaAfayZaCeaBLaBMaBNaBOaBPaCfayZaCkaAyaAyaClaCmayAaCnaCoaCpaCpaCpaCqaCpaCpaCpaCpaCraCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaaaaaaaaayAaCsaCtaCuayAaAhayAayAaBXaBYaCvaBZaCaayAayAaAlayAaCwaCxaCyayAaamaamaamaamaamaamaamaamaamaamaCnaCzaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaaaaaaaaayAaCsaCtaCuayAaAhayAayAaBXaBYaCvaBZaCaayAayAaAlayAaCwaCxaCyayAaamaamaamaamaamaamaamaamaamaamaCnaCzaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayAayAayAayAayAayAayAayAayAayAaCAaCBaCCaBAaCDaAUaCEaBEaCFaCGaCHaCIayAayAayAayAayAayAayAayAayAaaaaaaaaaaaaaaaaamaCJaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayAaCKaCLaCMaCMaCMaCMaCLaCNayAayZaCOaCPaCQaCRayZaCSaCQaCPaCTaCUayAaCVaCWaCXaCYaCXaCXaCWaCZayAaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaayAaDbaCKaCNaCKaCNaCKaCNaDcaDdaDeaDfaDgaDhaBMayZaBOaDiaDjaDkaDlaDmaDnaDoaCZaDoaCZaDoaCZaDpaDqaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2717,56 +2766,56 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayAaDXaDXaDXaDXaDXaDXaDXaDXayAayAayAayAayAayAayAayAayAayAayAayAaCIayAayAayAayAayAayAayAayAayAaamaamaamaamaamaamaDYaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaDWaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamabLaDZaEaaDZaDZaDZaDZaDZaDZaDZaDZaDZaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbaEcaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamabLabLaEdaEeaEdaEeaEeaEeaEeaEeaEeaEfaEeaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEgaEhaCpaEiaCpaCpaCpaCpaCpaCpaEiaCpaCpaCpaCpaEiaEjaEkaEcaamaDZaDZaDZaDZaDZaDZaDZaElaEmaEnaEnaEnaEnaEoaEeaEpaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaCnaEqaEcaEpaEeaEeaEfaEeaEeaEeaEeaEraEsaEtaEtaEuaEraEeaEvaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaCnaCzaEwaEeaEeaEmaEnaEnaEnaEnaExaEyaEzaEAaEBaEraEeaEwaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaDZaECaDZaEeaEeaEraEDaEEaEFaEGaDZaEHaEIaEJaEKaELaEeaDZaDZaDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaEpaEMaENaEeaEOaExaEPaEQaEQaEQaDZaERaESaETaEUaEraEeaEVaEWaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaEvaEXaEeaEeaEeaEYaEZaFaaFbaEQaFcaFdaFeaFfaFgaFhaFiaFjaFkaFlaFmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaEwaFnaEfaEeaFoaFpaFqaEQaEQaEQaFraFdaFsaFtaFuaFvaFwaFxaEWaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaDZaFyaDZaEeaEeaFzaFAaFBaFCaFDaFEaFFaFGaFHaFIaEYaEeaDZaDZaDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpaEeaEeaFKaFvaFvaFvaFvaFLaFMaFNaEtaFOaFPaEeaEpaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEwaEeaEeaENaEeaEeaEeaEeaEYaFRaFSaFTaFUaEYaEeaEvaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDZaDZaDZaDZaDZaDZaDZaElaEYaEYaEYaEYaEYaEYaEeaEwaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamabLabLaEdaEeaEdaEeaEeaEeaEeaEeaEeaENaEeaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamabLaDZaEaaDZaDZaDZaDZaDZaDZaDZaDZaDZaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaFJaFJaFJaFJaFJaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaFQaFQaFQaFQaFQaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaFJaFJaFJaFJaFJaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaFQaFQaFQaFQaFQaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaFJaFJaFJaFJaFJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaFQaFQaFQaFQaFQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaFVaFVaFVaFVaFVaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaFVaFVaFVaFVaFVaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaFVaFVaFVaFVaFVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamaamaamaamaamaamaDZaDZaDZaDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamabLaDZaEaaDZaDZaDZaDZaDZaDZaDZaDZaDZaEbaEcaDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEdaEeaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamabLabLaEfaEgaEfaEgaEgaEgaEgaEgaEhaEiaEjaEkaElaEmaEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEoaEpaCpaEqaCpaCpaCpaCpaCpaCpaEqaCpaCpaCpaCpaEqaEraEsaEeaamaDZaDZaDZaDZaDZaDZaDZaEtaEuaEvaEvaEvaEwaExaEyaEzaEcaDZaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaCnaEAaEeaEBaEgaEgaECaEgaEgaEgaEgaEDaEEaEFaEFaEGaEHaEgaEIaEIaEIaEIaEIaEIaEIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaCnaCzaEJaEgaEgaEuaEvaEvaEvaEvaEKaELaEMaENaEOaEHaEgaEIaEPaEQaERaESaEPaEIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaDZaETaDZaEgaEgaEDaEUaEVaEWaEXaDZaEYaEZaFaaFbaFcaFdaEIaFeaFfaEPaFfaFgaEIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaEBaFhaFiaEgaFjaEKaFkaFlaFlaFlaDZaFmaFnaFoaFpaEHaFqaEIaFraFsaFtaFuaFvaEIaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaFwaFxaEgaEgaEgaFyaFzaFAaFBaFlaFCaFDaFEaFFaFGaEHaFqaEIaFHaFIaEPaFJaFKaEIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaEJaFLaECaEgaFMaFNaFOaFlaFlaFlaFPaFDaFQaFRaFSaFTaFUaFVaFWaFXaFYaFZaGaaEIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaDZaGbaDZaEgaEgaEHaGcaGdaGeaGfaGgaGhaGiaGjaGkaFyaGlaGmaGnaGoaGpaGqaGraEIaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEBaEgaEgaGtaGuaGuaGuaGuaGvaGwaGxaEFaGyaGzaEgaEIaGAaGBaGCaGDaGEaEIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEJaEgaEgaFiaEgaEgaEgaEgaFyaGGaGHaGIaGJaFyaEgaEIaGEaGEaGKaGLaGMaEIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDZaDZaDZaDZaDZaDZaDZaEtaFyaFyaFyaFyaFyaFyaEgaGNaGOaGNaEIaEIaEIaEIaGPaGPaGPaGPaGPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamabLabLaEfaEgaEfaEgaEgaEgaEgaEgaEgaFiaEgaEgaEgaGQaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamabLaDZaEaaDZaDZaDZaDZaDZaDZaDZaDZaDZaGRaGRaDZaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamaamaamaamaamaamaDZaDZaDZaDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaGsaGsaGsaGsaGsaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaGFaGFaGFaGFaGFaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaGsaGsaGsaGsaGsaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaGFaGFaGFaGFaGFaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaGFaGFaGFaGFaGFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaGSaGSaGSaGSaGSaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaGSaGSaGSaGSaGSaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaGSaGSaGSaGSaGSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2788,73 +2837,73 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} (1,1,2) = {" -aFWaFXaFYaFZaGaaGbaGcaGdaFWaGeaGfaGgaGhaGiaGjaGkaGcaGbaGfaFYaFZaGdaGgaGaaGiaGeaGkaGlaGmaGnaGoaGpaGqaGraGsaGtaGuaGvaGwaGxaGyaGzaGAaGBaGCaGDaGEaGFaGGaGsaGtaGuaGvaGwaGxaGyaGzaGAaGBaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGfaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaGSaGTaGUaGVaGWaGNaGMaGRaGJaGKaGOaGSaGLaGUaGQaFXaGpaGqaGraGXaGYaGZaHaaGwaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGFaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGiaGLaGQaGTaGOaGVaGJaGNaGRaGMaGUaGPaGWaGKaGSaGIaGJaGVaGUaGQaGTaGNaGPaGOaGKaGMaGaaGmaGnaGoaGpaGqaGraGXaGtaGZaHaaHeaHbaHcaHdaGlaGmaGnaGnaGoaGpaGqaGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGCaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFZaGOaGMaGWaGNaGSaGQaGJaGUaGVaGKaGRaGIaGTaGPaGLaGQaGSaGKaGMaGWaGJaGRaGNaGTaGVaGdaGXaGYaGZaHaaHeaHbaHcaGzaGlaGmaGnaGoaGpaGqaGraGXaGYaGraGXaGYaGZaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGtaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGhaGNaGVaGIaGJaGPaGMaGQaGKaGSaGTaGUaGLaGWaGRaGOaGMaGPaGTaGVaGIaGQaGUaGJaGWaGSaGcaHcaHdaGlaGmaGnaGoaGpaGFaGraGXaGYaGZaHaaHeaHbaHcaHdaGoaGpaGqaGraGpaGqaGraGXaGYaGZaHaaHeaHbaHcaGzaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGkaGJaGSaGLaGQaGRaGVaGMaGTaGPaGWaGKaGOaGIaGUaGNaGVaGRaGWaGSaGLaGMaGKaGQaGIaGPaFYaGXaGYaGZaHaaHeaHbaHcaGzaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGtaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFXaGQaGPaGOaGMaGUaGSaGVaGWaGRaGIaGTaGNaGLaGKaGJaGSaGUaGIaGPaGOaGVaGTaGMaGLaGRaGeaGnaGoaGpaGqaGraGXaGYaGuaHaaHeaHbaHcaHdaGlaGmaGnaGoaGlaGmaGnaGoaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGDaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGaaGMaGRaGNaGVaGKaGPaGSaGIaGUaGLaGWaGJaGOaGTaGQaGPaGKaGLaGRaGNaGSaGWaGVaGOaGUaGbaHeaHbaHcaHdaGlaGmaGnaGDaGpaGqaGraGXaGYaGZaHaaHeaHfaHgaHhaHiaHjaHkaGoaGpaGqaGraGXaGYaGZaHaaHeaGxaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGdaGVaGUaGJaGSaGTaHlaGPaGLaHmaHnaHoaHpaHqaHraHsaHtaHuaGOaGUaHvaGPaGIaGSaGNaGKaGjaHdaGlaGmaGnaGoaGpaGqaGGaGXaGYaGZaHaaHeaHbaHcaHdaHhaHwaHxaHyaHzaHAaGraGXaGYaGZaHaaHeaHbaHcaHdaGAaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGcaGSaGKaGQaGPaHBaGUaGRaGOaHqaHCaHDaHEaHFaHGaHHaHIaHJaGNaGKaGQaHlaGLaGPaGJaGTaGgaGZaHaaHeaHbaHcaHdaGlaGBaGnaGoaGpaGqaGraGXaGYaGZaHKaHLaHMaHNaHwaHOaGmaGnaGoaGpaGqaGraGXaGYaGZaGvaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFYaGPaGTaGMaGRaGIaGKaGUaHPaHHaHIaHQaHRaHSaHEaHDaHTaHUaHVaGTaGMaGUaGOaGRaGQaGWaFWaGoaGpaGqaGraGXaGYaGZaGvaHeaHbaHcaHdaGlaGmaGnaGoaHgaHMaHNaHwaHxaHWaHaaHeaHbaHcaHdaGlaGmaGnaGoaGEaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGeaGRaGWaGVaGUaGLaGTaGKaHVaHDaHTaHXaHCaHYaHRaHQaHZaHGaIaaGWaGVaGKaGNaGUaGMaGIaGfaGYaGZaHaaHeaHbaHcaHdaGAaGmaGnaGoaGpaGqaGraGXaGYaIbaIcaIdaIeaHgaIdaGlaGmaGnaGoaGpaGqaGraGXaGYaGuaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGbaGUaGIaGSaGKaGOaGWaGTaIaaHQaHZaHUaHIaHHaHCaHXaHFaHEaIfaGIaGSaGTaGJaGKaGVaGLaGiaGmaGnaGoaGpaGqaGraGXaGtaGZaHaaHeaHbaHcaHdaGlaGmaGqaGoaGpaGqaGraHaaGYaGZaHaaHeaHbaHcaHdaGlaGmaGCaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGjaGKaGLaGPaGTaGNaGIaGWaIfaHXaHFaHGaHTaHDaHIaHUaHSaHRaIgaGLaGPaGWaGQaGTaGSaGOaFZaGqaGraGXaGYaGZaHaaHeaGxaHcaHdaGlaGmaGnaGoaGpaGqaGnaGZaHaaHeaHbaGXaHbaHcaHdaGlaGmaGnaGoaGpaGqaGGaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGgaGTaGOaGRaGWaGJaGLaGIaIgaHUaHSaHEaHZaHQaHTaHGaHYaHCaIhaGOaGRaGIaGMaGWaGPaGNaGhaHaaHeaHbaHcaHdaGlaGmaGCaGoaGpaGqaGraGXaGYaGZaHaaIcaHfaIiaIbaIjaHiaGnaGoaGpaGqaGraGXaGYaGZaHaaGwaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFWaGWaGNaGUaGIaGQaGOaGLaIhaHGaHYaHRaHFaHXaHZaHEaHHaHIaIkaGNaGUaGLaGVaGIaGRaGJaGkaHbaHcaHdaGlaGmaGnaGoaGEaGqaGraGXaGYaGZaHaaHeaHbaHiaIlaImaInaIoaIpaGpaGqaGraGXaGYaGZaHaaHeaHbaGyaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGfaGIaGJaGKaGLaGMaGNaGOaIkaHEaHHaHCaHSaHUaHFaHRaHDaHTaIqaGJaGKaGOaGSaGLaGUaGQaFXaGraGXaGYaGZaHaaHeaHbaGyaHdaGlaGmaGnaGoaGpaGqaGraIraIsaItaIuaIvaIwaHcaHdaGlaGmaGnaGoaGpaGqaGraGsaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGiaGLaGQaGTaGOaGVaGJaGNaIqaHRaHDaHIaHYaHGaHSaHCaHQaHZaIxaGQaGTaGNaGPaGOaGKaGMaGaaHeaHbaHcaHdaGlaGmaGnaGDaGpaGqaGraGXaGYaGZaHaaHeaIdaIyaIzaIAaIsaIBaGoaGpaGqaGraGXaGYaGZaHaaHeaGxaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFZaGOaGMaGWaGNaGSaGQaGJaIxaHCaHQaHTaHHaHEaHYaHIaHXaHFaICaGMaGWaGJaGRaGNaGTaGVaGdaGnaGoaGpaGqaGraGXaGYaGuaHaaHeaHbaHcaHdaGlaGmaGnaHjaIraIDaHfaIiaIbaGZaHaaHeaHbaHcaHdaGlaGmaGnaGDaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGhaGNaGVaGIaGJaGPaGMaGQaICaHIaHXaHZaHDaHRaHHaHTaHUaHSaIEaGVaGIaGQaGUaGJaGWaGSaGcaGZaHaaHeaHbaHcaHdaGlaGBaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaGvaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGkaGJaGSaGLaGQaGRaGVaGMaIEaHTaHUaHFaHQaHCaHDaHZaHGaHYaIFaGSaGLaGMaGKaGQaGIaGPaFYaGpaGqaGraGXaGYaGZaHaaGwaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGFaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFXaGQaGPaGOaGMaGUaGSaGVaIFaHZaHGaHSaHXaHIaHQaHFaHEaHHaIGaGPaGOaGVaGTaGMaGLaGRaGeaHdaGlaGmaGnaGoaGpaGqaGGaGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGAaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGaaGMaGRaGNaGVaGKaGPaGSaIGaHFaHEaHYaHUaHTaHXaHSaHRaHDaIHaGRaGNaGSaGWaGVaGOaGUaGbaHbaHcaHdaGlaGmaGnaGoaGEaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaGyaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGdaGVaGUaGJaGSaGTaGRaGPaIHaHSaHRaHHaHGaHZaHUaHYaHCaHQaIIaGUaGJaGPaGIaGSaGNaGKaGjaGqaGraGXaGYaGZaHaaHeaGxaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGGaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGcaGSaGKaGQaGPaGWaGUaGRaIIaHYaHCaHDaHEaHFaHGaHHaHIaHXaHPaGKaGQaGRaGLaGPaGJaGTaGgaGYaGZaHaaHeaHbaHcaHdaGAaGmaGnaGoaGpaGqaGraGXaGYaGZaHaaHeaHbaHcaHdaGlaGmaGnaGoaGpaGqaGraGXaGYaGuaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFYaGPaGTaGMaGRaGIaGKaGUaHPaHHaHIaHQaHRaHSaHEaHDaHTaHUaHVaGTaGMaGUaGOaGRaGQaGWaFWaGoaGpaGqaGraGXaGYaGZaGvaGwaGxaGyaGzaGAaGBaGCaGDaGEaGFaGGaGsaGtaGuaGvaGwaGxaGyaGzaGAaGBaGCaGDaGEaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGeaGRaGWaGVaGUaGLaGTaGKaHVaHDaHTaHXaHCaHYaHRaHQaHZaHGaIaaGWaGVaGKaGNaGUaGMaGIaGfaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGbaGUaGIaGSaGKaGOaGWaGTaIaaHQaHZaHUaHIaHHaHCaHXaHFaHEaIfaGIaGSaGTaGJaGKaGVaGLaGiaGHaFWaFXaFYaFZaGaaGbaGcaGdaFWaGeaGfaGgaGhaGiaGjaGkaGcaGbaGfaFYaFZaGdaGgaGaaGiaGeaGkaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGjaGKaGLaGPaGTaGNaGIaGWaIfaHXaHFaHGaHTaHDaHIaHUaHSaHRaIgaGLaGPaGWaGQaGTaGSaGOaFZaGHaGfaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaGSaGTaGUaGVaGWaGNaGMaGRaGJaGKaGOaGSaGLaGUaGQaFXaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGgaGTaGOaGRaGWaGJaGLaGIaIgaHPaHUaHQaHRaHGaHDaHCaHFaHVaIhaGOaGRaGIaGMaGWaGPaGNaGhaGHaGiaGLaGQaGTaGOaGVaGJaGNaGRaGMaGUaGPaGWaGKaGSaGIaGJaGVaGUaGQaGTaGNaGPaGOaGKaGMaGaaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFWaGWaGNaGUaGIaGQaGOaGLaGSaHVaIkaIgaICaIqaIfaIEaIIaIaaGPaGNaGUaGLaGVaGIaGRaGJaGkaGHaFZaGOaGMaGWaGNaGSaGQaGJaGUaGVaGKaGRaGIaGTaGPaGLaGQaGSaGKaGMaGWaGJaGRaGNaGTaGVaGdaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGfaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaGSaGTaGUaGVaGWaGNaGMaGRaGJaGKaGOaGSaGLaGUaGQaFXaGHaGhaGNaGVaGIaGJaGPaGMaGQaGKaGSaGTaGUaGLaGWaGRaGOaGMaGPaGTaGVaGIaGQaGUaGJaGWaGSaGcaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGiaGLaGQaGTaGOaGVaGJaGNaGRaGMaGUaGPaGWaGKaGSaGIaGJaGVaGUaGQaGTaGNaGPaGOaGKaGMaGaaGHaGkaGJaGSaGLaGQaGRaGVaGMaGTaGPaGWaGKaGOaGIaGUaGNaGVaGRaGWaGSaGLaGMaGKaGQaGIaGPaFYaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFZaGOaGMaGWaGNaGSaGQaGJaGUaGVaGKaGRaGIaGTaGPaGLaGQaGSaGKaGMaGWaGJaGRaGNaGTaGVaGdaGHaFXaGQaGPaGOaGMaGUaGSaGVaGWaGRaGIaGTaGNaGLaGKaGJaGSaGUaGIaGPaGOaGVaGTaGMaGLaGRaGeaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGhaGNaGVaGIaGJaGPaGMaGQaGKaGSaGTaGUaGLaGWaGRaGOaGMaGPaGTaGVaGIaGQaGUaGJaGWaGSaGcaGHaGaaGMaGRaGNaGVaGKaGPaGSaGIaGUaGLaGWaGJaGOaGTaGQaGPaGKaGLaGRaGNaGSaGWaGVaGOaGUaGbaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGkaGJaGSaGLaGQaGRaGVaGMaGTaGPaGWaGKaGOaGIaGUaGNaGVaGRaGWaGSaGLaGMaGKaGQaGIaGPaFYaGHaGdaGVaGUaGJaGSaGTaGRaGPaIJaHmaHnaHoaHpaHqaHraHsaHtaHuaIKaGUaGJaGPaGIaGSaGNaGKaGjaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFXaGQaGPaGOaGMaGUaGSaGVaGWaGRaGIaGTaGNaGLaGKaGJaGSaGUaGIaGPaGOaGVaGTaGMaGLaGRaGeaGHaGcaGSaGKaGQaGPaGWaGUaGRaIKaILaIMaINaIOaIPaIQaIRaISaITaIUaGKaGQaGRaGLaGPaGJaGTaGgaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGaaGjaGiaFYaGgaGhaGfaFWaGaaFZaGdaFXaGeaGcaGkaGbaGfaGhaGdaGiaFYaFWaFXaGgaGcaFZaGbaGHaFYaGPaGTaGMaGRaGIaGKaGUaIUaIRaISaIVaIWaIXaIOaINaIYaIZaHvaGTaGMaGUaGOaGRaGQaGWaFWaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGdaGVaGUaGJaGSaGTaGRaGPaGLaGKaGOaGIaGQaGNaGWaGMaGRaGTaGOaGUaGJaGPaGIaGSaGNaGKaGjaGHaGeaGRaGWaGVaGUaGLaGTaGKaHvaINaIYaITaIMaILaIWaIVaJaaIQaJbaGWaGVaGKaGNaGUaGMaGIaGfaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGcaGSaGKaGQaGPaGWaGUaGRaGOaGTaGNaGLaGMaGJaGIaGVaGUaGWaGNaGKaGQaGRaGLaGPaGJaGTaGgaGHaGbaGUaGIaGSaGKaGOaGWaGTaJbaIVaJaaIZaISaIRaIMaITaIPaIOaJcaGIaGSaGTaGJaGKaGVaGLaGiaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFYaGPaGTaGMaGRaGIaGKaGUaGNaGWaGJaGOaGVaGQaGLaGSaGKaGIaGJaGTaGMaGUaGOaGRaGQaGWaFWaGHaGjaGKaGLaGPaGTaGNaGIaGWaJcaITaIPaIQaIYaINaISaIZaIXaIWaJdaGLaGPaGWaGQaGTaGSaGOaFZaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGeaGRaGWaGVaGUaGLaGTaGKaGJaGIaGQaGNaGSaGMaGOaGPaGTaGLaGQaGWaGVaGKaGNaGUaGMaGIaGfaGHaGgaGTaGOaGRaGWaGJaGLaGIaJdaGSaGOaIOaJaaIVaIYaIQaGNaGKaJeaGOaGRaGIaGMaGWaGPaGNaGhaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGbaGUaGIaGSaGKaGOaGWaGTaGQaGLaGMaGJaGPaGVaGNaGRaGWaGOaGMaGIaGSaGTaGJaGKaGVaGLaGiaGHaFWaGWaGNaGUaGIaHpaHnaJfaJgaJhaHqaIWaIPaITaJaaIOaGJaGTaJiaGNaGUaGLaGVaGIaGRaGJaGkaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGjaGKaGLaGPaGTaGNaGIaGWaGMaGOaGVaGQaGRaGSaGJaGUaGIaGNaGVaGLaGPaGWaGQaGTaGSaGOaFZaGHaGfaGIaGJaGKaGLaJcaILaIXaIQaIOaIRaIMaIXaIZaIPaIWaGQaGWaHlaGJaGKaGOaGSaGLaGUaGQaFXaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGgaGTaGOaGRaGWaGJaGLaGIaGVaGNaGSaGMaGUaGPaGQaGKaGLaGJaGSaGOaGRaGIaGMaGWaGPaGNaGhaGHaGiaGLaGQaGTaGOaJdaIRaILaIOaIWaINaISaILaIQaIXaIMaHuaHuaHuaHuaJjaGNaGPaGOaGKaGMaGaaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFWaGWaGNaGUaGIaGQaGOaGLaJkaJlaJhaHJaJmaGRaJnaJoaHnaJpaJqaGNaGUaGLaGVaGIaGRaGJaGkaGHaFZaGOaGMaGWaGNaJeaINaIRaIWaIMaIVaIYaIRaIOaILaISaITaIPaIMaIVaHBaGJaGRaGNaGTaGVaGdaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGfaGIaGJaGKaGLaGMaGNaGOaJraJsaJtaJuaJvaGOaJwaJxaJyaJzaJAaGRaGKaGOaGSaGLaGUaGQaFXaGHaGhaGNaGVaGIaGJaJiaIVaINaIMaISaITaJaaINaIWaIRaIYaIZaIXaISaITaJBaGQaGUaGJaGWaGSaGcaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGiaGLaGQaGTaGOaGVaGJaGNaJAaJCaJDaJEaJFaGNaJGaJHaJIaJJaJKaGUaGTaGNaGPaGOaGKaGMaGaaGHaGkaGJaGSaGLaGQaHlaITaIVaISaIYaIZaIPaIVaIMaINaJaaIQaILaIYaIZaIJaGMaGKaGQaGIaGPaFYaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFZaGOaGMaGWaGNaGSaGQaGJaJKaJLaJMaJtaJnaGJaJraJNaJOaJPaJQaGKaGWaGJaGRaGNaGTaGVaGdaGHaFXaGQaGPaGOaJcaJRaIZaITaIYaJaaIQaIXaITaISaIVaIPaIOaIRaJaaIQaJSaHJaJjaGMaGLaGRaGeaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGhaGNaGVaGIaGJaGPaGMaGQaJQaJuaJTaJDaJUaGQaJAaJVaJzaJWaJvaGTaGIaGQaGUaGJaGWaGSaGcaGHaGaaGMaGRaGNaJdaIMaIQaIZaJaaIPaIOaILaIZaIYaITaIXaIWaINaIPaIOaILaIZaHBaGVaGOaGUaGbaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGkaGJaGSaGLaGQaGRaGVaGMaJvaJraJFaJQaJkaGMaJKaJqaJwaJAaJFaGWaGLaGMaGKaGQaGIaGPaFYaGHaGdaGVaGUaGJaJeaISaIOaIQaIPaIXaIWaIRaIQaJaaIZaILaIMaIVaIXaIWaIRaIQaJBaGSaGNaGKaGjaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFXaGQaGPaGOaGMaGUaGSaGVaGQaGLaGMaGJaGPaGVaGNaGRaGWaGOaGMaGIaGOaGVaGTaGMaGLaGRaGeaGHaGcaGSaGKaGQaJiaIYaIWaIOaIXaILaIMaINaIOaIPaIQaIRaISaITaILaIMaINaIOaIJaGPaGJaGTaGgaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGaaGMaGRaGNaGVaGKaGPaGSaGIaGUaGLaGWaGJaGOaGTaGQaGPaGKaGLaGRaGNaGSaGWaGVaGOaGUaGbaGHaFYaGPaGTaGMaHlaJaaIMaIWaILaIRaISaIVaIWaIXaIOaINaIYaIZaIRaISaIVaIWaIKaGRaGQaGWaFWaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGdaGVaGUaGJaGSaGTaGRaGPaGLaGKaGOaGIaGQaGNaGWaGMaGRaGTaGOaGUaGJaGPaGIaGSaGNaGKaGjaGHaGeaGRaGWaGVaJXaIPaISaIMaIRaINaIYaITaIMaILaIWaIVaJaaIQaINaIYaITaIMaIUaGUaGMaGIaGfaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGcaGSaGKaGQaGPaGWaGUaGRaGOaGTaGNaGLaGMaGJaGIaGVaGUaGWaGNaGKaGQaGRaGLaGPaGJaGTaGgaGHaGbaGUaGIaGSaJYaIXaIYaISaINaIVaJaaIZaISaIRaIMaITaIPaIOaIVaJaaIZaISaHvaGKaGVaGLaGiaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aFYaGPaGTaGMaGRaGIaGKaGUaGNaGWaGJaGOaGVaGQaGLaGSaGKaGIaGJaGTaGMaGUaGOaGRaGQaGWaFWaGHaGjaGKaGLaGPaJjaILaJaaIYaIVaITaGLaIQaIYaINaISaIZaGOaIWaITaIPaIQaIYaJbaGTaGSaGOaFZaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGeaGRaGWaGVaGUaGLaGTaGKaGJaGIaGQaGNaGSaGMaGOaGPaGTaGLaGQaGWaGVaGKaGNaGUaGMaGIaGfaGHaGgaGTaGOaGRaHBaIRaIPaJaaITaILaGSaIVaIWaIQaINaIMaGLaIRaIZaIXaIOaJaaJcaGWaGPaGNaGhaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGbaGUaGIaGSaGKaGOaGWaGTaGQaGLaGMaGJaGPaGVaGNaGRaGWaGOaGMaGIaGSaGTaGJaGKaGVaGLaGiaGHaFWaGWaGNaGUaJBaINaIXaIPaIZaIRaGPaGVaGKaGRaGMaGTaGOaINaIQaILaIWaIPaJdaGIaGRaGJaGkaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGjaGhaGdaGfaGkaFYaGaaFXaGjaGcaGgaGbaGiaFWaGeaFZaGaaFYaGgaGdaGfaFXaGbaGkaFWaGcaFZaGHaGfaGIaGJaGKaIHaIfaHPaIIaIkaIaaIqaIhaIEaIxaIgaIFaHPaIfaIqaHVaICaIIaIhaGLaGUaGQaFXaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGVaGTaGOaGRaGWaGJaGLaGIaGVaGNaGSaGMaGUaGPaGQaGKaGLaGJaGSaGOaGRaGIaGMaGWaGPaGNaGKaGHaGiaGLaGQaGTaGOaGVaGJaGNaGRaGMaGUaGPaGWaGKaGSaGIaGJaGVaGUaGQaGTaGNaGPaGOaGKaGMaGaaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGSaGWaGNaGUaGIaGQaGOaGLaGSaGJaGPaGVaGKaGRaGMaGTaGOaGQaGPaGNaGUaGLaGVaGIaGRaGJaGTaGHaFZaGOaGMaGWaGNaGSaGQaGJaGUaGVaGKaGRaGIaGTaGPaGLaGQaGSaGKaGMaGWaGJaGRaGNaGTaGVaGdaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGPaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaGSaGTaGUaGVaGWaGNaGMaGRaGJaGKaGOaGSaGLaGUaGQaGWaGHaGhaGNaGVaGIaGJaGPaGMaGQaGKaGSaGTaGUaGLaGWaGRaGOaGMaGPaGTaGVaGIaGQaGUaGJaGWaGSaGcaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGRaGLaGQaGTaGOaGVaGJaGNaGRaGMaGUaGPaGWaGKaGSaGIaGJaGVaGUaGQaGTaGNaGPaGOaGKaGMaGIaGHaGkaGJaGSaGLaGQaGRaGVaGMaGTaGPaGWaGKaGOaGIaGUaGNaGVaGRaGWaGSaGLaGMaGKaGQaGIaGPaFYaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGUaGOaGMaGWaGNaGSaGQaGJaGUaGVaGKaGRaGIaGTaGPaGLaGQaGSaGKaGMaGWaGJaGRaGNaGTaGVaGLaGHaFXaGQaGPaGOaGMaGUaGSaGVaGWaGRaGIaGTaGNaGLaGKaGJaGSaGUaGIaGPaGOaGVaGTaGMaGLaGRaGeaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGKaGNaGVaGIaGJaGPaGMaGQaGKaGSaGTaGUaGLaGWaGRaGOaGMaGPaGTaGVaGIaGQaGUaGJaGWaGSaGOaGHaGaaGjaGiaFYaGgaGhaGfaFWaGaaFZaGdaFXaGeaGcaGkaGbaGfaGhaGdaGiaFYaFWaFXaGgaGcaFZaGbaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGTaGJaGSaGLaGQaGRaGVaGMaGTaGPaGWaGKaGOaGIaGUaGNaGVaGRaGWaGSaGLaGMaGKaGQaGIaGPaGNaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGTaGUaGVaGWaGXaGYaGZaHaaGTaHbaHcaHdaHeaHfaHgaHhaGZaGYaHcaGVaGWaHaaHdaGXaHfaHbaHhaHiaHjaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHpaHqaHraHsaHtaHuaHvaHwaHxaHyaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHcaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHPaHQaHRaHSaHTaHKaHJaHOaHGaHHaHLaHPaHIaHRaHNaGUaHmaHnaHoaHUaHVaHWaHXaHtaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHCaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHfaHIaHNaHQaHLaHSaHGaHKaHOaHJaHRaHMaHTaHHaHPaHFaHGaHSaHRaHNaHQaHKaHMaHLaHHaHJaGXaHjaHkaHlaHmaHnaHoaHUaHqaHWaHXaIbaHYaHZaIaaHiaHjaHkaHkaHlaHmaHnaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHzaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGWaHLaHJaHTaHKaHPaHNaHGaHRaHSaHHaHOaHFaHQaHMaHIaHNaHPaHHaHJaHTaHGaHOaHKaHQaHSaHaaHUaHVaHWaHXaIbaHYaHZaHwaHiaHjaHkaHlaHmaHnaHoaHUaHVaHoaHUaHVaHWaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHqaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHeaHKaHSaHFaHGaHMaHJaHNaHHaHPaHQaHRaHIaHTaHOaHLaHJaHMaHQaHSaHFaHNaHRaHGaHTaHPaGZaHZaIaaHiaHjaHkaHlaHmaHCaHoaHUaHVaHWaHXaIbaHYaHZaIaaHlaHmaHnaHoaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaHwaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHhaHGaHPaHIaHNaHOaHSaHJaHQaHMaHTaHHaHLaHFaHRaHKaHSaHOaHTaHPaHIaHJaHHaHNaHFaHMaGVaHUaHVaHWaHXaIbaHYaHZaHwaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHqaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGUaHNaHMaHLaHJaHRaHPaHSaHTaHOaHFaHQaHKaHIaHHaHGaHPaHRaHFaHMaHLaHSaHQaHJaHIaHOaHbaHkaHlaHmaHnaHoaHUaHVaHraHXaIbaHYaHZaIaaHiaHjaHkaHlaHiaHjaHkaHlaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHAaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGXaHJaHOaHKaHSaHHaHMaHPaHFaHRaHIaHTaHGaHLaHQaHNaHMaHHaHIaHOaHKaHPaHTaHSaHLaHRaGYaIbaHYaHZaIaaHiaHjaHkaHAaHmaHnaHoaHUaHVaHWaHXaIbaIcaIdaIeaIfaIgaIhaHlaHmaHnaHoaHUaHVaHWaHXaIbaHuaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHaaHSaHRaHGaHPaHQaIiaHMaHIaIjaIkaIlaImaInaIoaIpaIqaIraHLaHRaIsaHMaHFaHPaHKaHHaHgaIaaHiaHjaHkaHlaHmaHnaHDaHUaHVaHWaHXaIbaHYaHZaIaaIeaItaIuaIvaIwaIxaHoaHUaHVaHWaHXaIbaHYaHZaIaaHxaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGZaHPaHHaHNaHMaIyaHRaHOaHLaInaIzaIAaIBaICaIDaIEaIFaIGaHKaHHaHNaIiaHIaHMaHGaHQaHdaHWaHXaIbaHYaHZaIaaHiaHyaHkaHlaHmaHnaHoaHUaHVaHWaIHaIIaIJaIKaItaILaHjaHkaHlaHmaHnaHoaHUaHVaHWaHsaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGVaHMaHQaHJaHOaHFaHHaHRaIMaIEaIFaINaIOaIPaIBaIAaIQaIRaISaHQaHJaHRaHLaHOaHNaHTaGTaHlaHmaHnaHoaHUaHVaHWaHsaIbaHYaHZaIaaHiaHjaHkaHlaIdaIJaIKaItaIuaITaHXaIbaHYaHZaIaaHiaHjaHkaHlaHBaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHbaHOaHTaHSaHRaHIaHQaHHaISaIAaIQaIUaIzaIVaIOaINaIWaIDaIXaHTaHSaHHaHKaHRaHJaHFaHcaHVaHWaHXaIbaHYaHZaIaaHxaHjaHkaHlaHmaHnaHoaHUaHVaIYaIZaJaaJbaIdaJaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHraHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGYaHRaHFaHPaHHaHLaHTaHQaIXaINaIWaIRaIFaIEaIzaIUaICaIBaJcaHFaHPaHQaHGaHHaHSaHIaHfaHjaHkaHlaHmaHnaHoaHUaHqaHWaHXaIbaHYaHZaIaaHiaHjaHnaHlaHmaHnaHoaHXaHVaHWaHXaIbaHYaHZaIaaHiaHjaHzaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHgaHHaHIaHMaHQaHKaHFaHTaJcaIUaICaIDaIQaIAaIFaIRaIPaIOaJdaHIaHMaHTaHNaHQaHPaHLaGWaHnaHoaHUaHVaHWaHXaIbaHuaHZaIaaHiaHjaHkaHlaHmaHnaHkaHWaHXaIbaHYaHUaHYaHZaIaaHiaHjaHkaHlaHmaHnaHDaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHdaHQaHLaHOaHTaHGaHIaHFaJdaIRaIPaIBaIWaINaIQaIDaIVaIzaJeaHLaHOaHFaHJaHTaHMaHKaHeaHXaIbaHYaHZaIaaHiaHjaHzaHlaHmaHnaHoaHUaHVaHWaHXaIZaIcaJfaIYaJgaIfaHkaHlaHmaHnaHoaHUaHVaHWaHXaHtaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGTaHTaHKaHRaHFaHNaHLaHIaJeaIDaIVaIOaICaIUaIWaIBaIEaIFaJhaHKaHRaHIaHSaHFaHOaHGaHhaHYaHZaIaaHiaHjaHkaHlaHBaHnaHoaHUaHVaHWaHXaIbaHYaIfaJiaJjaJkaJlaJmaHmaHnaHoaHUaHVaHWaHXaIbaHYaHvaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHcaHFaHGaHHaHIaHJaHKaHLaJhaIBaIEaIzaIPaIRaICaIOaIAaIQaJnaHGaHHaHLaHPaHIaHRaHNaGUaHoaHUaHVaHWaHXaIbaHYaHvaIaaHiaHjaHkaHlaHmaHnaHoaJoaJpaJqaJraJsaJtaHZaIaaHiaHjaHkaHlaHmaHnaHoaHpaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHfaHIaHNaHQaHLaHSaHGaHKaJnaIOaIAaIFaIVaIDaIPaIzaINaIWaJuaHNaHQaHKaHMaHLaHHaHJaGXaIbaHYaHZaIaaHiaHjaHkaHAaHmaHnaHoaHUaHVaHWaHXaIbaJaaJvaJwaJxaJpaJyaHlaHmaHnaHoaHUaHVaHWaHXaIbaHuaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGWaHLaHJaHTaHKaHPaHNaHGaJuaIzaINaIQaIEaIBaIVaIFaIUaICaJzaHJaHTaHGaHOaHKaHQaHSaHaaHkaHlaHmaHnaHoaHUaHVaHraHXaIbaHYaHZaIaaHiaHjaHkaIgaJoaJAaIcaJfaIYaHWaHXaIbaHYaHZaIaaHiaHjaHkaHAaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHeaHKaHSaHFaHGaHMaHJaHNaJzaIFaIUaIWaIAaIOaIEaIQaIRaIPaJBaHSaHFaHNaHRaHGaHTaHPaGZaHWaHXaIbaHYaHZaIaaHiaHyaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHsaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHhaHGaHPaHIaHNaHOaHSaHJaJBaIQaIRaICaINaIzaIAaIWaIDaIVaJCaHPaHIaHJaHHaHNaHFaHMaGVaHmaHnaHoaHUaHVaHWaHXaHtaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHCaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGUaHNaHMaHLaHJaHRaHPaHSaJCaIWaIDaIPaIUaIFaINaICaIBaIEaJDaHMaHLaHSaHQaHJaHIaHOaHbaIaaHiaHjaHkaHlaHmaHnaHDaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHxaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGXaHJaHOaHKaHSaHHaHMaHPaJDaICaIBaIVaIRaIQaIUaIPaIOaIAaJEaHOaHKaHPaHTaHSaHLaHRaGYaHYaHZaIaaHiaHjaHkaHlaHBaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHvaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHaaHSaHRaHGaHPaHQaHOaHMaJEaIPaIOaIEaIDaIWaIRaIVaIzaINaJFaHRaHGaHMaHFaHPaHKaHHaHgaHnaHoaHUaHVaHWaHXaIbaHuaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHDaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGZaHPaHHaHNaHMaHTaHRaHOaJFaIVaIzaIAaIBaICaIDaIEaIFaIUaIMaHHaHNaHOaHIaHMaHGaHQaHdaHVaHWaHXaIbaHYaHZaIaaHxaHjaHkaHlaHmaHnaHoaHUaHVaHWaHXaIbaHYaHZaIaaHiaHjaHkaHlaHmaHnaHoaHUaHVaHraHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGVaHMaHQaHJaHOaHFaHHaHRaIMaIEaIFaINaIOaIPaIBaIAaIQaIRaISaHQaHJaHRaHLaHOaHNaHTaGTaHlaHmaHnaHoaHUaHVaHWaHsaHtaHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHpaHqaHraHsaHtaHuaHvaHwaHxaHyaHzaHAaHBaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHbaHOaHTaHSaHRaHIaHQaHHaISaIAaIQaIUaIzaIVaIOaINaIWaIDaIXaHTaHSaHHaHKaHRaHJaHFaHcaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGYaHRaHFaHPaHHaHLaHTaHQaIXaINaIWaIRaIFaIEaIzaIUaICaIBaJcaHFaHPaHQaHGaHHaHSaHIaHfaHEaGTaGUaGVaGWaGXaGYaGZaHaaGTaHbaHcaHdaHeaHfaHgaHhaGZaGYaHcaGVaGWaHaaHdaGXaHfaHbaHhaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHgaHHaHIaHMaHQaHKaHFaHTaJcaIUaICaIDaIQaIAaIFaIRaIPaIOaJdaHIaHMaHTaHNaHQaHPaHLaGWaHEaHcaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHPaHQaHRaHSaHTaHKaHJaHOaHGaHHaHLaHPaHIaHRaHNaGUaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHdaHQaHLaHOaHTaHGaHIaHFaJdaIMaIRaINaIOaIDaIAaIzaICaISaJeaHLaHOaHFaHJaHTaHMaHKaHeaHEaHfaHIaHNaHQaHLaHSaHGaHKaHOaHJaHRaHMaHTaHHaHPaHFaHGaHSaHRaHNaHQaHKaHMaHLaHHaHJaGXaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGTaHTaHKaHRaHFaHNaHLaHIaHPaISaJhaJdaJzaJnaJcaJBaJFaIXaHMaHKaHRaHIaHSaHFaHOaHGaHhaHEaGWaHLaHJaHTaHKaHPaHNaHGaHRaHSaHHaHOaHFaHQaHMaHIaHNaHPaHHaHJaHTaHGaHOaHKaHQaHSaHaaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHcaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHPaHQaHRaHSaHTaHKaHJaHOaHGaHHaHLaHPaHIaHRaHNaGUaHEaHeaHKaHSaHFaHGaHMaHJaHNaHHaHPaHQaHRaHIaHTaHOaHLaHJaHMaHQaHSaHFaHNaHRaHGaHTaHPaGZaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHfaHIaHNaHQaHLaHSaHGaHKaHOaHJaHRaHMaHTaHHaHPaHFaHGaHSaHRaHNaHQaHKaHMaHLaHHaHJaGXaHEaHhaHGaHPaHIaHNaHOaHSaHJaHQaHMaHTaHHaHLaHFaHRaHKaHSaHOaHTaHPaHIaHJaHHaHNaHFaHMaGVaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGWaHLaHJaHTaHKaHPaHNaHGaHRaHSaHHaHOaHFaHQaHMaHIaHNaHPaHHaHJaHTaHGaHOaHKaHQaHSaHaaHEaGUaHNaHMaHLaHJaHRaHPaHSaHTaHOaHFaHQaHKaHIaHHaHGaHPaHRaHFaHMaHLaHSaHQaHJaHIaHOaHbaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHeaHKaHSaHFaHGaHMaHJaHNaHHaHPaHQaHRaHIaHTaHOaHLaHJaHMaHQaHSaHFaHNaHRaHGaHTaHPaGZaHEaGXaHJaHOaHKaHSaHHaHMaHPaHFaHRaHIaHTaHGaHLaHQaHNaHMaHHaHIaHOaHKaHPaHTaHSaHLaHRaGYaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHhaHGaHPaHIaHNaHOaHSaHJaHQaHMaHTaHHaHLaHFaHRaHKaHSaHOaHTaHPaHIaHJaHHaHNaHFaHMaGVaHEaHaaHSaHRaHGaHPaHQaHOaHMaJGaIjaIkaIlaImaInaIoaIpaIqaIraJHaHRaHGaHMaHFaHPaHKaHHaHgaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGUaHNaHMaHLaHJaHRaHPaHSaHTaHOaHFaHQaHKaHIaHHaHGaHPaHRaHFaHMaHLaHSaHQaHJaHIaHOaHbaHEaGZaHPaHHaHNaHMaHTaHRaHOaJHaJIaJJaJKaJLaJMaJNaJOaJPaJQaJRaHHaHNaHOaHIaHMaHGaHQaHdaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGXaHgaHfaGVaHdaHeaHcaGTaGXaGWaHaaGUaHbaGZaHhaGYaHcaHeaHaaHfaGVaGTaGUaHdaGZaGWaGYaHEaGVaHMaHQaHJaHOaHFaHHaHRaJRaJOaJPaJSaJTaJUaJLaJKaJVaJWaIsaHQaHJaHRaHLaHOaHNaHTaGTaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHaaHSaHRaHGaHPaHQaHOaHMaHIaHHaHLaHFaHNaHKaHTaHJaHOaHQaHLaHRaHGaHMaHFaHPaHKaHHaHgaHEaHbaHOaHTaHSaHRaHIaHQaHHaIsaJKaJVaJQaJJaJIaJTaJSaJXaJNaJYaHTaHSaHHaHKaHRaHJaHFaHcaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGZaHPaHHaHNaHMaHTaHRaHOaHLaHQaHKaHIaHJaHGaHFaHSaHRaHTaHKaHHaHNaHOaHIaHMaHGaHQaHdaHEaGYaHRaHFaHPaHHaHLaHTaHQaJYaJSaJXaJWaJPaJOaJJaJQaJMaJLaJZaHFaHPaHQaHGaHHaHSaHIaHfaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGVaHMaHQaHJaHOaHFaHHaHRaHKaHTaHGaHLaHSaHNaHIaHPaHHaHFaHGaHQaHJaHRaHLaHOaHNaHTaGTaHEaHgaHHaHIaHMaHQaHKaHFaHTaJZaJQaJMaJNaJVaJKaJPaJWaJUaJTaKaaHIaHMaHTaHNaHQaHPaHLaGWaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHbaHOaHTaHSaHRaHIaHQaHHaHGaHFaHNaHKaHPaHJaHLaHMaHQaHIaHNaHTaHSaHHaHKaHRaHJaHFaHcaHEaHdaHQaHLaHOaHTaHGaHIaHFaKaaHPaHLaJLaJXaJSaJVaJNaHKaHHaKbaHLaHOaHFaHJaHTaHMaHKaHeaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGYaHRaHFaHPaHHaHLaHTaHQaHNaHIaHJaHGaHMaHSaHKaHOaHTaHLaHJaHFaHPaHQaHGaHHaHSaHIaHfaHEaGTaHTaHKaHRaHFaImaIkaKcaKdaKeaInaJTaJMaJQaJXaJLaHGaHQaKfaHKaHRaHIaHSaHFaHOaHGaHhaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHgaHHaHIaHMaHQaHKaHFaHTaHJaHLaHSaHNaHOaHPaHGaHRaHFaHKaHSaHIaHMaHTaHNaHQaHPaHLaGWaHEaHcaHFaHGaHHaHIaJZaJIaJUaJNaJLaJOaJJaJUaJWaJMaJTaHNaHTaIiaHGaHHaHLaHPaHIaHRaHNaGUaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHdaHQaHLaHOaHTaHGaHIaHFaHSaHKaHPaHJaHRaHMaHNaHHaHIaHGaHPaHLaHOaHFaHJaHTaHMaHKaHeaHEaHfaHIaHNaHQaHLaKaaJOaJIaJLaJTaJKaJPaJIaJNaJUaJJaIraIraIraIraKgaHKaHMaHLaHHaHJaGXaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGTaHTaHKaHRaHFaHNaHLaHIaKhaKiaKeaIGaKjaHOaKkaKlaIkaKmaKnaHKaHRaHIaHSaHFaHOaHGaHhaHEaGWaHLaHJaHTaHKaKbaJKaJOaJTaJJaJSaJVaJOaJLaJIaJPaJQaJMaJJaJSaIyaHGaHOaHKaHQaHSaHaaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHcaHFaHGaHHaHIaHJaHKaHLaKoaKpaKqaKraKsaHLaKtaKuaKvaKwaKxaHOaHHaHLaHPaHIaHRaHNaGUaHEaHeaHKaHSaHFaHGaKfaJSaJKaJJaJPaJQaJXaJKaJTaJOaJVaJWaJUaJPaJQaKyaHNaHRaHGaHTaHPaGZaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHfaHIaHNaHQaHLaHSaHGaHKaKxaKzaKAaKBaKCaHKaKDaKEaKFaKGaKHaHRaHQaHKaHMaHLaHHaHJaGXaHEaHhaHGaHPaHIaHNaIiaJQaJSaJPaJVaJWaJMaJSaJJaJKaJXaJNaJIaJVaJWaJGaHJaHHaHNaHFaHMaGVaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGWaHLaHJaHTaHKaHPaHNaHGaKHaKIaKJaKqaKkaHGaKoaKKaKLaKMaKNaHHaHTaHGaHOaHKaHQaHSaHaaHEaGUaHNaHMaHLaJZaKOaJWaJQaJVaJXaJNaJUaJQaJPaJSaJMaJLaJOaJXaJNaKPaIGaKgaHJaHIaHOaHbaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHeaHKaHSaHFaHGaHMaHJaHNaKNaKraKQaKAaKRaHNaKxaKSaKwaKTaKsaHQaHFaHNaHRaHGaHTaHPaGZaHEaGXaHJaHOaHKaKaaJJaJNaJWaJXaJMaJLaJIaJWaJVaJQaJUaJTaJKaJMaJLaJIaJWaIyaHSaHLaHRaGYaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHhaHGaHPaHIaHNaHOaHSaHJaKsaKoaKCaKNaKhaHJaKHaKnaKtaKxaKCaHTaHIaHJaHHaHNaHFaHMaGVaHEaHaaHSaHRaHGaKbaJPaJLaJNaJMaJUaJTaJOaJNaJXaJWaJIaJJaJSaJUaJTaJOaJNaKyaHPaHKaHHaHgaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGUaHNaHMaHLaHJaHRaHPaHSaHNaHIaHJaHGaHMaHSaHKaHOaHTaHLaHJaHFaHLaHSaHQaHJaHIaHOaHbaHEaGZaHPaHHaHNaKfaJVaJTaJLaJUaJIaJJaJKaJLaJMaJNaJOaJPaJQaJIaJJaJKaJLaJGaHMaHGaHQaHdaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGXaHJaHOaHKaHSaHHaHMaHPaHFaHRaHIaHTaHGaHLaHQaHNaHMaHHaHIaHOaHKaHPaHTaHSaHLaHRaGYaHEaGVaHMaHQaHJaIiaJXaJJaJTaJIaJOaJPaJSaJTaJUaJLaJKaJVaJWaJOaJPaJSaJTaJHaHOaHNaHTaGTaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHaaHSaHRaHGaHPaHQaHOaHMaHIaHHaHLaHFaHNaHKaHTaHJaHOaHQaHLaHRaHGaHMaHFaHPaHKaHHaHgaHEaHbaHOaHTaHSaKUaJMaJPaJJaJOaJKaJVaJQaJJaJIaJTaJSaJXaJNaJKaJVaJQaJJaJRaHRaHJaHFaHcaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGZaHPaHHaHNaHMaHTaHRaHOaHLaHQaHKaHIaHJaHGaHFaHSaHRaHTaHKaHHaHNaHOaHIaHMaHGaHQaHdaHEaGYaHRaHFaHPaKVaJUaJVaJPaJKaJSaJXaJWaJPaJOaJJaJQaJMaJLaJSaJXaJWaJPaIsaHHaHSaHIaHfaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGVaHMaHQaHJaHOaHFaHHaHRaHKaHTaHGaHLaHSaHNaHIaHPaHHaHFaHGaHQaHJaHRaHLaHOaHNaHTaGTaHEaHgaHHaHIaHMaKgaJIaJXaJVaJSaJQaHIaJNaJVaJKaJPaJWaHLaJTaJQaJMaJNaJVaJYaHQaHPaHLaGWaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHbaHOaHTaHSaHRaHIaHQaHHaHGaHFaHNaHKaHPaHJaHLaHMaHQaHIaHNaHTaHSaHHaHKaHRaHJaHFaHcaHEaHdaHQaHLaHOaIyaJOaJMaJXaJQaJIaHPaJSaJTaJNaJKaJJaHIaJOaJWaJUaJLaJXaJZaHTaHMaHKaHeaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aGYaHRaHFaHPaHHaHLaHTaHQaHNaHIaHJaHGaHMaHSaHKaHOaHTaHLaHJaHFaHPaHQaHGaHHaHSaHIaHfaHEaGTaHTaHKaHRaKyaJKaJUaJMaJWaJOaHMaHSaHHaHOaHJaHQaHLaJKaJNaJIaJTaJMaKaaHFaHOaHGaHhaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHgaHeaHaaHcaHhaGVaGXaGUaHgaGZaHdaGYaHfaGTaHbaGWaGXaGVaHdaHaaHcaGUaGYaHhaGTaGZaGWaHEaHcaHFaHGaHHaJEaJcaIMaJFaJhaIXaJnaJeaJBaJuaJdaJCaIMaJcaJnaISaJzaJFaJeaHIaHRaHNaGUaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHSaHQaHLaHOaHTaHGaHIaHFaHSaHKaHPaHJaHRaHMaHNaHHaHIaHGaHPaHLaHOaHFaHJaHTaHMaHKaHHaHEaHfaHIaHNaHQaHLaHSaHGaHKaHOaHJaHRaHMaHTaHHaHPaHFaHGaHSaHRaHNaHQaHKaHMaHLaHHaHJaGXaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHPaHTaHKaHRaHFaHNaHLaHIaHPaHGaHMaHSaHHaHOaHJaHQaHLaHNaHMaHKaHRaHIaHSaHFaHOaHGaHQaHEaGWaHLaHJaHTaHKaHPaHNaHGaHRaHSaHHaHOaHFaHQaHMaHIaHNaHPaHHaHJaHTaHGaHOaHKaHQaHSaHaaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHMaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHPaHQaHRaHSaHTaHKaHJaHOaHGaHHaHLaHPaHIaHRaHNaHTaHEaHeaHKaHSaHFaHGaHMaHJaHNaHHaHPaHQaHRaHIaHTaHOaHLaHJaHMaHQaHSaHFaHNaHRaHGaHTaHPaGZaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHOaHIaHNaHQaHLaHSaHGaHKaHOaHJaHRaHMaHTaHHaHPaHFaHGaHSaHRaHNaHQaHKaHMaHLaHHaHJaHFaHEaHhaHGaHPaHIaHNaHOaHSaHJaHQaHMaHTaHHaHLaHFaHRaHKaHSaHOaHTaHPaHIaHJaHHaHNaHFaHMaGVaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHRaHLaHJaHTaHKaHPaHNaHGaHRaHSaHHaHOaHFaHQaHMaHIaHNaHPaHHaHJaHTaHGaHOaHKaHQaHSaHIaHEaGUaHNaHMaHLaHJaHRaHPaHSaHTaHOaHFaHQaHKaHIaHHaHGaHPaHRaHFaHMaHLaHSaHQaHJaHIaHOaHbaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHHaHKaHSaHFaHGaHMaHJaHNaHHaHPaHQaHRaHIaHTaHOaHLaHJaHMaHQaHSaHFaHNaHRaHGaHTaHPaHLaHEaGXaHgaHfaGVaHdaHeaHcaGTaGXaGWaHaaGUaHbaGZaHhaGYaHcaHeaHaaHfaGVaGTaGUaHdaGZaGWaGYaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHQaHGaHPaHIaHNaHOaHSaHJaHQaHMaHTaHHaHLaHFaHRaHKaHSaHOaHTaHPaHIaHJaHHaHNaHFaHMaHKaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaHEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2862,21 +2911,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaKaaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aKbaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKXaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aKYaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2896,99 +2945,99 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKcaKcaKcaaaaKdaKdaKdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKcaKcaKcaaaaKdaKdaKdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKcaKcaKcaaaaKdaKdaKdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKeaKfaKgaKhaKiaKcaKcaKcaaaaKdaKdaKdaKeaKfaKgaKhaKiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKkaKkaKkaKlaKmaKnaKoaKpaKmaKnaKoaKqaKkaKkaKkaKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKraKraKsaKtaKuaKvaKwaKxaKyaKvaKuaKzaKAaKraKraKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKraKraKBaKCaKCaKvaKCaKCaKCaKvaKCaKCaKBaKraKraKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKDaKAaKraKEaKCaKvaKvaKvaKvaKvaKvaKvaKCaKEaKraKsaKFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKDaKpaKGaKHaKIaKJaKKaKvaKLaKMaKvaKNaKOaKpaKFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKPaKQaKRaKSaKvaKCaKCaKvaKNaKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKTaKUaKUaKKaKvaKNaKVaKvaKNaKBaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaKXaKUaKUaKYaKvaKNaKVaKvaKvaKnaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKlaKpaKpaKpaKGaKvaKCaKCaKvaKNaKZaKWaKWaKWaKWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLaaKvaLaaKjaKvaKNaKVaKvaKNaLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLaaKvaLaaKBaKvaKNaKVaKvaKNaKZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLaaKvaKvaLcaKvaKvaKvaKvaKvaKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLaaKvaLaaLdaKvaKCaKCaKCaKCaLdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLaaKvaLaaKjaKvaLeaLfaLgaKuaKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLhaLhaLhaLhaLhaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKDaLiaLiaKpaLjaLkaKoaKpaLiaLiaKFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLlaLlaLlaLlaLlaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKDaKqaLmaKNaKvaLnaLoaKlaKFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLlaLpaLpaLpaLpaLpaLlaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLgaKCaLqaKCaLmaKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLraLsaLtaLtaLtaLsaLuaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKjaLvaLwaLxaLyaLzaKjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLAaLBaLCaLCaLCaLDaLEaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKDaLFaLGaLGaLGaLHaKFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLIaLCaLCaLCaLCaLCaLJaLKaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLIaLCaLCaLCaLCaLCaLIaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLIaLCaLCaLCaLCaLCaLIaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLIaLCaLCaLCaLCaLCaLIaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLIaLCaLCaLCaLCaLCaLJaLKaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLLaLMaLMaLMaLMaLMaLNaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLlaLlaLlaLlaLlaLlaLlaLlaLlaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLhaLhaLhaLhaLhaLhaLhaLhaLhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKZaKZaKZaaaaLaaLaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKZaKZaKZaaaaLaaLaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKZaKZaKZaaaaLaaLaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLbaLcaLdaLeaLfaKZaKZaKZaaaaLaaLaaLaaLbaLcaLdaLeaLfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLhaLhaLhaLiaLjaLkaLlaLmaLjaLkaLlaLnaLhaLhaLhaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLoaLoaLpaLqaLraLsaLtaLuaLvaLsaLraLwaLxaLoaLoaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLoaLoaLyaLzaLzaLsaLzaLzaLzaLsaLzaLzaLyaLoaLoaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLAaLxaLoaLBaLzaLsaLsaLsaLsaLsaLsaLsaLzaLBaLoaLpaLCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLAaLmaLDaLEaLFaLGaLHaLsaLIaLJaLsaLKaLLaLmaLCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLMaLNaLOaLPaLsaLzaLzaLsaLKaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLQaLRaLRaLHaLsaLKaLSaLsaLKaLyaLTaLTaLTaLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLUaLRaLRaLVaLsaLKaLSaLsaLsaLkaLTaLTaLTaLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLiaLmaLmaLmaLDaLsaLzaLzaLsaLKaLWaLTaLTaLTaLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLXaLsaLXaLgaLsaLKaLSaLsaLKaLYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLXaLsaLXaLyaLsaLKaLSaLsaLKaLWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLXaLsaLsaLZaLsaLsaLsaLsaLsaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLXaLsaLXaMaaLsaLzaLzaLzaLzaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaLXaLsaLXaLgaLsaMbaMcaMdaLraLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMeaMeaMeaMeaMeaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLAaMfaMfaLmaMgaMhaLlaLmaMfaMfaLCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMiaMiaMiaMiaMiaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLAaLnaMjaLKaLsaMkaMlaLiaLCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMiaMmaMmaMmaMmaMmaMiaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaMdaLzaMnaLzaMjaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMoaMpaMqaMqaMqaMpaMraMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLgaMsaMtaMuaMvaMwaLgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMxaMyaMzaMzaMzaMAaMBaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLAaMCaMDaMDaMDaMEaLCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMFaMzaMzaMzaMzaMzaMGaMHaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMFaMzaMzaMzaMzaMzaMFaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMFaMzaMzaMzaMzaMzaMFaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMFaMzaMzaMzaMzaMzaMFaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMFaMzaMzaMzaMzaMzaMGaMHaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMIaMJaMJaMJaMJaMJaMKaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMiaMiaMiaMiaMiaMiaMiaMiaMiaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMeaMeaMeaMeaMeaMeaMeaMeaMeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLOaLOaLPaLOaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLOaLOaLQaLRaLSaLOaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaaaaaaaaaaLOaLUaLVaLRaLWaLXaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaaaaaaaaaaLOaLZaLRaLRaLRaMaaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaaaaaaaaaaLOaMbaLRaLRaLRaMcaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaLYaLTaaaaaaaaaaLOaMbaLRaLRaLRaMcaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMdaMeaMfaMfaMfaMgaMhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaLTaaaaaaaaaaLOaLOaMiaLOaLOaMjaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMdaMkaMlaMmaMnaMmaMoaMpaMhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLOaMqaMraMsaMqaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMtaMuaMvaMwaMwaMwaMxaMyaMtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLOaMzaMAaMBaMqaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMtaMCaMvaMwaMwaMDaMxaMEaMtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaMFaMFaMFaMFaaaaaaaLOaMqaMraMGaMHaLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMIaMJaMJaMKaMLaMJaMJaMJaMMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaMNaMOaMPaMFaLhaLOaLOaMQaLOaLOaLOaLOaLOaMRaMRaMRaMRaMRaMRaaaaaaaaaaMtaMSaMTaMTaMwaMTaMTaMSaMtaaaaaaaMRaMRaMRaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaMUaMVaMVaMFaMWaMXaLRaMYaMYaMYaMYaMXaMZaMRaNaaNaaNaaNaaMRaMRaaaaaaaMtaNbaMwaMwaMwaMwaMwaNcaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaMFaNeaMFaMFaMZaNfaLRaNgaNhaNiaMYaNfaMZaMRaNjaNkaNkaNkaNlaMRaMRaMRaMtaNbaMwaNcaNmaNbaMwaNcaMtaNkaNkaNlaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNoaNpaNqaNraMFaMZaNfaNsaLRaLRaLRaNtaNfaMZaMRaNuaNdaNdaNvaNdaNdaNdaMRaMtaMwaMwaNcaNwaNbaMwaMwaNxaNyaNzaNyaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNnaNBaNCaNDaNBaNCaNCaNCaNEaNCaNCaNFaNGaNHaNpaNqaNraMFaMZaNfaMbaLRaLRaLRaMcaNIaMZaMRaNuaNdaNdaNvaNdaNdaNdaMRaMtaNbaMwaNcaNJaNbaMwaNcaMtaNjaNkaNlaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaNKaNKaNLaNKaNKaNKaNMaNNaNKaNKaNKaNMaNKaNKaNKaNKaNKaNKaNMaNKaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNBaNOaNPaNQaNRaNSaNSaNSaNSaNSaNSaNTaNUaNVaNpaNqaNraMFaMZaNIaMbaLRaLRaLRaLWaLOaMraMRaNWaNdaNdaNvaNdaNdaNdaNXaNwaNbaMwaNcaNYaNbaMwaNZaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNLaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNMaNKaNKaNKaNKaNKaNMaNKaNKaNKaNKaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNEaNPaOaaNPaObaNPaNPaNPaNPaNPaNPaObaOcaNnaNqaNqaOdaMFaOeaMFaLVaLRaLRaLRaLRaLRaLRaNdaNdaNdaNdaNvaNdaNdaNdaOfaOgaNbaMwaNcaNwaNbaMwaNcaOhaaaaaaaOiaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaOjaNKaNKaNKaNKaNKaNLaNKaNKaNNaNMaNKaNKaNMaNKaNKaNMaNNaNKaNMaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaOkaOlaNPaOmaNRaOnaOnaOnaOnaOnaOnaNTaNUaOoaNpaNqaNqaOpaNqaNqaLRaLRaLRaLRaLRaLRaLRaNdaNdaNdaNdaNvaNdaNdaNdaOqaNJaNbaMwaNcaNJaNbaMwaNcaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNLaNKaNKaNMaNNaNKaNKaNMaNKaNNaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNnaOkaNCaOraOkaNCaNCaNCaNEaNCaNCaOsaNGaNHaNpaNqaOtaMFaOeaMFaNsaLRaLRaLRaNtaLOaMraMRaOuaNdaNdaNvaNdaNdaNdaMRaMtaNbaMwaNcaOvaNbaMwaNcaMtaNjaNkaNlaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNLaNKaNKaNKaNKaNKaNNaNKaNMaNNaNKaNMaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMFaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaNnaOwaNpaNqaNraMFaMZaMXaLZaLRaLRaLRaMaaMXaMZaMRaNuaNdaNdaNvaNdaNdaNdaMRaMtaMwaMwaMwaMwaMwaMwaMwaNxaNyaNzaNyaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaOxaOxaOxaOxaOxaOxaOxaNKaNKaNKaNKaNKaNKaNKaNMaNKaNKaOjaNNaNKaNKaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOzaOyaOyaMZaNfaLZaLRaLRaLRaMaaNfaMZaMRaNjaNlaOAaOBaMRaNdaNdaMRaMtaOCaMeaMgaODaMTaMwaOEaMtaNkaNkaNlaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaOFaOGaOHaOIaOIaOIaOJaOGaOKaNKaNKaNKaNKaOjaNKaOxaNLaOxaNLaNKaNMaNKaNMaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaMZaNIaLZaLRaLRaLRaMaaNIaMZaMRaOLaOLaOLaOLaMRaNdaNdaMRaMtaMTaMTaOMaMtaONaOOaONaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaOGaOPaOQaORaOSaOTaOUaOUaOGaOVaNKaNKaOxaNAaNAaOWaOXaNAaNAaOxaOYaOZaOxaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaPaaPaaPbaPcaPdaPeaPfaPaaPaaMRaOLaOLaOLaOLaMRaNdaNdaMRaMtaMTaMTaPgaMtaPhaPiaPjaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaOGaPkaOQaOQaPlaOQaOQaOQaOGaOVaNKaPmaNAaNAaPnaPoaPoaPnaNAaNAaNAaNAaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaPpaPqaPraPsaPtaPuaPraPqaPpaMRaPvaPwaPxaPyaMRaNdaNdaMRaMtaPzaMTaOMaPAaPhaPiaPjaMtaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaOGaPBaOQaOQaOQaPCaOQaPDaOGaOVaOjaPmaNAaPEaPEaPEaPEaPEaPEaPEaPEaNAaPFaPGaPHaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaPqaPIaPJaPsaPtaPuaPJaPKaPqaMRaOLaPLaPMaOLaMRaNdaNdaMRaPNaPOaPPaPPaPPaPPaPPaPOaPQaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaPRaOGaOGaOGaPSaOGaOGaOGaPTaNKaNKaPUaNAaPVaPWaPWaPEaPEaPEaPEaPEaPXaPYaPYaPYaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaPZaPqaPZaPsaPtaPuaPZaPqaPZaMRaOLaOLaOLaOLaMRaNdaNdaMRaaaaPNaQaaQaaQaaQaaQaaPQaaaaaaaaaaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaOGaQbaOQaQcaOGaQdaOxaOxaOxaQeaNAaPEaQfaQgaPWaPEaPEaQhaQiaNAaQjaQkaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaQlaPqaPqaPsaPtaPuaPqaPqaQmaMRaOLaOLaOLaQnaMRaNdaNdaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaOGaOQaOQaOQaOGaQoaQpaQpaOXaNAaNAaPEaQqaQraPWaPEaPEaQhaQsaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaQtaQuaQuaPsaPtaPuaQvaQvaQwaMRaMRaQxaMRaMRaMRaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaOFaOGaOGaOGaOGaOGaOQaOQaOQaOGaQyaQzaQzaQzaQAaQBaPEaPEaPEaPEaPEaPEaQhaQsaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaPaaPaaPaaPaaPtaPaaPaaPaaPaaPaaaaaaaaaaaaaaMRaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaNdaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaOGaPDaOQaOQaQCaOGaOQaOQaOQaOGaQDaQAaOWaOXaNAaNAaPEaPWaPWaPWaPEaPEaQhaQEaNAaQFaQGaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaaPtaPaaaaaaaaaaaaaaaaaaaaaaaaaaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaMRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaOGaPDaOQaQHaQIaOGaOQaOQaOQaOGaOGaQJaQKaOKaQLaNAaQMaQNaQOaQNaQNaPEaPEaPEaQPaQQaQQaQRaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaaPaaPaaPaaPaaPaaPaaPaaPdaPaaPaaPaaPaaPaaPaaPaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaQSaNKaOGaPDaOQaQHaQTaOGaOQaOQaOQaOGaOQaOQaOQaOGaPUaNAaQUaQVaQWaQVaQXaPEaPEaPEaNAaQYaQQaQRaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaaQZaRaaRaaRaaRaaRaaQZaQZaQZaRaaRaaRaaRaaRaaQZaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaOGaPDaOQaOQaOQaRbaOQaOQaOQaRcaOQaOQaOQaOGaPmaNAaNAaQiaRdaReaRfaNAaNAaNAaNAaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRgaQZaQZaQZaRhaQZaQZaQZaQZaQZaQZaQZaRhaQZaQZaQZaRgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaOGaPDaOQaOQaOQaRiaOQaOQaOQaRjaOQaOQaRkaOGaRlaQLaNAaNAaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaaQZaRaaRaaRaaRaaRaaQZaQZaQZaRaaRaaRaaRaaRaaQZaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOFaOGaOGaOGaOGaOGaOGaRmaOQaOQaOGaOGaOGaOGaOGaOGaOKaQLaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaaPeaRoaRoaRoaRoaRoaRoaRoaRoaRoaRoaRoaRoaRoaPcaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaRpaRpaRqaRraRsaOGaOQaOQaOQaOGaRtaRuaRvaRwaRxaOGaPmaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRyaRzaRAaRBaRCaRDaRnaREaRFaRGaRnaaaaaaaRHaRHaRHaRHaRHaRHaRHaRHaRHaRIaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRIaRHaRHaRHaRHaRHaRHaRHaRHaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaOQaOQaOQaOQaOQaRKaOQaOQaOQaRLaOQaOQaOQaOQaRMaOGaPmaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRAaRAaRAaRAaRAaRAaRAaRNaROaRPaRnaaaaaaaRHaRQaRRaRSaRSaRSaRSaRSaRTaRUaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRVaRTaRWaRWaRWaRWaRWaRRaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaRYaOQaOQaOQaOQaRZaOQaOQaOQaSaaOQaOQaOQaOQaSbaOGaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaScaScaRAaRAaRAaSdaRnaSeaSfaSgaRnaaaaaaaRHaRQaRRaRSaShaRSaShaRSaRTaRUaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRVaRTaRWaSiaRWaSiaRWaRRaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaRYaOQaOQaSjaQbaOGaSkaSlaSmaOGaRMaSbaOQaOQaOQaOGaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRAaRAaRAaRAaSnaSnaRnaRnaSoaRnaRnaaaaaaaRHaRQaRRaRSaRSaSpaRSaRSaRTaRUaRJaRJaRJaRJaRJaSqaSraSqaRJaRJaRJaRJaRJaRVaRTaRWaRWaSsaRWaRWaRRaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaOQaOQaOQaOGaOGaOGaStaSuaOQaOGaOGaOGaOQaOQaOQaOGaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaSvaSvaRAaSwaSxaSyaRnaSzaSoaSAaRnaaaaaaaRHaRQaRRaRSaRSaRSaRSaRSaRTaRUaRJaRJaRJaRJaRJaSqaSBaSqaRJaRJaRJaRJaRJaRVaRTaRWaRWaRWaRWaRWaRRaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaQbaSCaSDaOGaNKaOGaSEaSEaSEaOGaNKaOGaOUaSFaSGaOGaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRAaRAaRAaSwaSHaSIaRnaSJaSoaSKaRnaaaaaaaRHaRQaRRaRSaShaRSaShaRSaRTaRUaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRVaRTaRWaSiaRWaSiaRWaRRaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaOGaSEaSEaSEaOGaNKaPRaSLaSMaSNaPTaNKaOGaSEaSEaSEaOGaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRAaRAaRAaRAaRAaRnaRnaRnaRnaRnaRnaaaaaaaRHaRQaSOaRSaRSaRSaRSaRSaRTaRUaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRVaRTaRWaRWaRWaRWaRWaSOaRXaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaPRaSLaSMaSNaPTaNKaNKaNKaNKaNKaNKaNKaPRaSLaSMaSNaPTaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaSPaSQaSRaRAaRAaSSaSTaSUaSVaSWaRnaaaaaaaRHaRHaRHaSXaSXaSXaSXaSXaRHaRIaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRJaRIaRHaSXaSXaSXaSXaSXaRHaRHaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNKaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaSYaSZaTaaRAaRAaRAaTbaTcaTbaTdaRnaaaaaaaaaaaaaRHaTeaTeaTeaTeaTeaTfaTgaThaThaThaThaThaThaThaThaThaThaThaThaThaTiaTfaTjaTjaTjaTjaTjaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaSZaTkaTaaRAaRAaRAaTlaTmaTlaTmaRnaaaaaaaaaaaaaRHaRHaRHaRHaRHaRHaTfaTnaToaToaToaToaToaTnaTnaTnaToaToaToaToaToaTnaTfaRHaRHaRHaRHaRHaRHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaSYaTpaTqaRAaRAaSSaTraTdaTsaTtaRnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTfaTnaTnaTnaTuaTnaTvaTvaTvaTvaTvaTnaTuaTnaTnaTnaTfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaRnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTfaTfaTwaTfaTfaTfaTfaTxaTyaTzaTfaTfaTfaTfaTwaTfaTfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTfaTfaTAaTfaTfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTfaTfaTfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTBaTCaTDaTEaTEaTCaTFaTGaTHaTIaTJaTKaTLaTKaTKaTKaTMaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTBaTCaTCaTCaTCaTCaTNaTJaTJaTJaTOaTKaTKaTKaTPaTKaTKaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTBaTCaTQaTBaTRaTSaTTaTJaTJaTJaTJaTKaTKaTUaTKaTVaTLaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTWaTJaTOaTOaTOaTOaTOaTJaTJaTJaTJaTKaTKaTKaTXaTKaTKaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTYaTJaTJaTJaTJaTJaTJaTJaTJaTJaTJaTZaTKaTKaTKaTKaTKaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaTYaTJaTJaTJaTJaTJaTJaTJaTJaTOaTJaTZaUaaUaaUaaUbaUaaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaUcaTJaTJaTJaTJaTJaTJaTJaTOaUdaTOaTZaUeaUeaUeaUeaUeaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaOyaUfaUgaUgaUhaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaUiaUiaUiaUiaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaUiaUiaUiaUiaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOyaOyaOyaOyaOyaOyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMLaMLaMMaMLaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMLaMLaMNaMOaMPaMLaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaaaaaaaaaaMLaMRaMSaMOaMTaMUaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaaaaaaaaaaMLaMWaMOaMOaMOaMXaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaaaaaaaaaaMLaMYaMOaMOaMOaMZaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaMVaMQaaaaaaaaaaMLaMYaMOaMOaMOaMZaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaNbaNcaNcaNcaNdaNeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaMQaaaaaaaaaaMLaMLaNfaMLaMLaNgaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaNhaNiaNjaNkaNjaNlaNmaNeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMLaNnaNoaNpaNnaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNqaNraNsaNtaNtaNtaNuaNvaNqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMLaNwaNxaNyaNnaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNqaNzaNsaNtaNtaNAaNuaNBaNqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaNCaNCaNCaNCaaaaaaaMLaNnaNoaNDaNEaMLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNFaNGaNGaNHaNIaNGaNGaNGaNJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaNKaNLaNMaNCaMeaMLaMLaNNaMLaMLaMLaMLaMLaNOaNOaNOaNOaNOaNOaaaaaaaaaaNqaNPaNQaNQaNtaNQaNQaNPaNqaaaaaaaNOaNOaNOaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaNRaNSaNSaNCaNTaNUaMOaNVaNVaNVaNVaNUaNWaNOaNXaNXaNXaNXaNOaNOaaaaaaaNqaNYaNtaNtaNtaNtaNtaNZaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaNCaObaNCaNCaNWaOcaMOaOdaOeaOfaNVaOcaNWaNOaOgaOhaOhaOhaOiaNOaNOaNOaNqaNYaNtaNZaOjaNYaNtaNZaNqaOhaOhaOiaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOlaOmaOnaOoaNCaNWaOcaOpaMOaMOaMOaOqaOcaNWaNOaOraOaaOaaOsaOaaOaaOaaNOaNqaNtaNtaNZaOtaNYaNtaNtaOuaOvaOwaOvaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOkaOyaOzaOAaOyaOzaOzaOzaOBaOzaOzaOCaODaOEaOmaOnaOoaNCaNWaOcaMYaMOaMOaMOaMZaOFaNWaNOaOraOaaOaaOsaOaaOaaOaaNOaNqaNYaNtaNZaOGaNYaNtaNZaNqaOgaOhaOiaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaOHaOHaOIaOHaOHaOHaOJaOKaOHaOHaOHaOJaOHaOHaOHaOHaOHaOHaOJaOHaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOyaOLaOMaONaOOaOPaOPaOPaOPaOPaOPaOQaORaOSaOmaOnaOoaNCaNWaOFaMYaMOaMOaMOaMTaMLaNoaNOaOTaOaaOaaOsaOaaOaaOaaOUaOtaNYaNtaNZaOVaNYaNtaOWaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOIaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOJaOHaOHaOHaOHaOHaOJaOHaOHaOHaOHaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOBaOMaOXaOMaOYaOMaOMaOMaOMaOMaOMaOYaOZaOkaOnaOnaPaaNCaPbaNCaMSaMOaMOaMOaMOaMOaMOaOaaOaaOaaOaaOsaOaaOaaOaaPcaPdaNYaNtaNZaOtaNYaNtaNZaPeaaaaaaaPfaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaPgaOHaOHaOHaOHaOHaOIaOHaOHaOKaOJaOHaOHaOJaOHaOHaOJaOKaOHaOJaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaPhaPiaOMaPjaOOaPkaPkaPkaPkaPkaPkaOQaORaPlaOmaOnaOnaPmaOnaOnaMOaMOaMOaMOaMOaMOaMOaOaaOaaOaaOaaOsaOaaOaaOaaPnaOGaNYaNtaNZaOGaNYaNtaNZaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOIaOHaOHaOJaOKaOHaOHaOJaOHaOKaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOkaPhaOzaPoaPhaOzaOzaOzaOBaOzaOzaPpaODaOEaOmaOnaPqaNCaPbaNCaOpaMOaMOaMOaOqaMLaNoaNOaPraOaaOaaOsaOaaOaaOaaNOaNqaNYaNtaNZaPsaNYaNtaNZaNqaOgaOhaOiaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOIaOHaOHaOHaOHaOHaOKaOHaOJaOKaOHaOJaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNCaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaOkaPtaOmaOnaOoaNCaNWaNUaMWaMOaMOaMOaMXaNUaNWaNOaOraOaaOaaOsaOaaOaaOaaNOaNqaNtaNtaNtaNtaNtaNtaNtaOuaOvaOwaOvaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaPuaPuaPuaPuaPuaPuaPuaOHaOHaOHaOHaOHaOHaOHaOJaOHaOHaPgaOKaOHaOHaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPwaPvaPvaNWaOcaMWaMOaMOaMOaMXaOcaNWaNOaOgaOiaPxaPyaNOaOaaOaaNOaNqaPzaNbaNdaPAaNQaNtaPBaNqaOhaOhaOiaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaPCaPDaPEaPFaPFaPFaPGaPDaPHaOHaOHaOHaOHaPgaOHaPuaOIaPuaOIaOHaOJaOHaOJaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaNWaOFaMWaMOaMOaMOaMXaOFaNWaNOaPIaPIaPIaPIaNOaOaaOaaNOaNqaNQaNQaPJaNqaPKaPLaPKaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaPDaPMaPNaPOaPPaPQaPRaPRaPDaPSaOHaOHaPuaOxaOxaPTaPUaOxaOxaPuaPVaPWaPuaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPXaPXaPYaPZaQaaQbaQcaPXaPXaNOaPIaPIaPIaPIaNOaOaaOaaNOaNqaNQaNQaQdaNqaQeaQfaQgaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaPDaQhaPNaPNaQiaPNaPNaPNaPDaPSaOHaQjaOxaOxaQkaQlaQlaQkaOxaOxaOxaOxaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaQmaQnaQoaQpaQqaQraQoaQnaQmaNOaQsaQtaQuaQvaNOaOaaOaaNOaNqaQwaNQaPJaQxaQeaQfaQgaNqaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaPDaQyaPNaPNaPNaQzaPNaQAaPDaPSaPgaQjaOxaQBaQBaQBaQBaQBaQBaQBaQBaOxaQCaQDaQEaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaQnaQFaQGaQpaQqaQraQGaQHaQnaNOaPIaQIaQJaPIaNOaOaaOaaNOaQKaQLaQMaQMaQMaQMaQMaQLaQNaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaQOaPDaPDaPDaQPaPDaPDaPDaQQaOHaOHaQRaOxaQSaQTaQTaQBaQBaQBaQBaQBaQUaQVaQVaQVaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaQWaQnaQWaQpaQqaQraQWaQnaQWaNOaPIaPIaPIaPIaNOaOaaOaaNOaaaaQKaQXaQXaQXaQXaQXaQNaaaaaaaaaaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaPDaQYaPNaQZaPDaRaaPuaPuaPuaRbaOxaQBaRcaRdaQTaQBaQBaReaRfaOxaRgaRhaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaRiaQnaQnaQpaQqaQraQnaQnaRjaNOaPIaPIaPIaRkaNOaOaaOaaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaPDaPNaPNaPNaPDaRlaRmaRmaPUaOxaOxaQBaRnaRoaQTaQBaQBaReaRpaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaRqaRraRraQpaQqaQraRsaRsaRtaNOaNOaRuaNOaNOaNOaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaPCaPDaPDaPDaPDaPDaPNaPNaPNaPDaRvaRwaRwaRwaRxaRyaQBaQBaQBaQBaQBaQBaReaRpaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPXaPXaPXaPXaQqaPXaPXaPXaPXaPXaaaaaaaaaaaaaNOaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaOaaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaPDaQAaPNaPNaRzaPDaPNaPNaPNaPDaRAaRxaPTaPUaOxaOxaQBaQTaQTaQTaQBaQBaReaRBaOxaRCaRDaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPXaQqaPXaaaaaaaaaaaaaaaaaaaaaaaaaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaPDaQAaPNaREaRFaPDaPNaPNaPNaPDaPDaRGaRHaPHaRIaOxaRJaRKaRLaRKaRKaQBaQBaQBaRMaRNaRNaROaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPXaPXaPXaPXaPXaPXaPXaPXaQaaPXaPXaPXaPXaPXaPXaPXaPXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaRPaOHaPDaQAaPNaREaRQaPDaPNaPNaPNaPDaPNaPNaPNaPDaQRaOxaRRaRSaRTaRSaRUaQBaQBaQBaOxaRVaRNaROaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPXaRWaRXaRXaRXaRXaRXaRWaRWaRWaRXaRXaRXaRXaRXaRWaPXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaPDaQAaPNaPNaPNaRYaPNaPNaPNaRZaPNaPNaPNaPDaQjaOxaOxaRfaSaaSbaScaOxaOxaOxaOxaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRWaRWaRWaSeaRWaRWaRWaRWaRWaRWaRWaSeaRWaRWaRWaSdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaPDaQAaPNaPNaPNaSfaPNaPNaPNaSgaPNaPNaShaPDaSiaRIaOxaOxaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPXaRWaRXaRXaRXaRXaRXaRWaRWaRWaRXaRXaRXaRXaRXaRWaPXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPCaPDaPDaPDaPDaPDaPDaSjaPNaPNaPDaPDaPDaPDaPDaPDaPHaRIaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPXaQbaSlaSlaSlaSlaSlaSlaSlaSlaSlaSlaSlaSlaSlaPZaPXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaSmaSmaSnaSoaSpaPDaPNaPNaPNaPDaSqaSraSsaStaSuaPDaQjaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSvaSwaSxaSyaSzaSAaSkaSBaSCaSDaSkaaaaaaaSEaSEaSEaSEaSEaSEaSEaSEaSEaSFaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSFaSEaSEaSEaSEaSEaSEaSEaSEaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaPNaPNaPNaPNaPNaSHaPNaPNaPNaSIaPNaPNaPNaPNaSJaPDaQjaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSxaSxaSxaSxaSxaSxaSxaSKaSLaSMaSkaaaaaaaSEaSNaSOaSPaSPaSPaSPaSPaSQaSRaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSSaSQaSTaSTaSTaSTaSTaSOaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaSVaPNaPNaPNaPNaSWaPNaPNaPNaSXaPNaPNaPNaPNaSYaPDaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSZaSZaSxaSxaSxaTaaSkaTbaTcaTdaSkaaaaaaaSEaSNaSOaSPaTeaSPaTeaSPaSQaSRaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSSaSQaSTaTfaSTaTfaSTaSOaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaSVaPNaPNaTgaQYaPDaThaTiaTjaPDaSJaSYaPNaPNaPNaPDaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSxaSxaSxaSxaTkaTkaSkaSkaTlaSkaSkaaaaaaaSEaSNaSOaSPaSPaTmaSPaSPaSQaSRaSGaSGaSGaSGaSGaTnaToaTnaSGaSGaSGaSGaSGaSSaSQaSTaSTaTpaSTaSTaSOaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaPNaPNaPNaPDaPDaPDaTqaTraPNaPDaPDaPDaPNaPNaPNaPDaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaTsaTsaSxaTtaTuaTvaSkaTwaTlaTxaSkaaaaaaaSEaSNaSOaSPaSPaSPaSPaSPaSQaSRaSGaSGaSGaSGaSGaTnaTyaTnaSGaSGaSGaSGaSGaSSaSQaSTaSTaSTaSTaSTaSOaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaQYaTzaTAaPDaOHaPDaTBaTBaTBaPDaOHaPDaPRaTCaTDaPDaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSxaSxaSxaTtaTEaTFaSkaTGaTlaTHaSkaaaaaaaSEaSNaSOaSPaTeaSPaTeaSPaSQaSRaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSSaSQaSTaTfaSTaTfaSTaSOaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaPDaTBaTBaTBaPDaOHaQOaTIaTJaTKaQQaOHaPDaTBaTBaTBaPDaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSxaSxaSxaSxaSxaSkaSkaSkaSkaSkaSkaaaaaaaSEaSNaTLaSPaSPaSPaSPaSPaSQaSRaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSSaSQaSTaSTaSTaSTaSTaTLaSUaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaQOaTIaTJaTKaQQaOHaOHaOHaOHaOHaOHaOHaQOaTIaTJaTKaQQaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaTMaTNaTOaSxaSxaTPaTQaTRaTSaTTaSkaaaaaaaSEaSEaSEaTUaTUaTUaTUaTUaSEaSFaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSGaSFaSEaTUaTUaTUaTUaTUaSEaSEaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOHaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaTVaTWaTXaSxaSxaSxaTYaTZaTYaUaaSkaaaaaaaaaaaaaSEaUbaUbaUbaUbaUbaUcaUdaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUfaUcaUgaUgaUgaUgaUgaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaOxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaTWaUhaTXaSxaSxaSxaUiaUjaUiaUjaSkaaaaaaaaaaaaaSEaSEaSEaSEaSEaSEaUcaUkaUlaUlaUlaUlaUlaUkaUkaUkaUlaUlaUlaUlaUlaUkaUcaSEaSEaSEaSEaSEaSEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaTVaUmaUnaSxaSxaTPaUoaUaaUpaUqaSkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUkaUkaUkaUraUkaUsaUsaUsaUsaUsaUkaUraUkaUkaUkaUcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUtaUcaUcaUcaUcaUuaUvaUwaUcaUcaUcaUcaUtaUcaUcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUxaUcaUcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUcaUcaUcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUyaUzaUAaUBaUBaUzaUCaUDaUEaUFaUGaUHaUIaUHaUHaUHaUJaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUyaUzaUzaUzaUzaUzaUKaUGaUGaUGaULaUHaUHaUHaUMaUHaUHaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUyaUzaUNaUyaUOaUPaUQaUGaUGaUGaUGaUHaUHaURaUHaUSaUIaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUTaUGaULaULaULaULaULaUGaUGaUGaUGaUHaUHaUHaUUaUHaUHaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUVaUGaUGaUGaUGaUGaUGaUGaUGaUGaUGaUWaUHaUHaUHaUHaUHaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUVaUGaUGaUGaUGaUGaUGaUGaUGaULaUGaUWaUXaUXaUXaUYaUXaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaUZaUGaUGaUGaUGaUGaUGaUGaULaVaaULaUWaVbaVbaVbaVbaVbaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPvaVcaVdaVdaVeaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaVfaVfaVfaVfaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaVfaVfaVfaVfaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPvaPvaPvaPvaPvaPvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3164,7 +3213,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3366,15 +3415,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUkaUkaUkaUkaUkaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaUkaUkaUlaUmaUnaUkaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaUkaUkaUoaUnaUpaUnaUqaUkaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUraUsaUnaUtaaaaUnaUnaUuaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUnaUnaUnaamaamaamaUnaUnaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUkaUnaamaamaaaaamaaaaUvaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaUkaUkaUwaUxaaaaamaUyaUkaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaUkaUkaUzaamaUnaUkaUkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUkaUkaUnaUkaUkaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhaVhaVhaVhaVhaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaVhaVhaViaVjaVkaVhaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaVhaVhaVlaVkaVmaVkaVnaVhaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVoaVpaVkaVqaaaaVkaVkaVraVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVkaVkaVkaamaamaamaVkaVkaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhaVkaamaamaaaaamaaaaVsaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaVhaVhaVtaVuaaaaamaVvaVhaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaVhaVhaVwaamaVkaVhaVhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVhaVhaVkaVhaVhaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaamaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3409,29 +3458,29 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUAaUAaUAaUAaUAaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUBaUCaUBaUCaUBaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUBaUCaUBaUCaUBaUAaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaUAaUBaUCaUBaUCaUBaUAaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaUAaUBaUCaUBaUCaUBaUAaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUAaUAaUAaUAaUDaUEaUFaUDaUEaUFaUDaUAaUAaUAaUAaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUBaUBaUBaUBaUGaUHaUHaUIaUHaUHaUGaUBaUBaUBaUBaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUCaUCaUCaUCaUJaUHaUHaUHaUHaUHaUJaUCaUCaUCaUCaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUBaUBaUBaUBaUDaUHaUHaUKaULaUMaUDaUBaUBaUBaUBaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUCaUCaUCaUCaUGaUNaUHaUOaUHaUHaUGaUCaUCaUCaUCaUAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUBaUBaUBaUBaUJaUHaUHaUPaUHaUHaUJaUBaUBaUBaUBaUAaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUAaUAaUAaUAaUAaUDaUQaURaUSaUHaUTaUDaUAaUAaUAaUAaUAaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUDaUDaUDaUUaUDaUDaUDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUDaUDaUDaUDaUDaUDaUVaUWaUXaUYaUZaUDaUDaUDaUDaUDaUDaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVaaVbaVcaVcaVcaVdaUXaUXaUXaUXaUXaVdaVeaVfaVgaVhaViaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVjaVkaVcaVcaVcaVlaUXaVmaVnaVmaUXaVoaVeaVeaVeaVpaVqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVraVsaVtaVuaVcaVdaUXaVvaVwaVxaUXaVdaVyaVzaVAaVBaUJaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUDaVCaUDaUDaVDaUDaUXaUXaUXaUXaVEaUDaUDaUDaUDaUDaUDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVFaamaUDaVGaUDaUDaVHaUXaVIaVJaUDaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaVFaamaUDaVKaVLaUDaVMaUXaVNaUXaUDaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVFaaaaUDaUDaUDaUDaUDaUDaUDaVOaUDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVPaaaaaaaaaaaaaaaaaaaaaaUDaUHaUDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUDaVOaUDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVxaVxaVxaVxaVxaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVyaVzaVyaVzaVyaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVyaVzaVyaVzaVyaVxaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaVxaVyaVzaVyaVzaVyaVxaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaVxaVyaVzaVyaVzaVyaVxaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVxaVxaVxaVxaVAaVBaVCaVAaVBaVCaVAaVxaVxaVxaVxaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVyaVyaVyaVyaVDaVEaVEaVFaVEaVEaVDaVyaVyaVyaVyaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVzaVzaVzaVzaVGaVEaVEaVEaVEaVEaVGaVzaVzaVzaVzaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVyaVyaVyaVyaVAaVEaVEaVHaVIaVJaVAaVyaVyaVyaVyaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVzaVzaVzaVzaVDaVKaVEaVLaVEaVEaVDaVzaVzaVzaVzaVxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVyaVyaVyaVyaVGaVEaVEaVMaVEaVEaVGaVyaVyaVyaVyaVxaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVxaVxaVxaVxaVxaVAaVNaVOaVPaVEaVQaVAaVxaVxaVxaVxaVxaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVAaVAaVAaVRaVAaVAaVAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVAaVAaVAaVAaVAaVAaVSaVTaVUaVVaVWaVAaVAaVAaVAaVAaVAaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVXaVYaVZaVZaVZaWaaVUaVUaVUaVUaVUaWaaWbaWcaWdaWeaWfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWgaWhaVZaVZaVZaWiaVUaWjaWkaWjaVUaWlaWbaWbaWbaWmaWnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWoaWpaWqaWraVZaWaaVUaWsaWtaWuaVUaWaaWvaWwaWxaWyaVGaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVAaWzaVAaVAaWAaVAaVUaVUaVUaVUaWBaVAaVAaVAaVAaVAaVAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWCaamaVAaWDaVAaVAaWEaVUaWFaWGaVAaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaWCaamaVAaWHaWIaVAaWJaVUaWKaVUaVAaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWCaaaaVAaVAaVAaVAaVAaVAaVAaWLaVAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWMaaaaaaaaaaaaaaaaaaaaaaVAaVEaVAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVAaWLaVAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3474,13 +3523,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaaaamaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaamaamaamabLabLabLabLaamaamaamaamaamaamaaaaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaVQaVQaVQaVRaVQaVQaVQabLabLabLaamaaaaaaaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVQaVRaVRaVSaVTaVSaVRaVRaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVUaVSaVSaVSaVSaVSaVSaVQaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVSaVSaVVaVWaVXaVSaVYaVQaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVZaWaaVRaVSaVSaVSaVTaVQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVQaVSaWbaVSaVSaVRaVQaVQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVQaVQaVQaVQaVQaVRaVRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaamaWNaWNaWNaWOaWNaWNaWNabLabLabLaamaaaaaaaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWNaWOaWOaWPaWQaWPaWOaWOaamaamaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWRaWPaWPaWPaWPaWPaWPaWNaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWPaWPaWSaWTaWUaWPaWVaWNaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWWaWXaWOaWPaWPaWPaWQaWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWNaWPaWYaWPaWPaWOaWNaWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWNaWNaWNaWNaWNaWOaWOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3512,23 +3561,23 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaaaaaaaaaaaaaWdaWdaWdaWdaWdaWdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaaaaaaaWcaWcaWcaWcaWcaWdaWdaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWdaWdaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWdaWdaaaaaaaWeaWfaWfaWgaWgaWfaWfaWfaWfaWhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWdaWeaWfaWiaWdaWjaWkaWkaWlaWlaWmaWkaWnaWoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWpaWkaWkaWkaWkaWkaWqaWkaWnaWraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWsaWtaWkaWuaWqaWkaWqaWkaWqaWnaWraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWvaWkaWwaWkaWxaWkaWjaWkaWkaWkaWqaWnaWraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWyaWfaWzaWkaWAaWkaWkaWBaWCaWlaWkaWnaWDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWEaWfaWfaWgaWgaWfaWfaWfaWfaWFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaaaaWcaWcaWcaWcaWcaWdaWdaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWdaWdaWdaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaaaaaaaaaaaaaWdaWdaWcaWdaWcaWcaWdaWdaWdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaaaaaaaaaaaaaaaaaaaWdaWcaWcaWcaWcaWcaWcaWdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaaaaaaaaaaaaaXaaXaaXaaXaaXaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaaaaaaaWZaWZaWZaWZaWZaXaaXaaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXaaXaaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXaaXaaaaaaaaXbaXcaXcaXdaXdaXcaXcaXcaXcaXeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXaaXbaXcaXfaXaaXgaXhaXhaXiaXiaXjaXhaXkaXlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXmaXhaXhaXhaXhaXhaXnaXhaXkaXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXpaXqaXhaXraXnaXhaXnaXhaXnaXkaXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXsaXhaXtaXhaXuaXhaXgaXhaXhaXhaXnaXkaXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXvaXcaXwaXhaXxaXhaXhaXyaXzaXiaXhaXkaXAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXBaXcaXcaXdaXdaXcaXcaXcaXcaXCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaaaaWZaWZaWZaWZaWZaXaaXaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXaaXaaXaaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaaaaaaaaaaaaaXaaXaaWZaXaaWZaWZaXaaXaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaaaaaaaaaaaaaaaaaaaXaaWZaWZaWZaWZaWZaWZaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -3713,73 +3762,73 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaafaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaaaaWcaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaafaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWHaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWHaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWHaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaafaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaWcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaaaaWZaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaafaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXEaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXEaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXEaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaafaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index d01e91006eb..d01c97a881d 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -82,8 +82,8 @@ proc/process_ghost_teleport_locs() if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome)) ghostteleportlocs += AR.name ghostteleportlocs[AR.name] = AR - var/turf/picked = pick(get_area_turfs(AR.type)) - if (picked.z == 1 || picked.z == 5 || picked.z == 3) + var/turf/picked = safepick(get_area_turfs(AR.type)) + if (picked && (picked.z == 1 || picked.z == 5 || picked.z == 3)) ghostteleportlocs += AR.name ghostteleportlocs[AR.name] = AR From f74fe4536bea0bb1c74dd9baf2ff2ffee8cdbb55 Mon Sep 17 00:00:00 2001 From: fleure Date: Sat, 22 Mar 2014 01:35:55 +0000 Subject: [PATCH 062/102] Cleaned up security job code --- .../Sigyn/Department Sec/__README.dm | 8 -- .../Sigyn/Department Sec/jobs.dm | 122 ---------------- code/game/jobs/job/security.dm | 136 ++++++++++++++---- 3 files changed, 111 insertions(+), 155 deletions(-) delete mode 100644 code/WorkInProgress/Sigyn/Department Sec/__README.dm delete mode 100644 code/WorkInProgress/Sigyn/Department Sec/jobs.dm diff --git a/code/WorkInProgress/Sigyn/Department Sec/__README.dm b/code/WorkInProgress/Sigyn/Department Sec/__README.dm deleted file mode 100644 index e6b3f7967fd..00000000000 --- a/code/WorkInProgress/Sigyn/Department Sec/__README.dm +++ /dev/null @@ -1,8 +0,0 @@ -/* - -Hey you! -You only need to untick maps/tgstation.2.0.9.dmm for this if you download the modified map from: -http://tgstation13.googlecode.com/files/tgstation.2.1.0_deptsec.zip - -Everything else can just be ticked on top of the original stuff. -*/ \ No newline at end of file diff --git a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm b/code/WorkInProgress/Sigyn/Department Sec/jobs.dm deleted file mode 100644 index f348360c2b8..00000000000 --- a/code/WorkInProgress/Sigyn/Department Sec/jobs.dm +++ /dev/null @@ -1,122 +0,0 @@ -var/list/sec_departments = list("engineering", "supply", "medical", "science") - -/datum/job/officer/proc/assign_sec_to_department(var/mob/living/carbon/human/H) - if(!H) return 0 - if(!sec_departments.len) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - else - var/department = pick(sec_departments) - sec_departments -= department - var/dep_access = null - var/destination = null - switch(department) - if("supply") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) - dep_access = list(access_mailsorting, access_mining) - destination = /area/security/checkpoint/supply - if("engineering") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) - dep_access = list(access_construction, access_engine) - destination = /area/security/checkpoint/engineering - if("medical") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) - dep_access = list(access_medical) - destination = /area/security/checkpoint/medical - if("science") - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) - dep_access = list(access_research) - destination = /area/security/checkpoint/science - var/teleport = 0 - if(!config.sec_start_brig) - if(destination) - if(!ticker || ticker.current_state <= GAME_STATE_SETTING_UP) - teleport = 1 - if(teleport) - var/turf/T - var/safety = 0 - while(safety < 25) - T = safepick(get_area_turfs(destination)) - if(T && !H.Move(T)) - safety += 1 - continue - else - break - H << "You have been assigned to [department]!" - access += dep_access - - - -/datum/job/officer - title = "Security Officer" - flag = OFFICER - department_flag = ENGSEC - faction = "Station" - total_positions = 5 - spawn_positions = 5 - supervisors = "the head of security, and the head of your assigned department (if applicable)" - selection_color = "#ffeeee" - - - equip(var/mob/living/carbon/human/H) - if(!H) return 0 - if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) - assign_sec_to_department(H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) - L.imp_in = H - L.implanted = 1 - return 1 - -/obj/item/device/radio/headset/headset_sec/department/New() - wires = new(src) - secure_radio_connections = new - - if(radio_controller) - initialize() - recalculateChannels() - -/obj/item/device/radio/headset/headset_sec/department/engi - keyslot1 = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_eng - -/obj/item/device/radio/headset/headset_sec/department/supply - keyslot1 = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_cargo - -/obj/item/device/radio/headset/headset_sec/department/med - keyslot1 = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_med - -/obj/item/device/radio/headset/headset_sec/department/sci - keyslot1 = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_sci - -/obj/item/clothing/under/rank/security/cargo/New() - attachTie(new /obj/item/clothing/tie/armband/cargo) - -/obj/item/clothing/under/rank/security/engine/New() - attachTie(new /obj/item/clothing/tie/armband/engine) - -/obj/item/clothing/under/rank/security/science/New() - attachTie(new /obj/item/clothing/tie/armband/science) - -/obj/item/clothing/under/rank/security/med/New() - attachTie(new /obj/item/clothing/tie/armband/medgreen) \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 28c35234880..159086f199d 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -148,38 +148,124 @@ faction = "Station" total_positions = 5 spawn_positions = 5 - supervisors = "the head of security" + supervisors = "the head of security, and the head of your assigned department (if applicable)" selection_color = "#ffeeee" access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue) minimal_access = list(access_security, access_sec_doors, access_brig, access_court) //But see /datum/job/warden/get_access() minimal_player_age = 7 - equip(var/mob/living/carbon/human/H) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) - L.imp_in = H - L.implanted = 1 - return 1 +/datum/job/officer/equip(var/mob/living/carbon/human/H) + if(!H) return 0 + if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + assign_sec_to_department(H) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) + H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + return 1 /datum/job/officer/get_access() var/list/L = list() L = ..() | check_config_for_sec_maint() - return L \ No newline at end of file + return L + +var/list/sec_departments = list("engineering", "supply", "medical", "science") + +/datum/job/officer/proc/assign_sec_to_department(var/mob/living/carbon/human/H) + if(!H) return 0 + if(!sec_departments.len) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) + else + var/department = pick(sec_departments) + sec_departments -= department + var/dep_access = null + var/destination = null + switch(department) + if("supply") + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/cargo(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/supply(H), slot_ears) + dep_access = list(access_mailsorting, access_mining) + destination = /area/security/checkpoint/supply + if("engineering") + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/engine(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/engi(H), slot_ears) + dep_access = list(access_construction, access_engine) + destination = /area/security/checkpoint/engineering + if("medical") + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/med(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/med(H), slot_ears) + dep_access = list(access_medical) + destination = /area/security/checkpoint/medical + if("science") + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/science(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec/department/sci(H), slot_ears) + dep_access = list(access_research) + destination = /area/security/checkpoint/science + var/teleport = 0 + if(!config.sec_start_brig) + if(destination) + if(!ticker || ticker.current_state <= GAME_STATE_SETTING_UP) + teleport = 1 + if(teleport) + var/turf/T + var/safety = 0 + while(safety < 25) + T = safepick(get_area_turfs(destination)) + if(T && !H.Move(T)) + safety += 1 + continue + else + break + H << "You have been assigned to [department]!" + access += dep_access + +/obj/item/device/radio/headset/headset_sec/department/New() + wires = new(src) + secure_radio_connections = new + + if(radio_controller) + initialize() + recalculateChannels() + +/obj/item/device/radio/headset/headset_sec/department/engi + keyslot1 = new /obj/item/device/encryptionkey/headset_sec + keyslot2 = new /obj/item/device/encryptionkey/headset_eng + +/obj/item/device/radio/headset/headset_sec/department/supply + keyslot1 = new /obj/item/device/encryptionkey/headset_sec + keyslot2 = new /obj/item/device/encryptionkey/headset_cargo + +/obj/item/device/radio/headset/headset_sec/department/med + keyslot1 = new /obj/item/device/encryptionkey/headset_sec + keyslot2 = new /obj/item/device/encryptionkey/headset_med + +/obj/item/device/radio/headset/headset_sec/department/sci + keyslot1 = new /obj/item/device/encryptionkey/headset_sec + keyslot2 = new /obj/item/device/encryptionkey/headset_sci + +/obj/item/clothing/under/rank/security/cargo/New() + attachTie(new /obj/item/clothing/tie/armband/cargo) + +/obj/item/clothing/under/rank/security/engine/New() + attachTie(new /obj/item/clothing/tie/armband/engine) + +/obj/item/clothing/under/rank/security/science/New() + attachTie(new /obj/item/clothing/tie/armband/science) + +/obj/item/clothing/under/rank/security/med/New() + attachTie(new /obj/item/clothing/tie/armband/medgreen) \ No newline at end of file From 66e0914ac87410cbfefb46946577be8e2cfea95d Mon Sep 17 00:00:00 2001 From: fleure Date: Sat, 22 Mar 2014 01:37:29 +0000 Subject: [PATCH 063/102] Removed Sigyn's old sec department code from .dme --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 922408e0335..1c1485a87c7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1225,7 +1225,6 @@ #include "code\modules\telesci\telesci_computer.dm" #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\explosion_particles.dm" -#include "code\WorkInProgress\Sigyn\Department Sec\jobs.dm" #include "interface\interface.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" From 2858bf1c185701af002ae2e39263507f7f6685c2 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Fri, 21 Mar 2014 22:26:50 -0700 Subject: [PATCH 064/102] Fix for changling powers arm blade and fleshy space suit. More del(AM) -> qdel(AM) and Del() -> Destroy() Fixes a terrible bug that would have meant players could only ghost once. --- code/game/gamemodes/changeling/powers/humanform.dm | 2 +- .../game/gamemodes/changeling/powers/lesserform.dm | 2 +- code/game/gamemodes/changeling/powers/mutations.dm | 14 +++++++------- code/game/objects/items.dm | 2 +- code/modules/mob/living/living.dm | 4 ++++ code/modules/mob/mob.dm | 3 --- code/modules/power/gravitygenerator.dm | 10 +++++----- code/modules/reagents/Chemistry-Reagents.dm | 2 +- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm index 139687bbf37..cd9a6620bd6 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/game/gamemodes/changeling/powers/humanform.dm @@ -28,6 +28,6 @@ changeling.purchasedpowers -= src feedback_add_details("changeling_powers","LFT") - del(user) + qdel(user) return 1 diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index 084c688d4b7..33f96e6a6df 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -15,4 +15,4 @@ O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) feedback_add_details("changeling_powers","LF") .=1 - del(user) + qdel(user) diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 6ff0c287501..11c824b5c2b 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -20,12 +20,12 @@ /obj/effect/proc_holder/changeling/arm_blade/try_to_sting(var/mob/user, var/mob/target) if(istype(user.l_hand, /obj/item/weapon/melee/arm_blade)) //Not the nicest way to do it, but eh - del user.l_hand + qdel(user.l_hand) user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "[H] casts off their flesh shell!", "We cast off our protective organic shell, temporarily weakening our genomes.", "You hear the organic matter ripping and tearing!") - del H.wear_suit - del H.head + qdel(H.wear_suit) + qdel(H.head) H.update_inv_wear_suit() H.update_inv_head() H.update_hair() @@ -152,7 +152,7 @@ processing_objects += src /obj/item/clothing/suit/space/changeling/dropped() - del src + qdel(src) /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) @@ -167,4 +167,4 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/helmet/space/changeling/dropped() - del src + qdel(src) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e9c3943aaf7..96a4a7a1ef2 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -38,7 +38,7 @@ /obj/item/Destroy() if(ismob(loc)) var/mob/m = loc - m.unEquip(src) + m.unEquip(src, 1) return ..() /obj/item/ex_act(severity) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9db58358257..c1b235d5efb 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -4,6 +4,10 @@ if(cur_area) cur_area.mob_activate(src) +/mob/living/Destroy() + if(mind) + mind.current = null + ..() /mob/living/verb/succumb(var/whispered as null) set hidden = 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 435ed84ff01..8ed2822ce7b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -12,9 +12,6 @@ del(magic) for(var/infection in viruses) del(infection) - - if(mind) - mind.current = null ghostize() ..() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 52cd2430173..701198c2db5 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -45,7 +45,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 // You aren't allowed to move. /obj/machinery/gravity_generator/Move() ..() - del(src) + qdel(src) /obj/machinery/gravity_generator/proc/set_broken() stat |= BROKEN @@ -53,10 +53,10 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/machinery/gravity_generator/proc/set_fix() stat &= ~BROKEN -/obj/machinery/gravity_generator/part/Del() +/obj/machinery/gravity_generator/part/Destroy() set_broken() if(main_part) - del(main_part) + qdel(main_part) ..() // @@ -110,12 +110,12 @@ var/const/GRAV_NEEDS_WRENCH = 3 var/current_overlay = null var/broken_state = 0 -/obj/machinery/gravity_generator/main/Del() // If we somehow get deleted, remove all of our other parts. +/obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts. on = 0 update_list() for(var/obj/machinery/gravity_generator/part/O in parts) O.main_part = null - del(O) + qdel(O) ..() /obj/machinery/gravity_generator/main/proc/setup_parts() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 013be2113b1..6e435cfe6c6 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -278,7 +278,7 @@ datum if(!istype(T)) return if(volume>=10) for(var/obj/effect/rune/R in T) - del R + qdel(R) T.Bless() lube From 2f07046f24067659355b1a8e1c07469ef6b2706c Mon Sep 17 00:00:00 2001 From: TZK13 Date: Sat, 22 Mar 2014 02:43:40 -0500 Subject: [PATCH 065/102] Updates paths in away missions. --- _maps/RandomZLevels/centcomAway.dmm | 4 ++-- _maps/RandomZLevels/stationCollision.dmm | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 38f86e30290..e47775466b6 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -282,7 +282,7 @@ "fv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general) "fw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general) "fx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/centcomAway/general) -"fy" = (/obj/structure/sign/greencross,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general) +"fy" = (/obj/structure/sign/bluecross_2,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general) "fz" = (/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/awaymission/centcomAway/general) "fA" = (/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor{icon_state = "floor"},/area/awaymission/centcomAway/general) "fB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "floor"},/area/awaymission/centcomAway/general) @@ -368,7 +368,7 @@ "hd" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar) "he" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/awaymission/centcomAway/hangar) "hf" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) -"hg" = (/obj/structure/table,/obj/item/weapon/cable_coil,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) +"hg" = (/obj/structure/table,/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar) "hh" = (/obj/structure/closet/body_bag,/turf/simulated/floor{icon_state = "engine"},/area/awaymission/centcomAway/general) "hi" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/awaymission/centcomAway/general) "hj" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/PDAs,/turf/simulated/floor{icon_state = "floor"},/area/awaymission/centcomAway/general) diff --git a/_maps/RandomZLevels/stationCollision.dmm b/_maps/RandomZLevels/stationCollision.dmm index 2000f8617a3..f25531c9396 100644 --- a/_maps/RandomZLevels/stationCollision.dmm +++ b/_maps/RandomZLevels/stationCollision.dmm @@ -204,7 +204,7 @@ "dV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/awaymission/northblock) "dW" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "dX" = (/obj/item/weapon/table_parts,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) -"dY" = (/obj/structure/table,/obj/item/weapon/cable_coil{amount = 5},/obj/item/weapon/screwdriver,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) +"dY" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/weapon/screwdriver,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "dZ" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "ea" = (/obj/machinery/light,/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "eb" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) @@ -248,7 +248,7 @@ "eN" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "North Block APC"; pixel_x = 28},/obj/structure/cable,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/awaymission/northblock) "eO" = (/obj/structure/window/reinforced,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/awaymission/northblock) "eP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/awaymission/northblock) -"eQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/potato,/obj/item/weapon/cable_coil{amount = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) +"eQ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/potato,/obj/item/stack/cable_coil{amount = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "eR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "eS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "eT" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/book/manual/research_and_development,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) @@ -271,7 +271,7 @@ "fk" = (/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/awaymission/northblock) "fl" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/awaymission/northblock) "fm" = (/obj/machinery/door/airlock/gold{name = "Airlock"},/turf/simulated/floor,/area/awaymission/northblock) -"fn" = (/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil{pixel_x = -3; pixel_y = 5},/obj/item/weapon/cell/crap,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) +"fn" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 5},/obj/item/weapon/stock_parts/cell/crap,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fo" = (/obj/structure/table,/obj/item/weapon/stock_parts/matter_bin{pixel_x = 3},/obj/item/weapon/stock_parts/matter_bin{pixel_x = -3},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fp" = (/obj/machinery/door/window/eastleft{name = "Windoor"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fq" = (/obj/structure/target_stake,/obj/item/target/syndicate,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) @@ -362,7 +362,7 @@ "gX" = (/obj/effect/decal/remains/human,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/awaymission/arrivalblock) "gY" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/awaymission/arrivalblock) "gZ" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) -"ha" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/melee/baton,/obj/item/clothing/head/helmet/warden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) +"ha" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/melee/baton,/obj/item/clothing/head/helmet/warden,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "hb" = (/obj/structure/closet/wardrobe/red,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "hc" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "hd" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/awaymission/arrivalblock) @@ -481,7 +481,7 @@ "jm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) "jn" = (/obj/item/ammo_casing/a12mm{pixel_y = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) "jo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) -"jp" = (/obj/structure/sign/redcross{pixel_y = -32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) +"jp" = (/obj/structure/sign/bluecross{pixel_y = -32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) "jq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) "jr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/airless,/area/awaymission/southblock) "js" = (/obj/item/clothing/head/helmet/space/syndicate,/turf/simulated/floor/airless,/area/awaymission/southblock) From 7143f0b81100796bd5ccb3cc64363fc22b151766 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sat, 22 Mar 2014 01:32:50 -0700 Subject: [PATCH 066/102] Changelog for qdel() --- html/changelog.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index a8d4a7ced17..485f5dd12ba 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -54,6 +54,16 @@ should be listed in the changelog upon commit tho. Thanks. --> +

    +

    22 March 2014

    +

    MrPerson updated:

    +
      +
    • Added a new, somewhat experimental system to delete things. This is basically a port from /vg/, so big thanks to N3X13.
    • +
    • As a result, bombs and the singularity should be much less laggy.
    • +
    • There may be issues with "phantom objects" or other problems with stuff that's suppoed to be deleted or objects interacting with deleted objects. Please report any issues right away!
    • +
    +
    +

    18 March 2014

    Ikarrus updated:

    From 88f62dbfa759f3d2acf5973b340af630bd92c81f Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 22 Mar 2014 12:04:04 +0200 Subject: [PATCH 067/102] small mime fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mime wall doesn’t disrupt sounds no more - you can do mime walls even while wearing a muzzle --- code/datums/spell.dm | 2 +- code/datums/spells/conjure.dm | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 967ec1b927f..747b109a912 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -75,7 +75,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/mob/living/carbon/human/H = user - if(istype(H.wear_mask, /obj/item/clothing/mask/muzzle)) + if((invocation_type == "whisper" || invocation_type == "shout") && istype(H.wear_mask, /obj/item/clothing/mask/muzzle)) user << "You can't get the words out!" return 0 diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index 7969cde3db8..2a7357e2e7f 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -22,7 +22,8 @@ if(T.density && !summon_ignore_density) targets -= T - playsound(src.loc, cast_sound, 50, 1) + if(cast_sound) + playsound(src.loc, cast_sound, 50, 1) if(do_after(usr,delay)) for(var/i=0,i Date: Sat, 22 Mar 2014 11:49:28 +0000 Subject: [PATCH 068/102] Updated MetaStation.v39G.dmm to MetaStation.v39H.dmm *Added the gravity generator, just above engineering. It's more vulnerable than on Box. *Rearranged the incinerator room so the turbine computer works, also added a camera to monitor the vent. *Added three tear gas grenades to the armory. *Fixed some layout issues above the mining dock. --- ...aStation.v39G.dmm => MetaStation.v39H.dmm} | 238 ++++++++++-------- _maps/metastation.dm | 4 +- 2 files changed, 141 insertions(+), 101 deletions(-) rename _maps/map_files/{MetaStation.v39G.dmm => MetaStation.v39H.dmm} (99%) diff --git a/_maps/map_files/MetaStation.v39G.dmm b/_maps/map_files/MetaStation.v39H.dmm similarity index 99% rename from _maps/map_files/MetaStation.v39G.dmm rename to _maps/map_files/MetaStation.v39H.dmm index 91b92f4ed46..c71d182583c 100644 --- a/_maps/map_files/MetaStation.v39G.dmm +++ b/_maps/map_files/MetaStation.v39H.dmm @@ -275,7 +275,7 @@ "afo" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor,/area/security/main) "afp" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "afq" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor,/area/security/main) -"afr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboard) +"afr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/engine/gravity_generator) "afs" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 1},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aft" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "redfull"},/area/security/main) "afu" = (/obj/machinery/light_construct/small,/obj/item/weapon/toolbox_tiles_sensor,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -338,7 +338,7 @@ "agz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "agA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteredcorner"},/area/security/brig) "agB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/range) -"agC" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light_construct/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) +"agC" = (/turf/simulated/wall,/area/engine/gravity_generator) "agD" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/packageWrap,/turf/simulated/floor,/area/security/main) "agE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "agF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) @@ -633,7 +633,7 @@ "ami" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "amj" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/crew_quarters/sleep) "amk" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) -"aml" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) +"aml" = (/turf/simulated/wall/r_wall,/area/engine/gravity_generator) "amm" = (/obj/machinery/power/apc{dir = 2; name = "Disposal APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/disposal) "amn" = (/turf/simulated/floor/plating,/area/maintenance/disposal) "amo" = (/obj/machinery/power/apc{dir = 8; name = "Fore Port Solar APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) @@ -676,7 +676,7 @@ "amZ" = (/obj/machinery/conveyor{dir = 2; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "ana" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "anb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) -"anc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) +"anc" = (/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Room"; req_access_txt = "19;23"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "and" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "ane" = (/turf/simulated/wall,/area/security/detectives_office) "anf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) @@ -823,7 +823,7 @@ "apQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/courtroom) "apR" = (/obj/item/weapon/grown/log,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "apS" = (/obj/machinery/door/window/southright{dir = 4; name = "Engineering Deliveries"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"apT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) +"apT" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "apU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "apV" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "apW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = null; req_access_txt = "0"; req_one_access_txt = "1;4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) @@ -925,12 +925,12 @@ "arO" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/starboard) "arP" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "arQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard) -"arR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/maintenance/starboard) +"arR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "arS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) "arV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"arW" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) +"arW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) "arX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboard) "arZ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) @@ -971,7 +971,7 @@ "asI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asJ" = (/obj/machinery/atmospherics/pipe/simple/general/hidden,/turf/simulated/floor{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"}) "asK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"asL" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"asL" = (/obj/structure/rack,/obj/item/weapon/book/manual/wiki/engineering_guide{pixel_x = 3; pixel_y = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "asM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "asN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "asO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Dormitories - Fore"; dir = 8},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) @@ -993,8 +993,8 @@ "ate" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "atf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) "atg" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) -"ath" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) -"ati" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboard) +"ath" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/terminal,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/gravity_generator) +"ati" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/gravity_generator) "atj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "atk" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboard) "atl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1437,7 +1437,7 @@ "aBG" = (/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aBH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/briefcase{pixel_x = -2},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/cartridge/detective,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aBI" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor,/area/engine/break_room) -"aBJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39G:140319"},/area/hallway/primary/port) +"aBJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/gravity_generator) "aBK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aBL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/fore) "aBM" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -1528,7 +1528,7 @@ "aDt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) "aDu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aDv" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) -"aDw" = (/obj/structure/closet{name = "Contraband Locker"},/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) +"aDw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/gravity_generator) "aDx" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "aDy" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engineering) "aDz" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -2608,8 +2608,8 @@ "aYh" = (/turf/simulated/wall,/area/storage/primary) "aYi" = (/obj/machinery/light{dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/carpet,/area/library) "aYj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aYk" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) -"aYl" = (/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) +"aYk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/gravity_generator) +"aYl" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) "aYm" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/wood,/area/bridge) "aYn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "aYo" = (/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) @@ -3356,7 +3356,7 @@ "bmB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/hallway/primary/port) "bmC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "bmD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/port) -"bmE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) +"bmE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) "bmF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Storage"; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "bmG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "bmH" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) @@ -3480,7 +3480,7 @@ "boV" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/machinery/door/window{base_state = "right"; icon_state = "right"; name = "Captain's Desk"; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/obj/item/weapon/stamp/captain,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boW" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_tele,/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 27; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Port Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/port) -"boY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) +"boY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) "boZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "bpa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/central) "bpb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4142,7 +4142,7 @@ "bBH" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage) "bBJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/lab) -"bBK" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bBK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) "bBL" = (/obj/machinery/camera{c_tag = "AI Chamber - Fore"; dir = 2; network = list("SS13","MiniSat","RD")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bBM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "bBN" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore - AI Upload"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) @@ -4191,7 +4191,7 @@ "bCE" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - N2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) "bCF" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bCG" = (/turf/simulated/wall/r_wall,/area/gateway) -"bCH" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bCH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/gravity_generator) "bCI" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/camera{c_tag = "Virology - Lab"; dir = 8; network = list("SS13","Medbay")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/virology) "bCJ" = (/obj/machinery/light/small,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/hallway/secondary/entry{name = "Arrivals"}) "bCK" = (/obj/item/weapon/cartridge/medical{pixel_x = -2; pixel_y = 6},/obj/item/weapon/cartridge/medical{pixel_x = 6; pixel_y = 3},/obj/item/weapon/cartridge/medical,/obj/item/weapon/cartridge/chemistry{pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -4251,7 +4251,7 @@ "bDM" = (/obj/structure/rack,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/briefcase{pixel_x = 4; pixel_y = -2},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/locker) "bDN" = (/obj/structure/table,/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/item/trash/raisins{pixel_y = 7},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/crew_quarters/locker) -"bDP" = (/obj/machinery/door/poddoor{id = "auxincineratorvent"; name = "Auxiliary Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bDP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/engine/gravity_generator) "bDQ" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bDR" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bDS" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) @@ -4417,7 +4417,7 @@ "bGW" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/machinery/newscaster{pixel_y = -29},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bGX" = (/obj/structure/closet/emcloset{pixel_x = -2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) "bGY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/gateway) -"bGZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "off"; initialize_directions = 1; internal_pressure_bound = 4000; on = 0; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bGZ" = (/obj/machinery/door/airlock/glass_command{name = "Gravity Generator Area"; req_access_txt = "19; 61"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bHa" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bHb" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bHc" = (/obj/structure/table,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) @@ -4492,7 +4492,7 @@ "bIt" = (/obj/item/weapon/book/manual/wiki/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/wiki/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/maintenance/starboard) "bIu" = (/obj/structure/table,/obj/item/weapon/hatchet,/obj/item/weapon/minihoe,/obj/item/weapon/crowbar,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/device/analyzer/plant_analyzer,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) "bIv" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/book/manual/wiki/telescience{pixel_y = 8},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) -"bIw" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area/space) +"bIw" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/engine/gravity_generator) "bIx" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/lab) "bIy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIz" = (/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -4654,14 +4654,14 @@ "bLz" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bLA" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/atmospherics/pipe/tank/toxins{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bLB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) -"bLC" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 9},/obj/structure/disposalpipe/segment,/turf/space,/area/space) +"bLC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/engine/gravity_generator) "bLD" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/gateway) "bLE" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bLF" = (/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bLG" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "bLH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) -"bLI" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bLJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bLI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "security blast door"},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/engine/gravity_generator) +"bLJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bLK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "bLL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboard) "bLM" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -4674,7 +4674,7 @@ "bLT" = (/obj/machinery/atmospherics/trinary/filter{dir = 8},/turf/simulated/floor,/area/maintenance/storage) "bLU" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Research Lab Maintenance"; req_access_txt = "7"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bLV" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor,/area/maintenance/storage) -"bLW" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bLW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bLX" = (/obj/machinery/atmospherics/trinary/mixer{dir = 2; icon_state = "intact_on"; name = "Gas mixer (N2/O2)"; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 0; target_pressure = 4500},/turf/simulated/floor,/area/maintenance/storage) "bLY" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bLZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "L9"},/area/hallway/primary/central) @@ -4693,7 +4693,7 @@ "bMm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bMo" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"bMp" = (/obj/machinery/door/poddoor{id = "turbinevent"; name = "Turbine Vent"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"bMp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bMq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/port) "bMr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/solar/port) "bMs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) @@ -4743,7 +4743,7 @@ "bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) "bNl" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) "bNm" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bNn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bNn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bNq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/turret_protected/ai_upload) @@ -4764,8 +4764,8 @@ "bNF" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/maintenance/storage) "bNG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bNH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Chief Medical Officer's Office"; req_access_txt = "40"; req_one_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bNI" = (/obj/machinery/atmospherics/pipe/vent{dir = 4},/turf/simulated/floor/plating/airless,/area/space) -"bNJ" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bNI" = (/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) +"bNJ" = (/obj/machinery/camera{c_tag = "Gravity Generator Room"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bNK" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/engine,/area/toxins/telesci) "bNM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4773,7 +4773,7 @@ "bNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) "bNP" = (/mob/living/simple_animal/pug{desc = "It's Pugley III, the loveable four-legged test subject."; dir = 8; name = "Pugley III"; real_name = "Pugley III"},/turf/simulated/floor/engine,/area/toxins/telesci) "bNQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bNR" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bNR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) "bNS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Mining Office"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bNT" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/toxins/telesci) "bNU" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -4783,7 +4783,7 @@ "bNY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bNZ" = (/obj/structure/sign/poster{pixel_y = -32},/obj/machinery/light_construct/small,/obj/structure/table/woodentable/poker,/obj/item/toy/cards/deck,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "bOa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"bOb" = (/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOb" = (/obj/machinery/gravity_generator/main/station,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) "bOc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bOd" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bOe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4798,7 +4798,7 @@ "bOn" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/starboard) "bOo" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/starboard) "bOp" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bOq" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) "bOr" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bOs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) "bOt" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) @@ -4809,7 +4809,7 @@ "bOy" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "bOz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 8; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bOA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bOB" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bOB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bOC" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/simulated/floor/plating,/area/maintenance/storage) "bOE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) @@ -4864,7 +4864,7 @@ "bPB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/lab) "bPC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/lab) "bPD" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/construction) -"bPE" = (/obj/machinery/atmospherics/pipe/simple/insulated,/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area/space) +"bPE" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bPF" = (/obj/machinery/door/airlock/maintenance{name = "Research Maintenance"; req_access_txt = "7"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bPG" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bPH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/construction) @@ -5043,7 +5043,7 @@ "bSY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSZ" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "bTa" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) -"bTb" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space) +"bTb" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) "bTc" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bTd" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bTe" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) @@ -5149,7 +5149,7 @@ "bVa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bVb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVc" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) -"bVd" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bVd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bVe" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 4; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/research{name = "Research Division"}) "bVf" = (/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bVg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5178,7 +5178,7 @@ "bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/construction) "bVE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/construction) "bVF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bVG" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bVG" = (/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) "bVH" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVI" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVJ" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5188,7 +5188,7 @@ "bVN" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bVO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "bVP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) -"bVQ" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bVQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) "bVR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bVS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bVT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5197,7 +5197,7 @@ "bVW" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/construction) "bVY" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) -"bVZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space) +"bVZ" = (/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) "bWa" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bWb" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bWc" = (/obj/machinery/power/terminal,/obj/structure/cable,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/engine/engineering) @@ -5216,13 +5216,13 @@ "bWp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bWq" = (/obj/structure/table,/obj/item/weapon/book/manual/hydroponics_pod_people,/obj/machinery/light,/obj/item/weapon/paper/hydroponics,/obj/machinery/camera{c_tag = "Hydroponics - Foyer"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) "bWr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) -"bWs" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bWs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bWt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWu" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Aft Maintenance APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bWv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bWx" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) -"bWy" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) +"bWy" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "bWz" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "bWA" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/camera{c_tag = "Security Post - Research Division"; dir = 8; network = list("SS13","RD"); pixel_x = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bWB" = (/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) @@ -5351,7 +5351,7 @@ "bYU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYW" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/obj/item/clothing/under/rank/scientist_new,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"bYX" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bYX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/engineering) "bYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bYZ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = 0; pixel_y = 6; req_access_txt = "47"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "ResearchFoyer"; name = "Research Door Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bZa" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5363,23 +5363,23 @@ "bZg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZh" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bZj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bZk" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) +"bZk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "bZl" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "bZn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/central) "bZo" = (/turf/simulated/floor/wood{tag = "icon-wood-broken5"; icon_state = "wood-broken5"},/area/maintenance/aft{name = "Aft Maintenance"}) "bZp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "bZq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/maintenance/storage) -"bZr" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZr" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/starboard) "bZs" = (/obj/machinery/computer/arcade,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bZt" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bZu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "bZv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/research{name = "Research Division"}) "bZw" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZx" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bZy" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"bZz" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"bZy" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) +"bZz" = (/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) "bZA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bZB" = (/obj/machinery/disposal{pixel_x = -2; pixel_y = -2},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hydroponics) "bZC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) @@ -5394,7 +5394,7 @@ "bZL" = (/obj/machinery/hydroponics/constructable,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "bZM" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bZN" = (/turf/simulated/wall,/area/medical/chemistry) -"bZO" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"bZO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/highsecurity{name = "Gravity Generator Foyer"; req_access_txt = "10"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/gravity_generator) "bZP" = (/obj/structure/closet/secure_closet/chemical,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/chemistry) "bZQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bZR" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) @@ -5457,27 +5457,28 @@ "caW" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "caX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/central) "caY" = (/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"caZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 2},/obj/machinery/meter,/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = -6; pixel_y = -24},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; interior_door_tag = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cba" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"caZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/gravity_generator) +"cba" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/gravity_generator) "cbb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "cbc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "cbd" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/wall,/area/medical/chemistry) "cbe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cbg" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cbg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cbh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor,/area/hallway/primary/central) "cbi" = (/turf/simulated/wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cbj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cbk" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cbk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cbl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/starboard) "cbm" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) -"cbn" = (/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "12"},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door_control{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cbn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/gravity_generator) "cbo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hallway/primary/central) "cbp" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology) "cbq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/window/northleft{dir = 2; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/machinery/door/firedoor,/obj/item/weapon/folder/white,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cbr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cbs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cbt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"cbu" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cbu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cbv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cbw" = (/obj/machinery/power/apc{dir = 8; name = "Incinerator APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5682,6 +5683,7 @@ "cfo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cfp" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "cfq" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) +"cfr" = (/obj/machinery/camera{c_tag = "Gravity Generator Foyer"},/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/gravity_generator) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "cft" = (/obj/effect/landmark/start{name = "Chef"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "cfu" = (/obj/structure/stool,/obj/structure/sign/poster{pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5694,10 +5696,11 @@ "cfB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cfE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/engine/gravity_generator) "cfF" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/camera{c_tag = "Theatre - Backstage"; dir = 1; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) -"cfI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated,/obj/structure/disposalpipe/segment,/turf/space,/area/space) +"cfI" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; dir = 1; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/gravity_generator) "cfJ" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage) "cfK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "cyan"; dir = 1; icon_state = "manifold-c"; initialize_directions = 11; level = 2},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/maintenance/storage) "cfL" = (/turf/simulated/floor/wood{tag = "icon-wood-broken3"; icon_state = "wood-broken3"},/area/assembly/showroom{name = "\improper Corporate Showroom"}) @@ -5741,6 +5744,7 @@ "cgx" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/multitool,/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cgy" = (/obj/structure/stool,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) "cgz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) +"cgA" = (/obj/structure/closet{name = "Supplies Locker"},/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/ammo_casing/shotgun/beanbag,/obj/item/weapon/grenade/chem_grenade/teargas,/obj/item/weapon/grenade/chem_grenade/teargas,/obj/item/weapon/grenade/chem_grenade/teargas,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "cgB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/storage) "cgC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cgD" = (/obj/machinery/shieldwallgen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) @@ -5863,9 +5867,11 @@ "ciQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood{tag = "icon-wood-broken6"; icon_state = "wood-broken6"},/area/assembly/showroom{name = "\improper Corporate Showroom"}) "ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "ciS" = (/obj/structure/table,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/atmos_control{name = "Telecoms Storage"}) +"ciT" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/maintenance/storage) "ciU" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/turf/simulated/floor/plating,/area/maintenance/starboard) "ciV" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "ciW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"ciX" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "ciY" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ciZ" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Research and Development"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab) "cja" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) @@ -5903,7 +5909,7 @@ "cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cjH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; pixel_y = -2; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "cjI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cjJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cjJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39H:140322"},/area/hallway/primary/port) "cjK" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -6106,17 +6112,18 @@ "cnB" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) "cnC" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Kitchen"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/starboard) "cnD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cnE" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area/space) +"cnE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "cnF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cnG" = (/obj/structure/morgue,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cnH" = (/obj/structure/table/woodentable,/obj/item/device/violin,/turf/simulated/floor/wood,/area/crew_quarters/theatre) "cnI" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Port"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cnJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"cnK" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 9},/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space) +"cnK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "cnL" = (/obj/machinery/door/window/eastleft{dir = 1; name = "Robotics Deliveries"; req_access_txt = "29"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/robotics) "cnM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cnN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "cnO" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Starboard"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"cnP" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/space,/area/maintenance/aft{name = "Aft Maintenance"}) "cnQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "cnR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/genetics) "cnS" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -6129,6 +6136,7 @@ "cnZ" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "coa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cob" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"coc" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) "cod" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "coe" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "cof" = (/obj/item/weapon/cigbutt,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) @@ -6136,6 +6144,7 @@ "coh" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/storage) "coi" = (/obj/structure/table/woodentable,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/crap{name = "\improper NanoTrasen-brand rechargable AA battery"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "coj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.1-Aft-Port-Corner"; location = "10-Aft-Central"},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) +"cok" = (/obj/structure/lattice,/turf/space,/area/maintenance/incinerator) "col" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "com" = (/obj/structure/table,/obj/item/device/paicard,/obj/machinery/newscaster{pixel_x = -1; pixel_y = -29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "con" = (/obj/machinery/light/small,/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "grimy"},/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) @@ -6209,12 +6218,14 @@ "cpD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) "cpE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7.5-Starboard-Aft-Corner"; location = "7-Command-Starboard"},/turf/simulated/floor,/area/hallway/primary/central) "cpF" = (/obj/item/seeds/berryseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cpG" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/turf/space,/area/maintenance/starboard) "cpH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpI" = (/obj/item/seeds/moonflowerseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cpK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cpL" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "cpM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) +"cpN" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) "cpO" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/device/radio/intercom{pixel_y = -25},/obj/item/weapon/kitchen/rollingpin,/obj/machinery/camera{c_tag = "Kitchen"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "cpP" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #3"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cpQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) @@ -6572,6 +6583,7 @@ "cwE" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/turf/space,/area/space) "cwF" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/stack/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/stack/cable_coil,/turf/simulated/floor,/area/assembly/chargebay) "cwG" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) +"cwH" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/space,/area/maintenance/aft{name = "Aft Maintenance"}) "cwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cwK" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -6598,11 +6610,13 @@ "cxf" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cxg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"cxi" = (/obj/structure/rack,/obj/item/weapon/hatchet,/obj/item/weapon/butch,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxj" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/genetics) "cxk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/structure/dispenser,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cxm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/assembly/robotics) "cxn" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cxo" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Turbine Vent"; dir = 4; network = list("Turbine"); use_power = 0},/turf/space,/area/space) "cxp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cxq" = (/obj/structure/stool/bed/chair,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cxr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) @@ -6688,7 +6702,7 @@ "cyT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "cyU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyV" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area) -"cyW" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/space,/area/space) +"cyW" = (/turf/space,/area/maintenance/incinerator) "cyX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyY" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "cyZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6749,6 +6763,7 @@ "cAc" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cAd" = (/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cAe" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) +"cAf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cAg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) "cAh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/virology) "cAi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/medical/patients_rooms{name = "Patient Room A"}) @@ -6849,6 +6864,8 @@ "cBZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cCa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cCb" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) +"cCc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cCd" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "plasma tank pump"},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cCe" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cCf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cCg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6975,7 +6992,7 @@ "cEx" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/space,/area/space) "cEy" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/space) "cEz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/gloves/fyellow,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cEA" = (/obj/structure/table/woodentable,/obj/item/weapon/nullrod{pixel_x = 4},/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater{pixel_x = -2; pixel_y = 2},/obj/item/device/soulstone,/obj/item/organ/heart,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) +"cEA" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cEB" = (/obj/machinery/atmospherics/pipe/vent{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cEC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cED" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/fancy/candle_box{pixel_x = 0; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) @@ -7402,6 +7419,7 @@ "cMI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "cMJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cMK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"cML" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cMM" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "cMN" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) "cMO" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) @@ -7671,6 +7689,7 @@ "cRS" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cRT" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = -25},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "cRU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/carpet,/area/chapel/main) +"cRV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cRW" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor,/area/shuttle/laborcamp/station) "cRX" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/laborcamp/station) "cRY" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) @@ -9457,6 +9476,7 @@ "dAl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "dAm" = (/obj/structure/table,/obj/item/weapon/storage/box/rxglasses{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "dAn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dAo" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/portables_connector{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dAp" = (/obj/machinery/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=SMine"; location = "Storage"},/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "dAq" = (/turf/unsimulated/wall/fakedoor{name = "Centcom Security"},/area/centcom/evac) "dAr" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) @@ -9496,6 +9516,7 @@ "dAZ" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dBa" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) +"dBc" = (/obj/machinery/meter,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dBd" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/centcom{name = "Morgue"; opacity = 1; req_access_txt = "5"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "dBf" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/laborcamp/station) @@ -9505,6 +9526,7 @@ "dBj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBk" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dBl" = (/obj/machinery/power/apc{dir = 1; name = "Mech Bay APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/assembly/chargebay) +"dBm" = (/obj/machinery/atmospherics/portables_connector{dir = 8; name = "output gas connector port"},/obj/machinery/portable_atmospherics/canister,/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = -6; pixel_y = -24},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; interior_door_tag = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dBn" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/laborcamp/station) "dBo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "dBp" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -9588,8 +9610,10 @@ "dCP" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod4/transit) "dCQ" = (/turf/space,/area/shuttle/escape_pod4/centcom) "dCR" = (/obj/machinery/computer/telecrystals/boss,/turf/unsimulated/floor{tag = "icon-podhatch (NORTHEAST)"; icon_state = "podhatch"; dir = 5},/area/syndicate_mothership) +"dCS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -31},/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dCT" = (/obj/structure/sign/map/right{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "dCU" = (/obj/structure/sign/map/left{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) +"dCV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "12"},/obj/machinery/door_control{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dCW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorsilver.dmi'; name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "dCX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "dCY" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -9628,6 +9652,7 @@ "dDF" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/item/weapon/wrench,/obj/item/weapon/handcuffs,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "dDG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{icon_state = "door_closed"; id_tag = "AuxGenetics"; locked = 0; name = "Genetics Access"; req_access_txt = "9"; req_one_access_txt = "0"},/turf/simulated/floor,/area/medical/genetics) "dDH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dDI" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "input port pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dDJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDK" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) "dDL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -9841,6 +9866,7 @@ "dHL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor/plating,/area/maintenance/starboard) "dHM" = (/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp) "dHN" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) +"dHO" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dHP" = (/obj/structure/rack,/turf/simulated/floor/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) "dHQ" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) "dHR" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) @@ -9879,6 +9905,7 @@ "dIy" = (/turf/simulated/floor{icon_state = "dark"},/area/tcommsat/server) "dIz" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dIA" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"dIB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/maintenance/incinerator) "dIC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/tcommsat/server) "dID" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "dIE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/mine/north_outpost) @@ -9915,6 +9942,7 @@ "dJj" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "dJl" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) +"dJm" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -31},/turf/simulated/floor/plating,/area/maintenance/incinerator) "dJn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dJo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "dJp" = (/obj/structure/girder,/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -9946,6 +9974,7 @@ "dJP" = (/obj/machinery/door/airlock{id_tag = "AuxShower"; name = "Shower"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJQ" = (/obj/machinery/door/airlock{id_tag = "AuxToilet2"; name = "Unit 2"},/turf/simulated/floor,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJR" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) +"dJS" = (/obj/structure/disposalpipe/segment,/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/obj/machinery/atmospherics/pipe/simple/insulated,/obj/machinery/computer/security/telescreen{desc = "Used for watching the turbine vent."; dir = 8; name = "turbine vent monitor"; network = list("Turbine"); pixel_x = 29; pixel_y = 0},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = 24; pixel_y = -24; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "dJT" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) "dJU" = (/obj/structure/table,/obj/machinery/power/apc{dir = 1; name = "Robotics Lab APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 23},/obj/item/weapon/crowbar,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/radio/headset/headset_sci{pixel_x = -3},/obj/item/device/multitool{pixel_x = 3},/obj/item/stack/cable_coil,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "dJV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"}) @@ -10095,6 +10124,7 @@ "dMJ" = (/obj/machinery/computer/scan_consolenew,/obj/machinery/camera{c_tag = "Genetics Lab"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics) "dMK" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics) "dML" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"dMM" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating,/area/maintenance/incinerator) "dMN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "dMO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/genetics) "dMP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics) @@ -10137,6 +10167,7 @@ "dNA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/assembly/chargebay) "dNB" = (/obj/structure/stool/bed/roller,/obj/machinery/door/window/westleft{dir = 1; name = "Monkey Pen"; pixel_y = 2; req_access_txt = "9"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) "dNC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) +"dND" = (/obj/machinery/door/poddoor{id = "auxincineratorvent"; name = "Auxiliary Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/space) "dNE" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/assembly/chargebay) "dNF" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) "dNG" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -10295,6 +10326,7 @@ "dQD" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership) "dQE" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "dQF" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) +"dQG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; icon_state = "off"; initialize_directions = 1; internal_pressure_bound = 4000; on = 0; pressure_checks = 2; pump_direction = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "dQH" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dQI" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "dQJ" = (/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) @@ -10319,6 +10351,14 @@ "dRc" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/mine/living_quarters) "dRd" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) "dRe" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/mine/production) +"dRf" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"dRg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plating,/area/maintenance/starboard) +"dRh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"dRi" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/simulated/floor/engine,/area/maintenance/incinerator) +"dRj" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 10},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) +"dRk" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"dRl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/valve{dir = 2; name = "output gas to space"},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"dRm" = (/obj/structure/table/woodentable,/obj/item/weapon/spellbook/oneuse/smoke{name = "mysterious old book"},/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater{name = "flask of holy water"; pixel_x = -2; pixel_y = 2},/obj/item/weapon/nullrod{pixel_x = 4},/obj/item/device/soulstone{name = "soul stone shard"},/obj/item/organ/heart,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10394,30 +10434,30 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeavtaugaugaugasnaaeaaeaaeaaeaaeaaeaahaaaaaiabuaboaboabpaboabqaboaEzaboaboaboabtaboaaiaquaczalFalBamNaqtaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaeaauXaaqaaraaraauaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaafJafKafKafKafKaaEafMaaDafOafOafOafOafPaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaeaaaaaaaaaaalaaaaaaaaaaaaaaaaaaaaeaaaabbabJaboabDaayabEabqabFaENabGaboabHaayabIaaiaqiaczaxHaxGamNaqtaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeauvaEgaehaeiaejaekaaaaacaahaacaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaahaaeavuavuavuavuavuaaeafMaaeavuavuavuavuavuaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaeaaaaaeaaeabYaaeaaeaaaaaaaaaaaaaaaaaaaaiaGeaboaccaayacdaceaDRaDSacgaboachaayacgaaiauYaczaxIalBaxLaqtaaaaaeaaeabvabvabvabvabvaaaaaeaaaaaaabwabwaWyaWMaYuabwabwaaaaaeaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaeaaElaaMaaraaraaLaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaacaaaabCabCaupabCabCaaaafMaaaabCabCaupabCabCaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaeaaaaaaajEajFajEaaeaaaaaaaaaaaaaaeaaeaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiawDaczawCawBawyaczaaeaaeabvabvaDwaDvaIQabvabvaaeaaeabwabwaNTaDAaDCaSMaDOabwabwaaeahwahwaLRahwahwaaeaaeaaeaaeaeaauvaeaaAhaAiaAjaeaaAhaAiaAjaeaaeaaBxaeaaBKaBDaAiaCBaAiaAiaAPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaahaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaeaaaaaaajEajFajEaaeaaaaaaaaaaaaaaeaaeaaiaboaboabsactaboabqaboaEtabqaboabsacvabqaaiawDaczawCawBawyaczaaeaaeabvabvcgAaDvaIQabvabvaaeaaeabwabwaNTaDAaDCaSMaDOabwabwaaeahwahwaLRahwahwaaeaaeaaeaaeaeaauvaeaaAhaAiaAjaeaaAhaAiaAjaeaaeaaBxaeaaBKaBDaAiaCBaAiaAiaAPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaahaaaafgafgafgafgafgaupaGSaupafgafgafgafgafgaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaeaaeaaaakhaQJakhaaeaaeaaeaaeaaeaaeaaaaBuaxzaBwaByaBAaAQaARaATaAWaBfaBqaxAaBtaxpaxoaBtaxyawXawEaxkaxdaaeabvabvaKMaEqaEpaEpaJtabvabvaaeabwaFqaEaaEbaEeaUCaVuaFFabwaaeahwaSNaSPaWxahwaaaaaaaaaaaeaeaaujaeaaDpaCUaDoaeaaDXaDGaDWaeaaxFaCEaCCaCFamiamiamiamiamiayEaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaahaaeafJafKafKafKafKaaEafMaaDafOafOafOafOafPaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeakEakFakGakHakIaaaaaeaaaaaaaaeaaaaCNaaCaCTaCOaCPaCIaCJaCGaCHaCLaCMaNbaFYaFcaDgaCHaDhavsaGcaCTaDkaaeabvazEaBBaBzaHMaAXaBEaHKabvaaeaIsaBHaLCaCvaCwaCbaEVaEyaERaaeaEIaAqaFbaCAaLRaaaaBVaBVaBVaeaaxTaymayoaxWaxWaxUaxWaxZaydayFagGagGagGayEamiamiamiamiamiayGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaahaaeavuavuavuavuavuaaeafMaaeavuavuavuavuavuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaeaaeakTakUaFRanWakTaaaaaeaaaaaaaaeaaeaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaboavwawsaaiaaeabvaCtaBBaCxaBGaCQaBEaCjabvaaeaSJaDbaQgaDcaSKaDMaQgaCXaRvaaeahwaAqaAraCAahwadradradYagRaeaaeaaeaaxJaieavhavhazqayYaznavvavvayWayVayJamiamiamiamiamiayXaeaaeaaeaaaaaaeaaaaaaaaaaaaaaaaaeaaeaaaaaeaaeaaaaaaaaaafMaaaaaaaaeaaaaaaaaeaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaoFaoFaKCalGalGalGalHakTaqaavbareakTaWoagVaWoaWoaaeaaeaaeaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaexaexabvabvabvazbayZazlaEmazjayRaBFabvaaeabwavqaCeaBYaCcaAIaBXavpabwaaeahwaAqaAraCAahwaAcadraAdadsaAeaKGaeaavfaieavhavjavkavkavkavxavvavSavNavTamiamiamiamiamiawbauiawdawcaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaeaaaaaaaaaafMaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoawJamqakTaLOaLEaEHaWoaWoalvalvalvalvalvalvalvalvalvalvakBakAavrakAarGasBaqvaqAaexaikaFMazmabvabvabvaAtaAsabvabvabvabvabvawhabwabwawGawIaEnawzawFabwabwawhahnaDeaDjaEoahwadradradsadsaALaAMaeaaHJaieaxEaiXaiUaiUaxPajJawKahSaliaxBamiamiamiamiamiaxBaxCakOakVaaaaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaeaaeaaeafMaaeaaeaaeaaeaaeaahaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaoFajCaoFaveamnavXaxbalDakTalManbakTaxDazoawYagXaWoaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeafQaeMaeMaeMaeMajLacZajMaexakSailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadsadraeaalraltalsalkaljaljallajJakOajcaliakWamiamiamiamiamiakWaleakOakVaaeaaeaaaaaaaaaaaaaaaaaeaaaaaaaaeaaeaaaaaaagUaiOagUaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaqjamZaqjaqXargaqlaqmarkarJalubGxaWoarTamuasFatQagVaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeafQanianEanjaqyahGahDagPaexaAuailaAvabvaqcaipaiqairaiJakbacBanHakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaroaqEadrajfahYaieaiYaiXaiVaiUaiTajJajKahSajHajBamiamiamiamiamiajyajzajkajxaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaamXamYamXaaaaaaaaeaaaaakaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaoFapeaoFanQaisaiDaoOaoFbHMapybKoapKabKapvapRanJaWoaaeaKBagVaKBaKBaKBaaeadradradrafQagtagAafWamOageagOassapWahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHapMahJahIahHaguahzahyaiAaizaiyaixaiwagBaijaiiahxahwagQadsadsanIadsadraiaahYaieagGaigaifaiPaihahPahQahSagNahUamiamiamiamiamiafFaeaahOaeaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaagUanDaqRanDagUaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaoFamWaqkaqkaqkagnamVaoFaoYaiBbrTaWoanKafAakyanFaWoaKBaKBarnaKBafNaKBafZadraklaicafQagdafXafTagZaeragfaggaexagaagbagcabvagjagkaglaoyabQaenaidanGaexakiafzahiaguahkaffaimahtahvafjahoahnahnanhadradradradradrafHadradraeaagIagHagGagGagLagKagJahrahragMagNahNamiamiamiamiamiafFbWIcsgavAavAavAavAavAavAafravAavAaaaaaaaaeaaeaaeaoBaoCamYaoDaoEaaeaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaaaaeaaaaaeaaaaoFaesaiFaiIajqalKammaoFbrTaiBbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBaeLacGaeDacLafcaeKafxafvacxacyacwacPabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftagDafjagpagoagmafeaeYaeYaeYafGaeXaioaeXaeXahFagEagFafLafLafIadiagzafCafCafCafDafBamiamiamiamiamiafFaUoaQsavAaePakKaQsaeZavAagCackavAavAaaaaaeaaaaaaaptapuaoIandaptaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBafUaKBaaeaaaaaeaaeaaeaaeaaeaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbbKoaeJabKagqaiWbrTajAaKBbHMagSagvafVaKBacuacsabUabMafQafQafQaeMaeMadWabhacPacIaghaeEaeFafYafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGabzafjahVacTacTaaQaaQaaQaaQaocadradradradraeaadZadXadFadnadkadjadgaeRaeVaeeaiSaecaebaebaebaebaebaeWaThaQsavAaQsaQsaQsaQsavAaQsaQsafEavAaaaaaeaaaaaaaptanoadfafmaptaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtbMbaKBanLamsamsamsamsamsajsaKBbrSajtaKBaeTaDnaefbMeaspaKBbwqaedbMbaKBardafdafuaeSaeOaKBaeubrTabmafyaKBabkadYahLabladrabiafQabjabnaerabhassadTadUaeAaeNadQaeIadOaeBaevaewaenaaXafsaexaezadRadPadNadMadLadJadKadJadIadHafaadEadEaepadBaaQaocadrabXabZaklabcabcabcabcabcaciacmacfabcabcabcabcabcabVavAabWacbadlavAavAaQsavAaetaQsacnaQsavAaThaddacoavAaaaaaeaaaaaaaptaqZadearbaptaaaaaeaaaaaaaaaaaeaaaaaeaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaeaaeafUaeCaeUadVafRbrTbrTbrTbrTbrTahcacqaeqbKoaaIacrbrTbrTbrTbrTabPaqhbQSadradradradradradradradradradracAadradraaNadradradradradrafQaaGaaYaerabhacPacIacJacQacHacSadoacFaeyaaPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQaaHaaSaaKaibadsabcaaZaasaaVabyabxabrabdabcabBaatabAabcavAavAaQsaThaQsaUoavAaQsavAadlaQsabOaQsavAabSaQsabOavAavAcgaavAavAarNarNabTaclarNarNcgaarNarNacMarNaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGaaeaaeajGaaeaaaaaeaaeaaeaKBaKBaxSaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaaFiaoZascasaapcadrdBfapiappdBnaqdapZaowaeraoraosabvabQatpabvabvaEratraDmazpabvaEJaAoaexaexaaQazuaszaslazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaocadradsauqadsabcarmauoaumaulaukaDYarHausautauuarFabcauravAaufaddacoadGavAaQsavAavAavAbvSavAavAavAavAbvSavAarOaQsbWIaUoaQsaQsaubatRarNaQsaQsaucarNcsgarNaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGarqajGaaeaaeaKBaKBaKBatHaBPaKBaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaKBasLaUDbHMarlbrTbHMaEsaDuaDFaEvagrasNadradradrataatbatbatbatcadradradrahTaoodpCahTaoqalCaeManPanRassaskaskasiasgaskasjaskasgaskaAyaskasjasbarZashasgaqxapoaskaskaskasgaskasmafQasoainainainainaeMaocadradsadsadsabcabcabcabcabcarMatzaDialZarcabcabcabcatkavAaUoaQsabOaQsavAaQsavAbbNavAatjbvHbvHbvHatiathbYbbYbbYbbYbbYbbYbbYbbuqaQsaQsaQsaQsatgacMasRacMaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaeaaeajGaaeapBaaeajGajGajGajGajGajGaCDaAxaCDafRaqhaKBaKBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBaKBbHMbrTavabHMaGPaAfaGJazTaFuasNadralIaaeaaaaaaaaaaaaaaaaaeaaaadraiRcRXalLcRWamgainamPamQamJaqoaqsaqsaqnaqoaqsazcaqDaqoaqBaqCaqsawvaqQaqPaqsasVaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMaocadrasSadYasTabcarUanuaseabyabxabrasOabcasUaasasZabcatdavAavAavAbvSavAavAaQsavAaQsavAatfarNarRarNarWarNarNarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeajGajGajGajGajGajGaaeajGajGajGaaeaKBaKBaKBarnaqhbrTaKBaaaauIauJauKauJauLalvaaeaaeaaeaKBaovaKBbtwaouaXOaXOaDlbrTaKBaDfarSaoxadraaaavUavUavUavUavUavUavUaaaadraxNaxMasAahTalEalCaeMaoLapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaxnaoMaoQaoPaoJapaanSamSapaaozaoKapbaoVaoUaoXaoWapNapLaeMaocbaabaabaabaabaaarFarDaryarLarKarIarHarparrarjarmabcartarsbvHbvHaribvHbvHbvHaAgbvHbvHarQarNapSazrapUapTasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGajGaotajGaaeaaeaaeaaeaKBbHMaqhardafUaaaavLaUaapIavOavLaDLaCraCsaruaruaruaruanOaruaruadradraKBaKBanNadrakYadraaeavUavVavWaBTavYavZavUaaeakRahTarEakXahTaaaaaaacKajjavKajlaeMajmavJajoaeMajpawPajraeMapHajpapsaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocbaaapVapXanlbaaabcabcabcabcapYaqOaqbalZarcabcabcabcavAaqWaUobWIaQsaUoarhaQsarNarNarNarNarNanVaAJanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeajGajGangajGajGajGajGaaeaaaaaeafUbtwaqhbrTaKBaaaauKawQawRawQauKaCqaADaBdaruazJaBhaCpaBeaBgaruatqamHakCakDakJadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaaiZaiRahZarEahTaknajnaczajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLaoNaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansbaaaomaolaokbaaapmakQapmabcaoAaopaonaodaofaobaobatlbvHanXarNarNarNarNarNarNarNannannanaaBsanfancamUamTavFasPasPaaeaaeauBavHauBauBauBauBauBavIauBauBayIaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGaaeajGaaeaaeajGajGaaeaaeaKBaKBbMeaqhaKBaKBaaaavLawQawQawQaylazGavRavRazFawUaynaypayqayraxVaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaahEahTahXarEcRWahuahsaczakqajRakraeMakqajRaksaeMakqajRaktaeMamMacRalNaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWbaaankanmanlbaaaqNanqanqantanranvahMabcabcabcabcabcavAanyarNamkayaanZamwaxYbwtamlaycaycaycaycampamvamtawNawOasPamraaeaaeaaaaaaaaaaaeaaeaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGajGajGaacaaaaaeaaeaaeaKBaKBbHMbHManpafUaaaaaaauKawRawRawRauKaxeawVawWawTawUavRawSavPavQaruahlazOazPazQazIadrakYadraaeazSazwazUazVazWauwavUaaeadrahTahRahRahTahjagYaczakLakMakNafQakLakMakNafQakLakMakNafQalwakPalJafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqamcbaabaaamfameamdajIamRamjamhalZamaahqabAabcambacjarNalmazraycaycalnaloaAJaANalyalxalxalxalAalzayiayjaykaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaacbmNaAZbmNaahaaaaaeaaaaaeaKBafVarnbGxaqhaKBaKBaaaavLaBaaBbaBcavLbAYaCraCsarubxQavRbzgavPbyraruaBibjyaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaadrahaahmahmahpaWuaWvaWubnObnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebBiaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbjWboHaZHbjVbjTbjUbiQbznbiLarHbhPbhObhMbhGabcaQsacjarNbmMaAJbmLbmJbmHbmFbmEbmAbnyazzazzazzbnwbnxayiayjazDaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNbJAbmNaaeaaeaaeaaeaaeaKBbrTbrTbrTarVbaQaKBaaaaCmauJaCnauJaCoalvaaeaaebDYbDWbFNbEMbGCbGqarubglbgmbkxaCybDdadrakYadraaabBjaaabgobgnbgoaaaaaeaaaaWuaWuaknajnaWuaWubaybaVarvbmUbpjbEBbpobplbplbEIbplbprbpobpvbpubogbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEbkkbklbotbkgbjtbkjbkebkebkfbkpabcabcabcabcabcaThacjarNaBZbkbaDxboZboOboIboYboSaAObpgbpebpfaASbpdayiayjaAUaAVaaebooaaaaaaaaaaaabooaaaaaabooaaeaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaeaaeakTakUaFRanWakTaaaaaeaaaaaaaaeaaeaaiaaiazXazZaAaaaiazKazMazKaeMaeMaeMaeMaeMaABaAAaAzaboavwawsaaiaaeabvaCtaBBaCxaBGaCQaBEaCjabvaaeaSJaDbaQgaDcaSKaDMaQgaCXaRvaaeahwaAqaAraCAahwadradradYagRaeaaeaaeaaxJaieavhavhazqayYaznavvavvayWayVayJamiamiamiamiamiayXaeaaeaaeaaaaaaeaaaaaaaaaaaaaaaaacaaaaaaaaaaaeaaaaaaaaaafMaaaaaaaaeaaaaaaaaeaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaoFaoFaKCalGalGalGalHakTaqaavbareakTaWoagVaWoaWoaaeaaeaaeaaiaaiaAHaaiaaiaaiaAHaaiafQaAGaAEaAFaeMaCdaCKaCzaexaexaexabvabvabvazbayZazlaEmazjayRaBFabvaaeabwavqaCeaBYaCcaAIaBXavpabwaaeahwaAqaAraCAahwaAcadraAdadsaAeaKGaeaavfaieavhavjavkavkavkavxavvavSavNavTamiamiamiamiamiawbauiawdawcaaaaaeaaeaaeaaeaaeaaeaahaaeaaeaaeaaeaaeaaaaaaafMaaaaaaaaaaaaaaaaaeaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaMzaMuaoHamnaMmaMlakTamoawJamqakTaLOaLEaEHaWoaWoalvalvalvalvalvalvalvalvalvalvakBakAavrakAarGasBaqvaqAaexaikaFMazmabvabvabvaAtaAsabvabvabvabvabvawhabwabwawGawIaEnawzawFabwabwawhahnaDeaDjaEoahwadradradsadsaALaAMaeaaHJaieaxEaiXaiUaiUaxPajJawKahSaliaxBamiamiamiamiamiaxBaxCakOakVaaaaaeaaaaaeaaaamlamlamlamlamlamlamlaaeaaeaaeafMaaeaaeaaeaaeaaeaahaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaoFajCaoFaveamnavXaxbalDakTalManbakTaxDazoawYagXaWoaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeafQaeMaeMaeMaeMajLacZajMaexakSailakmabvakuakoakpakxawtatyatwaoTabvanMamBaaQaqTaqwanYattatsaaQahWaqqahnatvatuakvahwamzadsadsadsadsadraeaalraltalsalkaljaljallajJakOajcaliakWamiamiamiamiamiakWaleakOakVaaeaaeaaaaaeaaaamlbNIbVZbVQbVGbNIamlaaeaaaagUaiOagUaaaaaaaaeaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaqjamZaqjaqXargaqlaqmarkarJalubGxaWoarTamuasFatQagVaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeafQanianEanjaqyahGahDagPaexaAuailaAvabvaqcaipaiqairaiJakbacBanHakdakwakkajOajNajVajPajXajWajZajYakzakaakjakcarfahwaicadsajwaroaqEadrajfahYaieaiYaiXaiVaiUaiTajJajKahSajHajBamiamiamiamiamiajyajzajkajxaaaaaeaaeaaeaaeamlbVdbTbbNIbTbbPEamlaaeaaaamXamYamXaaaaaaaaeaaaaakaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaoFapeaoFanQaisaiDaoOaoFbHMapybKoapKabKapvapRanJaWoaaeaKBagVaKBaKBaKBaaeadradradrafQagtagAafWamOageagOassapWahBahAahBaiNahKahKaiEaiCaiLaiKaiHaiHapMahJahIahHaguahzahyaiAaizaiyaixaiwagBaijaiiahxahwagQadsadsanIadsadraiaahYaieagGaigaifaiPaihahPahQahSagNahUamiamiamiamiamiafFaeaahOaeaaaaaaaaaeaaaaaaamlbOBbOqbObbNRbNJamlaaeagUanDaqRanDagUaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaoFamWaqkaqkaqkagnamVaoFaoYaiBbrTaWoanKafAakyanFaWoaKBaKBarnaKBafNaKBafZadraklaicafQagdafXafTagZaeragfaggaexagaagbagcabvagjagkaglaoyabQaenaidanGaexakiafzahiaguahkaffaimahtahvafjahoahnahnanhadradradradradrafHadradraeaagIagHagGagGagLagKagJahrahragMagNahNamiamiamiamiamiafFbWIcsgavAavAavAcgaavAavAamlbMpbLWbNIbNnbLJamlaaeaoBaoCamYaoDaoEaaeaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaaaaeaaaaaeaaaaoFaesaiFaiIajqalKammaoFbrTaiBbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBaeLacGaeDacLafcaeKafxafvacxacyacwacPabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftagDafjagpagoagmafeaeYaeYaeYafGaeXaioaeXaeXahFagEagFafLafLafIadiagzafCafCafCafDafBamiamiamiamiamiafFaUoaQsavAaePakKaQsaeZackamlbLCbIwbGZbDPbLIamlaaeaptapuaoIandaptaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBafUaKBaaeaaaaaeaaeaaeaaeaaeaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbbKoaeJabKagqaiWbrTajAaKBbHMagSagvafVaKBacuacsabUabMafQafQafQaeMaeMadWabhacPacIaghaeEaeFafYafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGabzafjahVacTacTaaQaaQaaQaaQaocadradradradraeaadZadXadFadnadkadjadgaeRaeVaeeaiSaecaebaebaebaebaebaeWaThaQsavAaQsaQsaQsaQsafEamlbmEaYlbBKboYbCHamlaaeaptanoadfafmaptaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtbMbaKBanLamsamsamsamsamsajsaKBbrSajtaKBaeTaDnaefbMeaspaKBbwqaedbMbaKBardafdafuaeSaeOaKBaeubrTabmafyaKBabkadYahLabladrabiafQabjabnaerabhassadTadUaeAaeNadQaeIadOaeBaevaewaenaaXafsaexaezadRadPadNadMadLadJadKadJadIadHafaadEadEaepadBaaQaocadrabXabZaklabcabcabcabcabcaciacmacfabcabcabcabcabcabVavAabWacbadlavAavAaQsavAaetaQsacnaQsasLarWaDwaBJatiathaYkamlcgaaptaqZadearbaptaaaaaeaaaaaaaaaaaeaaaaaeaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaeaaeafUaeCaeUadVafRbrTbrTbrTbrTbrTahcacqaeqbKoaaIacrbrTbrTarlbrTabPaqhbQSadradradradradradradradradradracAadradraaNadradradradradrafQaaGaaYaerabhacPacIacJacQacHacSadoacFaeyaaPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQaaHaaSaaKaibadsabcaaZaasaaVabyabxabrabdabcabBaatabAabcavAavAaQsaThaQsaUoavAaQsavAadlaQsabOaQsagCafrancamlamlapTarRamlbWIarNarNabTaclarNarNcgaarNarNacMarNaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGaaeaaeajGaaeaaaaaeaaeaaeaKBaKBaxSaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaaFiaoZascasaapcadrdBfapiappdBnaqdapZaowaeraoraosabvabQatpabvabvaEratraDmazpabvaEJaAoaexaexaaQazuaszaslazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaocadradsauqadsabcarmauoaumaulaukaDYarHausautauuarFabcauravAaufaddacoadGavAaQsavAavAavAbvSavAagCcfIcfEcframlamlamlamlaQsaUoaQsaubatRarNarOabSaucarNcsgarNaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGarqajGaaeaaeaKBaKBaKBatHaBPaKBaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaKBaUDbtwbrTbHMbrTbHMaEsaDuaDFaEvagrasNadradradrataatbatbatbatcadradradrahTaoodpCahTaoqalCaeManPanRassaskaskasiasgaskasjaskasgaskaAyaskasjasbarZashasgaqxapoaskaskaskasgaskasmafQasoainainainainaeMaocadradsadsadsabcabcabcabcabcarMatzaDialZarcabcabcabcatkavAaUoaQsabOaQsavAaQsavAbbNavAatjcblcbucbncbacaZcbkcbgbYbbYbbYbbYbbYbbuqaQsaQsaQsaQsatgacMasRacMaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaeaaeajGaaeapBaaeajGajGajGajGajGajGaCDaAxaCDafRaqhaKBaKBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBaKBbrTbHMavabHMaGPaAfaGJazTaFuasNadralIaaeaaaaaaaaaaaaaaaaaeaaaadraiRcRXalLcRWamgainamPamQamJaqoaqsaqsaqnaqoaqsazcaqDaqoaqBaqCaqsawvaqQaqPaqsasVaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMaocadrasSadYasTabcarUanuaseabyabxabrasOabcasUaasasZabcatdavAavAavAbvSavAavAaQsavAaQsavAatfarNamlafrbZOamlamlarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeajGajGajGajGajGajGaaeajGajGajGaaeaKBaKBaKBarnaqhbrTaKBaaaauIauJauKauJauLalvaaeaaeaaeaKBaovaKBaouaXOaXOaXOaDlbrTaKBaDfarSaoxadraaaavUavUavUavUavUavUavUaaaadraxNaxMasAahTalEalCaeMaoLapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaxnaoMaoQaoPaoJapaanSamSapaaozaoKapbaoVaoUaoXaoWapNapLaeMaocbaabaabaabaabaaarFarDaryarLarKarIarHarparrarjarmabcartarsbvHbvHaribvHbvHbvHaAgbvHbvHarQbZrapSbZyapUbZzasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGajGaotajGaaeaaeaaeaaeaKBbHMaqhardafUaaaavLaUaapIavOavLaDLaCraCsaruaruaruaruanOaruaruadradraKBaKBanNadrakYadraaeavUavVavWaBTavYavZavUaaeakRahTarEakXahTaaaaaaacKajjavKajlaeMajmavJajoaeMajpawPajraeMapHajpapsaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocbaaapVapXanlbaaabcabcabcabcapYaqOaqbalZarcabcabcabcavAaqWaUobWIaQsaUoarhaQsarNarNarNarNarNanVbWsanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeajGajGangajGajGajGajGaaeaaaaaeafUbtwaqhbrTaKBaaaauKawQawRawQauKaCqaADaBdaruazJaBhaCpaBeaBgaruatqamHakCakDakJadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaaiZaiRahZarEahTaknajnaczajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLaoNaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansbaaaomaolaokbaaapmakQapmabcaoAaopaonaodaofaobaobatlbvHanXarNarNarNarNarNarNarNannannanaaBsanfbZkamUamTavFasPasPaaeaaeauBavHauBauBauBauBauBavIauBauBayIaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGaaeajGaaeaaeajGajGaaeaaeaKBaKBbMeaqhaKBaKBaaaavLawQawQawQaylazGavRavRazFawUaynaypayqayraxVaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaahEahTahXarEcRWahuahsaczakqajRakraeMakqajRaksaeMakqajRaktaeMamMacRalNaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWbaaankanmanlbaaaqNanqanqantanranvahMabcabcabcabcabcavAanyarNamkayaanZamwaxYbwtbWybYXbYXbYXbYXbZjamvamtawNawOasPamraaeaaeaaaaaaaaaaaeaaeaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGajGajGaacaaaaaeaaeaaeaKBaKBbHMbHManpafUaaaaaaauKawRawRawRauKaxeawVawWawTawUavRawSavPavQaruahlazOazPazQazIadrakYadraaeazSazwazUazVazWauwavUaaeadrahTahRahRahTahjagYaczakLakMakNafQakLakMakNafQakLakMakNafQalwakPalJafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqamcbaabaaamfameamdajIamRamjamhalZamaahqabAabcambacjarNalmazraycaycalnalobWsaANalyalxalxalxalAalzayiayjaykaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaacbmNaAZbmNaahaaaaaeaaaaaeaKBafVarnbGxaqhaKBaKBaaaavLaBaaBbaBcavLbAYaCraCsarubxQavRbzgavPbyraruaBibjyaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaadrahaahmahmahpaWuaWvaWubnObnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebBiaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbjWboHaZHbjVbjTbjUbiQbznbiLarHbhPbhObhMbhGabcaQsacjarNbmMaAJbmLbmJbmHbmFcnEbmAbnyazzazzazzbnwbnxayiayjazDaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNbJAbmNaaeaaeaaeaaeaaeaKBbrTbrTbrTarVbaQaKBaaaaCmauJaCnauJaCoalvaaeaaebDYbDWbFNbEMbGCbGqarubglbgmbkxaCybDdadrakYadraaabBjaaabgobgnbgoaaaaaeaaaaWuaWuaknajnaWuaWubaybaVarvbmUbpjbEBbpobplbplbEIbplbprbpobpvbpubogbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEbkkbklbotbkgbjtbkjbkebkebkfbkpabcabcabcabcabcaThacjarNaBZbkbaDxboZboOboIcnKboSaAObpgbpebpfaASbpdayiayjaAUaAVaaebooaaaaaaaaaaaabooaaaaaabooaaeaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaaebKpbKabJEbIZbIsbIqarubihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMaWubicbeVbeVbfHbdhbcNbcNbcKbELbdfbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbmRbAnbANbbUbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxblVbmQbaablHblAblFblNblFblJblMblnbkqbkobbKabcaQsacjarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaaeaaaaaaaaaaaaaaabBlaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaearuaruarubNybNSaruarubipbimbiqbrzbrpbhrbikbidbqjbkJbrBbrBbjsbrBbknbrLbkQaWublablgbkNaxwaxwbGSaxwaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabrkbmVbmWalZbnabnebngalZbnkbnBbnqabcbNoacjarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbtJaycaDHazDaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaeaaeaGubymaJbaHZaFVaFDaEBaEAbaTbaUbaRbisaEGbgBbhraCuaBSaBWaDraDtaCVaCYbAQaBOaBLaBNaBRahjaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEbqUbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaaaUwaUfaUtaCWaCWaCWaCWaCWaCWaCWaCWaCWavAbzjarNaTMaTBbtgaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaaebooaaeaaeajGajGajGaaeblfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10442,11 +10482,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHfaKyaJwaJyaJNaKmaIRaISaHfaIfaHLaILaIOaPnaHfaKHaKNaKIaKFaKDaSWaKEbbFaKlbleblebleblebleaZLaHDaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaIgaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCaPwaKnazsbiwaGxbiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIraIUaFOaHhaOGaGjbiwbiyaPiaPmaIYaEuaJaaFjaJcaJdaJfaMjaJlaJlaJhaZbaFtaJqaTmaTmaTmaawaHTaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaIZaIWaJAaJvaJDaJCajeaJFaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybeEbjQaQZaZPbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbezbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbhobgGavAavAavAbdmavAbddbdgaUSbdaaTCbcYbcVbhuaJlaBIbcRbcQaZbaSmaJqaTmbhsbcFbeuaTSaTSbcUbeaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaIZbcLbcDaaaaaebcubbHbfWbbBbhNbrKaJXbhibkYbfDbhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbiabkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaZPaQfbloblpblqbeoaQXbssboRbqzaQYblrblqblyblzaQeaPYaZTblCblDblEbigaPRaYtbijaZTbkhaYpaOMbaIbaGbctbgibkdbawbazbfrbaubatbavaSRbyCbDEavAaUqaUnbeDaOhbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnaPgbgabfYbeGbeybcgbbxbbxbbSbbQbaPaYxbaPbaPaYxbaPbaPbaPbaPbaPbaPaYxbaPbaPbaPbaPbaPbaPaYxbaPbaZbbIbbxbbxbbxaYdbdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNbyKbmrbruaSWbktbdKblPbdKbspaSWbsxbjxbfubmCaBJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBbleaSobdLbeiaSBbtIblrbmYbeobskbsYbjXbndblGbndaSDboPboybvkbnjaTkaSZaZTbfIbnnbnobnpaTraZTaZTaZTaEMbnraWQbkdbfRbfObgIbkdbzcbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabkTbgYbhebhgbhbavAbddaYabzfaTmaFTbgVaEfbgJbgTbcZbgxbgcbmmaZbbafbadbkybjDaFLaaaaaabgKbcDaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaVNbeUbeaaaaaaeaGqbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNbyKbmrbruaSWbktbdKblPbdKbspaSWbsxbjxbfubmCcjJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBbleaSobdLbeiaSBbtIblrbmYbeobskbsYbjXbndblGbndaSDboPboybvkbnjaTkaSZaZTbfIbnnbnobnpaTraZTaZTaZTaEMbnraWQbkdbfRbfObgIbkdbzcbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabkTbgYbhebhgbhbavAbddaYabzfaTmaFTbgVaEfbgJbgTbcZbgxbgcbmmaZbbafbadbkybjDaFLaaaaaabgKbcDaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaVNbeUbeaaaaaaeaGqbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaTpaaeaaaaaeaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbwJbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbosbosaWPbosbmnbohbkVbdvbosbosbnDboAboBbnUblebbubbVbbfboNbbfbbvbbfbbfbtIaRWaRZboLboLboLbszbppbeJbdEbsyboLboLboLaRNaRLaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpaaWQbcTbeIbeObeMbkdbeRbfEbfCbjfaSaaSaavAavAaTUavAavAavAbjobjpavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqaJqaWRbjraZAaTmaTmbffbfebfFaaaaIZbfGaaaaaaaaeaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaVNbeUbeaaaebeSbesbqSbexbqKbtBaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaLBaWJaWIaXwaSTbdsaSTaPEaWFaPGbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaAkbqFaLabkdbkdbkdbkdbkdaTTaUkaSaaSaaSaaXzaUlavAaXxaXvaXuavAbbNbdtavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwaXCarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaUjaTSaSSaSgaaeaaeaaeaaeaaeaaeaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaeaJIaaaaVNaUmaJvaWtaWsajeaJRaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaWjaWzaXdaMQaMQbePaYYaPIaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqaazHaWEbrXbrYbscbqaaWwazhbqaaWwazhbqabqgaYpbRAbleaVqaRGaONbleaOWaOoaNwaVpbtIaZuaZxboLaZnaOYaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFaRkaSaazYaSdaTQazNaRUaRCaQtaSaaVYaXsaXgaVVaVUaVXaVWavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaaeaaaaaaaaaaaeaaaaaeaaaaaeaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaFvaOXaIlaGpaRDaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUebpxaUebiebhyaZSbcaaZEbiAbacaXjaKebqqbhpbgRbhtaXeaXhbgPbgQbgWbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqaaWAaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuaaZzbucbudaZTbhHaYtaYPbqFaRkaSabilbhYaRUaXRaRUbhZaRUbnAbeHbcPbjbbtdbtcbrZbptbyiaXUaXAbwIbiiavAbyxavAaPTaYaaXWbgXaYkaYlaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaaeaaeaaeaaeaaeaaeaaeaaaaacaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUebpxaUebiebhyaZSbcaaZEbiAbacaXjaKebqqbhpbgRbhtaXeaXhbgPbgQbgWbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqaaWAaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuaaZzbucbudaZTbhHaYtaYPbqFaRkaSabilbhYaRUaXRaRUbhZaRUbnAbeHbcPbjbbtdbtcbrZbptbyiaXUaXAbwIbiiavAbyxavAaPTaYaaXWbgXciTciXaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaaeaaeaaeaaeaaeaaeaaeaaaaacaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFaRkaSaaAmaVOaVPaVOaXPaVQaApaSaaBvbcPbcJbcXbcPbeHbdJaXIaVhaVfaViaAlavAaRPavAaXkaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUaZXaZZaZWaTJaYSaZgaZkaZqaZraZtaZvaTJaFUaaaaaaaNKaNZaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqadABbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpbRAbgzcsPcsMcsNcsOcsOcsOcsWcsTblsclWcnTaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPcmjclWaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRaRkcjqcjscjscjsaUzcjscjtcjscttbeHbeHcuAbeHbeHbcPdxSduvdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcnVcsXcEebWjbocbodbodbgXaaeaaaaXqaaaaXyaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUaFUaFUaFUaTJcoIconcpubfNcrjcpRcrqaTJaFUaaaaGqdIJbBHdLCaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBdDUdDYcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcrHcrCcrucrAcrudzQcrucrAcrucsaciachmcfXchocrUcrMcrIcrIcrNcrJcrIcrLcrKcivckxclEclFcrMdAlcipcrMcsocsqcrMcsrcsccsmbyDaWQchWaRUcTiaRUdAraRUaRYaRUdgJbeHbeHcUSbeHbeHbcPdtnduvcigaXUciddxeavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaaebNCbpJbodbpKbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaaaaaaaaadIDbUtbMUbMUdICclMdICbMUbMUaSOaLGaFUaFUckMcElcEmaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10465,20 +10505,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacnwclJbyZcifcnwbrTdJyaqhaKBaKBdACbYwcjBclDctGclUdKGbYwavabrTbZAbKtcdSbKtbKtbKtbZDbZEbZEbZEbZEbOMbOSdokcQabTPclHbQdbQcbQebZXbQdbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQcxPbQnbQobQpbQqaVCbZnchccgZcgZchacdUchachachachiclAbRXckbchhbSaceVceUdtDdurdiddkCdtobSZbTaddvcgNbSZdcBbMNchJchPbMNatJbasaUoaUoaUoaUoaUobZeasMasMckPcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXbnTblXbbmccjccCcksczpbRbbIPbFXbUSbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabFgbFgbFgbFgbFgbFgbFgbFgcEfbFgbFgbFgbFgbFgbFgbFgbFgaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaaeaacaFvaaecnwcqedzMbyYcnwbVBbrTcVRaKBcjKcvobYwcjwcpqcjucjncuSbYwbYwbYwbYwbYwbYwdJpbYwbYwcjIbYcbYdbHMbMebrTbMbaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLaZLaZLctQbRwbRwcezceDbRwcNWbRwcjmcbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdNdaZLbSXbNpbNpbGWaZLcaeaZLcPGcUvcPGbMNcAkcENbTacylcxybSZbTacwnctscvUcrZbMNcfZcgtbMNdHLbXlcfTasMasMasMasMbXfbWTbMicjjbMibMibiNbRhbWLbWMblXbWHbevbevbevbevbevbWGblXbbmcbGcjibgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLKaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqccobYwbSlbSmbRKbYwbRRbSjbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbYtcxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbPObPObPObPObPOcpcaZLcclcboccBcevceicdkbTacgNcgNbSZbTJcgNcgNbSZchdbMNbUnbUlbMNatJbSSbSVbMibMibMibMibMibMjavAbSBbSCbSCbgXbXNbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaaeaaeaaeaaeaaeaaeaaeaaebYOaaebVMaaebSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaabMqbMrbMrbUpbMsbMBbMAaaaaaeaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbxmbAPbxkbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbAcbYTbNYbPQbYTbuSbtobXObTLbTSbTTbSNbtibtmbTVbTXbZIbTVbAObAfchpbPObZKbYZchnbPObWwaZLchkchechYchSchqbXZcjgbVlciebXZcjgbVlbVlbXZcjzcjxbVObVybYFbYGbasaUobULbNaavAavAavAavAavAcpebVGcaobgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabIWaaaaaebWRbKjbKjbKeaaeaaeaaeaaeaaebYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbxjbUkbVcbUMbVubVrbTrbYYbGybrxcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbVxbPObPpaZLbWXbWqbXFcevbZBbXPbXdbXKbXxbXKbXGbXKbZLbXKbrAbMNbRPbRCbPwcsVbMjavAavAavAavAbLAbLIbLJbLWcjJbVQbNRbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaaeaaaaaaaaaaaeaaaaXqaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaaeaacaFvaaeaaabIWaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzcaWdEcbYwbMHbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbrMbsebrCbrDbrHbrIbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwaZLaZLaZLaZLbMNbMNcaYbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAbNJbOqbOBbObcjJbTvbNnbgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaaeaaeaaeaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvAaaaaaaaaaaaeaaaaaaaaactSaaaaaaaaeaaaaaaaaaaaaaaaaakaaeaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwcbjbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbGcbYIbGgbYQbZcccwccvbSEczybSEbFjcctdJAbUIbTLbmybTTcwbcpvbFMcomclLcbcccHbDpbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXcbWbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAbZObYXbZjbZkbZrbZybZzbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaaeaaeaaeaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaaaFvaaaaaeaaebYwcaTbPlcaCbYwbYwbYwbxNbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBbGvcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbmybYNcvBcmkciNciNbYPbCncdCbYPbYUbYVbPOccAcczcnfbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfcbgcaZcbacbncbucbkcyWaaecxsaaecxFaaecxsaaecyHcwTcwEaaecwEcxdaaeaaeaaeaaaaaaaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVajGajGaaaaaeaaabYwbVYbYwbGbbFZbFZcatbFZbFZbVRbZxbZxbZxcbebZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbDebZPbCvbZRbYjbZNbYMbDocdBclyckhckncjDcavbZZbZTbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbBnbDNcgobNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAbVdbWsbTsbBWbWybCybTsbTscfIbgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaacuLaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbmycdwciNciNciNciNckTcmMcmFbYPbYJbOJbOtcsdbWBcuScmzcnxcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAarNbWZbXbbWYbTscnEcnKbgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaaaaeaaeaaeaaacabaaaaaeaaaaaeaaaaaeaaaaFvaaeaaeaaabYwcfdceZcfnbnGcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIEbGibYMbmybYNbCnbXUbPNbQxbQvbIxbQubIQbyubyvaXDaYHbWBcaqbQFbQfbPTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbnEbYwbBobVHbVIbBKbVKbVTbWearNbBWbCsbCybTsbPEaaebgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbRObGrbzUbIIbYwbIKbJCbIkbJabImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbnNbJkcbzbZNciWbmybRGbYPcahcaabZHbKSbDFbRibYPbzBbZvbWzbVNbWBbdObYvbQYbQGbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQsbQLcpqbQEbYvbCHbCRbGZbDPbPEaaebgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaaaaeaaacacbZGbZocaicajcalbmwbYwbYwbFobYwcdZceacebceccedcaAbyzbQjbyzbYwbxzbExbyBcjlbxzbxzbSucyUbEWcemcembFxbHTbFVcemcemcshbZNcbycfvbEUbUqbZNbZNbDbbmybKmbYPbJXbKhbLfbKSbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbPKbEkbIvbYBbYhbEbbEJbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwbYvbTsbMpbTsbTsbIwaaebgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaebwWbwWbwWbwWbwWaaaaFvaaaaaeaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbQDcaAbCBbDnbEPbYwbwPbyqbFlcflbGmbHUbPPbNYbSDcemcqLbCKcfqbDjbnzcemctGbZNceOcfvbHLbHDbGibIlbykbnsbPqbPubPBbPCbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaebTscqAbTsbNIbLCaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaeaaaaaeaaaaaeaaabIWaaaaaeaaaaaeaaeaaeaaebUYaaaaaeaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQbOkcgucgvcgwbLpctecembQLbZNbMJbqVbpkbRVbRtbRsbRubmybRFbRvbRNbTpbUDbQbbQzbTGbQObQCbRdbAxbBxbJsbURbBCbIRbUTbZabUTbIybIpbIDbJybwUbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwaaebTsbBmbTsbSPbTbaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaebJUaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacaccvqcaicvjcaicaibmwbYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmbPmchKbDgchMbLschMchObTBbZNbOPbOKbTAbOObGibRsbRubmybRFdJWbCnbSWbWbbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJTbJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaebFRbFYbFRbVZaaeaaeaacaXyaXyaXyaXyaXyaXyaacaXyaXqaXybVMaaeaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaeaaeaaacacbNAcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfboubMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUbLbbJZbMtbLkbLkbLkbLkcjkcjkbIBcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKbQLbQLbQLbHhbYwaaeaaeaaeaaeaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaabMqbMrbMrbUpbMsbMBbMAaaaaaeaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbxmbAPbxkbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbAcbYTbNYbPQbYTbuSbtobXObTLbTSbTTbSNbtibtmbTVbTXbZIbTVbAObAfchpbPObZKbYZchnbPObWwaZLchkchechYchSchqbXZcjgbVlciebXZcjgbVlbVlbXZcjzcjxbVObVybYFbYGbasaUobULbNaavAavAavAavAavAcpedIBcaobgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabIWaaaaaebWRbKjbKjbKeaaeaaeaaeaaeaaebYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbxjbUkbVcbUMbVubVrbTrbYYbGybrxcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbVxbPObPpaZLbWXbWqbXFcevbZBbXPbXdbXKbXxbXKbXGbXKbZLbXKbrAbMNbRPbRCbPwcsVbMjavAavAavAavAbLAcCdcEAcMLcRVcAfcCcbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaaeaaaaaaaaaaaeaaaaXqaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaaeaacaFvaaeaaabIWaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzcaWdEcbYwbMHbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbrMbsebrCbrDbrHbrIbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwaZLaZLaZLaZLbMNbMNcaYbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAdAodDIdHOdCSdCVdBcdBmbgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaaeaaeaaeaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvAaaaaaaaaaaaeaaaaaaaaactSaaaaaaaaeaaaaaaaaaaaaaaaaakaaeaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwcbjbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbGcbYIbGgbYQbZcccwccvbSEczybSEbFjcctdJAbUIbTLbmybTTcwbcpvbFMcomclLcbcccHbDpbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXcbWbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAdRkbTvdRhbTsbBWdRidRjbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaaeaaeaaeaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaaaFvaaaaaeaaebYwcaTbPlcaCbYwbYwbYwbxNbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBbGvcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbmybYNcvBcmkciNciNbYPbCncdCbYPbYUbYVbPOccAcczcnfbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfdRlbTsbWZbXbbWYbTsaaeaaecxsaaecxFaaecxsaaecyHcwTcwEaaecwEcxdaaeaaeaaeaaaaaaaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVajGajGaaaaaeaaabYwbVYbYwbGbbFZbFZcatbFZbFZbVRbZxbZxbZxcbebZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbDebZPbCvbZRbYjbZNbYMbDocdBclyckhckncjDcavbZZbZTbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbBnbDNcgobNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAdMMdJmdJSbTsbBWbCsbCybTsaaebgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaacuLaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbmycdwciNciNciNciNckTcmMcmFbYPbYJbOJbOtcsdbWBcuScmzcnxcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAdRgbTsdRfbCRdQGdNDaaebgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaaaaeaaeaaeaaacabaaaaaeaaaaaeaaaaaeaaaaFvaaeaaeaaabYwcfdceZcfnbnGcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIEbGibYMbmybYNbCnbXUbPNbQxbQvbIxbQubIQbyubyvaXDaYHbWBcaqbQFbQfbPTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbnEbYwbBobVHbVIbVKbVTbWeavAcpGbTsbTscqAbTsajeaaebgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbRObGrbzUbIIbYwbIKbJCbIkbJabImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbnNbJkcbzbZNciWbmybRGbYPcahcaabZHbKSbDFbRibYPbzBbZvbWzbVNbWBbdObYvbQYbQGbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQscpqbQEbYwcwHcpNbTsbBmbTsbtNaaebgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaaaaeaaacacbZGbZocaicajcalbmwbYwbYwbFobYwcdZceacebceccedcaAbyzbQjbyzbYwbxzbExbyBcjlbxzbxzbSucyUbEWcemcembFxbHTbFVcemcemcshbZNcbycfvbEUbUqbZNbZNbDbbmybKmbYPbJXbKhbLfbKSbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbPKbEkbIvbYBbYhbEbbEJbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwcnPcocbFRbFYbFRajGaaebgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaebwWbwWbwWbwWbwWaaaaFvaaaaaeaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbQDcaAbCBbDnbEPbYwbwPbyqbFlcflbGmbHUbPPbNYbSDcemcqLbCKcfqbDjbnzcemctGbZNceOcfvbHLbHDbGibIlbykbnsbPqbPubPBbPCbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaecokcokcokaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaeaaaaaeaaaaaeaaabIWaaaaaeaaaaaeaaeaaeaaebUYaaaaaeaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQbOkcgucgvcgwbLpctecembQLbZNbMJbqVbpkbRVbRtbRsbRubmybRFbRvbRNbTpbUDbQbbQzbTGbQObQCbRdbAxbBxbJsbURbBCbIRbUTbZabUTbIybIpbIDbJybwUbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwcxocokcyWcyWcyWaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaebJUaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacaccvqcaicvjcaicaibmwbYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmbPmchKbDgchMbLschMchObTBbZNbOPbOKbTAbOObGibRsbRubmybRFdJWbCnbSWbWbbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJTbJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaacokcyWcyWaaaaaeaaeaacaXyaXyaXyaXyaXyaXyaacaXyaXqaXybVMaaeaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaeaaeaaacacbNAcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfboubMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUbLbbJZbMtbLkbLkbLkbLkcjkcjkbIBcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKcxibQLbQLbHhbYwaaeaaeaaeaaeaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaecaccalchrcalbNZbZlcjBcjTbYwbQKbYwbSkcjAcjVcjCbSLcaAbKXcjFbShbYwbPYcehcehcehcehcehcjabAtbTMbNHbKVcjMbHFcjOcsCcembwQbPzbPzbOjbxYbxWbuXbokbHVbpibHYbHZbIabSMbHIbHGbHKbHJbHNbOabHQbHOckfckgbOgckibtGckkcklckmbphcjkdJvbJcbOQbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaaeaaaaaaaaaaaeaaeaaeaacaXqaXqaXqaacaXqaXqaXqaacaXqbSwaXqaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaaaaeaaeaaeaaaaaacvTaaeaaaaaaaaeaaeaaaaaaaFvaaaaaeaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemdKQdKRdCGcoCcoCcoCcoCcoCcoCcoCcxJdCLcxJcxJctPcrncrobYwcmzdQwdEcbYwcjccjcdAgcjcckUctYckYckZbOgclaclbclccldcledQxcjkclgdHadHccxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaaeaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaaeaaaaaabUYaaaaaeaaaaaaaaaaaaaaebYwbYwbYwbYwcgKbQKbZhcucdCMbQLcEJcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctodKOctqbTSbYNbYwdDWdNjdODbYwctEdBlclXctFckUcAJcmbcmcdKPcmecmfcmgdDXcmidPxcjkdQvcmldGMcwScuobYvbCQbFAdEadEbbZhdLadEadLbcotclraaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10500,7 +10540,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcD aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaaeaaeaaebYwcmzcdYdIncxgcBJcBIclpcBLcBHcEzdKubYwcogbJbbGwcBDcwMcuxcAZcBbcBacuxcAXcAYcANcuxcALcAMcAHczFbPScvcdBucsAcuicmQcsedAYcsebWacvVclqcAIcAtdNVcmxcAgczkcDgcBPbQLcxCbYwcmIcmwcpkbYwdDZbApdCDbYwbYwbYwajGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaacwucCacCbczccBRcCecBibRabRWcBNcJTcBMcwuaaaaaeaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCbYwbYwbYwbYwbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsectGcsecvKcwPbWBcBPcBPcBPcBPcBPcBPcBPcBPbQLcrQdJncAjcAdcqHcygcygbAscyicygaaaaaaaaaaaaaaeaaeaaaaaaaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJbAycyJaaaaaaaBVbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbdIKcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcslcytcyzcymcykcytcyoclpclpclpdILclpclpclpcudbYwbWNctVcswcygcyubAzcywcygaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaaeaaeaBVcGkcGjbGhcrfcGbcGacDTcMccEAbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwbYwcdYcOzbWucxqbQLcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcLubAHcoYcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaaeaaeaBVcGkcGjbGhcrfcGbcGacDTcMcdRmbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwbYwcdYcOzbWucxqbQLcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcLubAHcoYcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaeaaebSPcECcEBcNKcOtcOGcPtcPFcPRcwuaaaaaaaBVdKvcMQbGhcMYcMDcMhbSbbGhbGhbpYcRucPrdJJcQLdJacRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaaaaebYwbYwcNnbYwclrbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwbEucygcrgdAscqFcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaeaaaaaacEEaaeaaecwucwucwucwucwucwucwuaaaaaaaBVcoKcRMbGhcOMcOZcEDcribGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaaaaeaaabYwdKxbYwaaaaaeaaacxpcwicxpaaaaaaaaeaaabYwcuJbQLbQLdMgbGwcNRbGwcxkcwIcygcqfczscqgcygaaaaaeaaaaaeaaeaaaaaaaaebUYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaeaaeaaeaaaaaaaaaaaeaaeaaeaaaaaaaaaaaeaaaaaaaaaaBVcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaaaaeaaebYwcNnbYwaaeaaeaaecxMclvcxMaaeaaeaaeaaabYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygczWdAtczWaaeaaaaaeaaaaaaaaeaaeaaeaaeaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/metastation.dm b/_maps/metastation.dm index c8d49a8b6cc..5b6f43bfb72 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -1,8 +1,8 @@ #if !defined(MAP_FILE) - #include "map_files\MetaStation.v39G.dmm" + #include "map_files\MetaStation.v39H.dmm" - #define MAP_FILE "MetaStation.v39G.dmm" + #define MAP_FILE "MetaStation.v39H.dmm" #define MAP_NAME "MetaStation" #elif !defined(MAP_OVERRIDE) From 95646d4f93fb42429a022191599755915a711525 Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 22 Mar 2014 18:15:05 +0200 Subject: [PATCH 069/102] Nerfs manifested ghosts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Manifested ghosts are dummies so they can’t be captured in soulstones. Now they get status flags that humans usually have. Fixes #2934. --- code/game/gamemodes/cult/runes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index a5e7d64c656..80a4782f206 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -407,7 +407,7 @@ var/list/sacrificed = list() "\red You hear liquid flowing.") D.real_name = "[pick(first_names_male)] [pick(last_names)]" D.universal_speak = 1 - D.status_flags &= ~GODMODE + D.status_flags = CANSTUN|CANWEAKEN|CANPARALYSE|CANPUSH D.key = ghost.key From f0b57e5bfbb8702a4712e0df5a34df136ad19661 Mon Sep 17 00:00:00 2001 From: Metacide Date: Sat, 22 Mar 2014 16:41:22 +0000 Subject: [PATCH 070/102] Updated MetaStation.v39H.dmm to MetaStation.v39H.II.dmm *Fixed missing air alarm in the incinerator room. --- .../{MetaStation.v39H.dmm => MetaStation.v39H.II.dmm} | 2 +- _maps/metastation.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename _maps/map_files/{MetaStation.v39H.dmm => MetaStation.v39H.II.dmm} (99%) diff --git a/_maps/map_files/MetaStation.v39H.dmm b/_maps/map_files/MetaStation.v39H.II.dmm similarity index 99% rename from _maps/map_files/MetaStation.v39H.dmm rename to _maps/map_files/MetaStation.v39H.II.dmm index c71d182583c..a651a9613e1 100644 --- a/_maps/map_files/MetaStation.v39H.dmm +++ b/_maps/map_files/MetaStation.v39H.II.dmm @@ -6864,7 +6864,7 @@ "cBZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cCa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cCb" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) -"cCc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cCc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cCd" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "plasma tank pump"},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cCe" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/virology) "cCf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) diff --git a/_maps/metastation.dm b/_maps/metastation.dm index 5b6f43bfb72..c7914a57547 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -1,8 +1,8 @@ #if !defined(MAP_FILE) - #include "map_files\MetaStation.v39H.dmm" + #include "map_files\MetaStation.v39H.II.dmm" - #define MAP_FILE "MetaStation.v39H.dmm" + #define MAP_FILE "MetaStation.v39H.II.dmm" #define MAP_NAME "MetaStation" #elif !defined(MAP_OVERRIDE) From 0a76e44fef562fc302c941d817791ece365b069a Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 22 Mar 2014 17:52:09 +0100 Subject: [PATCH 071/102] Reducing the amount of sugar and coco in chocolate bar. Chocolate bar now contains only 3 nutriment, 2 sugar and 2 coco to match the amounts needed to make the chocolate bar (2milk, 2 coco, 2 sugar). --- code/modules/reagents/reagent_containers/food/snacks.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 75ce2979889..a79589dcbd2 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -292,9 +292,9 @@ bitesize = 2 New() ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("sugar", 5) - reagents.add_reagent("coco", 5) + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sugar", 2) + reagents.add_reagent("coco", 2) attack_self(mob/user) if(wrapped) From 5ab30d4d8318f14534f2622136121c36d89ec03d Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 22 Mar 2014 18:53:21 +0000 Subject: [PATCH 072/102] Changelog update for Gravity Generator --- html/changelog.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 485f5dd12ba..9c969bd18f5 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -62,6 +62,10 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • As a result, bombs and the singularity should be much less laggy.
  • There may be issues with "phantom objects" or other problems with stuff that's suppoed to be deleted or objects interacting with deleted objects. Please report any issues right away!
  • +

    Giacom updated:

    +
      +
    • Gravity is no longer beamed from CentCom! Instead, there is a new gravity generator stored near Engineering that will provide all the gravity for the station and the z level. Please remember that it gives off a lot of radiation when charging or discharging, so wear protection.
    • +
    From b725afe570e9ce21f0fcff8e7a4cf470c020c027 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sat, 22 Mar 2014 15:02:33 -0700 Subject: [PATCH 073/102] OH SHIT I'M SORRY N3X15 PLEASE DON'T KILL ME --- html/changelog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelog.html b/html/changelog.html index 9c969bd18f5..b94fdf4bfb0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -58,7 +58,7 @@ should be listed in the changelog upon commit tho. Thanks. -->

    22 March 2014

    MrPerson updated:

      -
    • Added a new, somewhat experimental system to delete things. This is basically a port from /vg/, so big thanks to N3X13.
    • +
    • Added a new, somewhat experimental system to delete things. This is basically a port from /vg/, so big thanks to N3X15.
    • As a result, bombs and the singularity should be much less laggy.
    • There may be issues with "phantom objects" or other problems with stuff that's suppoed to be deleted or objects interacting with deleted objects. Please report any issues right away!
    From 2186a47431922d95726ce2c6691f8b5200c34ab8 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Sat, 22 Mar 2014 16:51:22 -0600 Subject: [PATCH 074/102] updated a del to a qdel --- code/game/machinery/doors/airlock.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index fd90b98a4fb..b9e7e23edb3 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -937,7 +937,7 @@ About the new airlock wires panel: if(33) new/obj/structure/door_assembly/door_assembly_highsecurity(src.loc) if(emagged) user << "You discard the damaged electronics." - del(src) + qdel(src) return user << "You removed the airlock electronics!" From 9bb2712440c7a2fc3de219e1e2c3caa7a42778b8 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sat, 22 Mar 2014 17:49:45 -0700 Subject: [PATCH 075/102] No more message spam from pAI's. --- code/modules/mob/living/silicon/pai/life.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 0f56249f060..385c0ae6760 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -7,6 +7,7 @@ for (var/mob/M in viewers(T)) M.show_message("\red [src.cable] rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) qdel(src.cable) + cable = null regular_hud_updates() if(src.secHUD == 1) From 583787f70b152c7998c2bc1c28fdb1645e0407ea Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sat, 22 Mar 2014 21:55:52 -0700 Subject: [PATCH 076/102] Fixes the bug where players get deleted because of hallucinations. How the fuck did I screw this up so badly... --- code/modules/flufftext/Hallucination.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 01ebe4fb2e2..72f59dbf7b0 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -77,7 +77,7 @@ mob/living/carbon/proc/handle_hallucinations() halitem.name = "Flashbang" if(client) client.screen += halitem spawn(rand(100,250)) - qdel(src) + qdel(halitem) if(26 to 40) //Flashes of danger //src << "Danger Flash" From f97254af6d6921357a0967ab092a0e1ebe31662d Mon Sep 17 00:00:00 2001 From: MrPerson Date: Sun, 23 Mar 2014 00:20:20 -0700 Subject: [PATCH 077/102] Make holograms GC correctly. The hologram was getting deleted every tick, which caused the timer to reset, which blocked anything else from ever getting tested or force del()'d. --- code/game/machinery/hologram.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 0b440c21f66..c1b0248ac3c 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -106,6 +106,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/proc/clear_holo() // hologram.SetLuminosity(0)//Clear lighting. //handled by the lighting controller when its ower is deleted qdel(hologram)//Get rid of hologram. + hologram = null if(master.current == src) master.current = null master = null//Null the master, since no-one is using it now. From 9cf7606ef16008f13b1904efb42a76cd27130f45 Mon Sep 17 00:00:00 2001 From: Razharas Date: Sun, 23 Mar 2014 13:37:12 +0400 Subject: [PATCH 078/102] Fixes exofabs infinity materials This is what qdel does to the old code --- code/game/mecha/mech_fabricator.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c6f8cdf7afc..fbebfee58a5 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -780,7 +780,7 @@ if(src.resources[material] < res_max_amount) var/count = 0 src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey - while(src.resources[material] < res_max_amount && stack) + while(src.resources[material] < res_max_amount && stack && stack.amount > 0) src.resources[material] += amnt stack.use(1) count++ From 649f8c1c9d2444e99c9219180915804c16c8fa0b Mon Sep 17 00:00:00 2001 From: fleure Date: Sun, 23 Mar 2014 13:52:26 +0000 Subject: [PATCH 079/102] Fixed medical armband colour --- code/game/jobs/job/security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 159086f199d..42e2368ca52 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -268,4 +268,4 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science") attachTie(new /obj/item/clothing/tie/armband/science) /obj/item/clothing/under/rank/security/med/New() - attachTie(new /obj/item/clothing/tie/armband/medgreen) \ No newline at end of file + attachTie(new /obj/item/clothing/tie/armband/medblue) \ No newline at end of file From 4765d3098dcebd4d531325d3b96d20c7ff908475 Mon Sep 17 00:00:00 2001 From: Metacide Date: Sun, 23 Mar 2014 14:38:19 +0000 Subject: [PATCH 080/102] Updated MetaStation.v39H.II.dmm to MetaStation.v39I.dmm *Fixed path issue with medbay sign preventing compile. *Implemented blue medbay, despite thinking green looks that bit nicer. *Added missing prison intercom which can receive but not send. *Added a small new security post to escape, which may help in maintaining order during evacuation. *Added a "TAKE ONLY WHAT YOU NEED" sign to the mineral storeroom, in vain hope. *Added more descriptive names to many research division cameras. *Fixed incorrect area designation in upper area of the gambling section of the maltese falcon. *Replaced dirt piles in the garden with proper hydroponics trays, and removed trays from breakrooms. --- ...ation.v39H.II.dmm => MetaStation.v39I.dmm} | 533 +++++++++--------- _maps/metastation.dm | 4 +- 2 files changed, 281 insertions(+), 256 deletions(-) rename _maps/map_files/{MetaStation.v39H.II.dmm => MetaStation.v39I.dmm} (98%) diff --git a/_maps/map_files/MetaStation.v39H.II.dmm b/_maps/map_files/MetaStation.v39I.dmm similarity index 98% rename from _maps/map_files/MetaStation.v39H.II.dmm rename to _maps/map_files/MetaStation.v39I.dmm index a651a9613e1..d847d78cb8f 100644 --- a/_maps/map_files/MetaStation.v39H.II.dmm +++ b/_maps/map_files/MetaStation.v39I.dmm @@ -32,7 +32,7 @@ "aaF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "aaG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/camera{c_tag = "Labor Shuttle Control Desk"; dir = 4},/obj/machinery/computer/shuttle/labor,/obj/machinery/light{dir = 8},/obj/machinery/door_control{id = "prison release"; name = "Prison Release Lockdown"; pixel_x = -28; pixel_y = 0; req_access_txt = "2"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aaH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) -"aaI" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aaI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aaJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aaK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fore) "aaL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod3/station) @@ -91,7 +91,7 @@ "abM" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/plating,/area/maintenance/fore) "abN" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "abO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboard) -"abP" = (/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"abP" = (/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "abQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden) "abR" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) "abS" = (/obj/structure/closet/crate/medical,/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -102,7 +102,7 @@ "abX" = (/obj/structure/rack,/obj/item/clothing/suit/hazardvest,/turf/simulated/floor/plating,/area/maintenance/fore) "abY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/auxport) "abZ" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fore) -"aca" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aca" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "acb" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/starboard) "acc" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/flasher{id = "PCell 3"; pixel_x = -28},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "acd" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) @@ -118,8 +118,8 @@ "acn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/starboard) "aco" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/starboard) "acp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"acq" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"acr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"acq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"acr" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "acs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fore) "act" = (/obj/machinery/door/airlock/glass_security{name = "Long-Term Cell 3"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "acu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -201,7 +201,7 @@ "adS" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/crew_quarters/courtroom) "adT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig Control"; req_access_txt = "3"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/security/warden) "adU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"adV" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"adV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "adW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "adX" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/tie/red,/obj/item/clothing/head/soft/red,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "adY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fore) @@ -222,7 +222,7 @@ "aen" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 22},/obj/machinery/computer/crew,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aep" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/security/main) -"aeq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aeq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aer" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "aes" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/disposal) "aet" = (/obj/structure/rack,/obj/item/clothing/suit/poncho,/obj/item/clothing/head/sombrero,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -234,7 +234,7 @@ "aez" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 1},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aeA" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) -"aeC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aeC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fore) "aeE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "aeF" = (/obj/structure/closet/secure_closet/warden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) @@ -252,7 +252,7 @@ "aeR" = (/obj/machinery/disposal,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -26},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/camera{c_tag = "Fitness Room - Aft"; dir = 1},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aeS" = (/obj/structure/sign/poster{pixel_y = -32},/obj/item/weapon/vending_refill/cigarette,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"aeU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aeU" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aeV" = (/obj/machinery/vending/coffee,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aeW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aeX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -655,7 +655,7 @@ "amE" = (/obj/structure/stool/bed/chair,/obj/machinery/flasher{id = "holdingflash"; pixel_x = -25},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amG" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) -"amH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/hydroponics/constructable,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"amH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "amI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/security/brig) "amK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig) @@ -689,7 +689,7 @@ "anm" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "ann" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "ano" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/camera/autoname{dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"anp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"anp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "anq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "anr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "ans" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -893,7 +893,7 @@ "ari" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "arj" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "ark" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal) -"arl" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arl" = (/obj/machinery/door/airlock/glass{name = "space-bridge access"},/obj/machinery/door_control{id = "supplybridge"; name = "Shuttle Bay Space Bridge Control"; pixel_x = 0; pixel_y = 27; req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arm" = (/obj/structure/stool/bed/chair/wood/normal{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep) "arn" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aro" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fore) @@ -929,7 +929,7 @@ "arS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters/sleep) -"arV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"arV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/engine/gravity_generator) "arX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "arY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboard) @@ -1238,7 +1238,7 @@ "axP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) "axR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) -"axS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"axS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "axT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/door_control{id = "FitnessShower"; name = "Lock Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Fitness Room - Fore"; dir = 2},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "axV" = (/obj/machinery/door/poddoor/shutters{id = "qm_mine_warehouse"; name = "Warehouse Shutters"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -1265,7 +1265,7 @@ "ayq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "ayr" = (/obj/machinery/door_control{id = "qm_mine_warehouse"; name = "Warehouse Door Control"; pixel_x = 24; pixel_y = 28; req_access_txt = "48"},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "ays" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"ayt" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/turf/simulated/floor,/area/security/prison) +"ayt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "ayu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "ayv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "ayw" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1436,14 +1436,14 @@ "aBF" = (/obj/machinery/flasher/portable,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/security/warden) "aBG" = (/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "aBH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/secure/briefcase{pixel_x = -2},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/cartridge/detective,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aBI" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor,/area/engine/break_room) +"aBI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aBJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/gravity_generator) "aBK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aBL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/fore) "aBM" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aBN" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/handcuffs,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/fore) "aBO" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/security{name = "Security-Storage Backroom"; req_access = null; req_access_txt = "63"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/fore) -"aBP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"aBP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance_hatch{name = "Supply Bay Bridge Access"; req_access_txt = "0"; req_one_access_txt = "0"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aBQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "aBR" = (/obj/machinery/light/small,/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/fore) "aBS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"}) @@ -1563,7 +1563,7 @@ "aEc" = (/obj/machinery/space_heater,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aEd" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aEe" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aEf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/obj/machinery/camera{c_tag = "Engineering - Foyer - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"aEf" = (/obj/machinery/camera{c_tag = "Prison Chamber"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor,/area/security/prison) "aEg" = (/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) "aEh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) "aEi" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -1790,7 +1790,7 @@ "aIv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/fore) "aIw" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"}) "aIx" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/bikehorn/rubberducky,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"aIy" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) +"aIy" = (/obj/machinery/camera{c_tag = "Maltese Falcon - Bar"; dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aIz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) "aIA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "aIB" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/janitor) @@ -2380,7 +2380,7 @@ "aTN" = (/obj/structure/rack,/obj/item/clothing/gloves/fyellow,/turf/simulated/floor/plating,/area/maintenance/starboard) "aTO" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/storage) "aTP" = (/obj/structure/table,/obj/item/clothing/gloves/fyellow,/obj/item/device/gps,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/storage/primary) -"aTQ" = (/obj/machinery/camera{c_tag = "Bar"; dir = 2; network = list("SS13")},/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag{pixel_y = 5},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aTQ" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Maltese Falcon - Gambling Den Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aTR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/turf/simulated/floor,/area/janitor) "aTS" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area/space) "aTT" = (/obj/machinery/vending/boozeomat,/turf/simulated/wall,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) @@ -2459,7 +2459,7 @@ "aVo" = (/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) "aVp" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = 38; pixel_y = -4},/obj/machinery/door_control{id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = 25; pixel_y = -4; req_access_txt = "28"},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 25; pixel_y = 6; req_access_txt = "28"},/obj/machinery/flasher_button{id = "hopflash"; pixel_x = 38; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aVq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/heads) -"aVr" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"aVr" = (/obj/machinery/computer/arcade,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "aVt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "aVu" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -2489,13 +2489,13 @@ "aVS" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor/wood,/area/crew_quarters/heads) "aVT" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "aVU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aVV" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"aVW" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/maintenance/starboard) +"aVV" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"aVW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVY" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Maltese Falcon APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aVZ" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 29},/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering) "aWa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"aWb" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "aWc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/tcommsat/computer{name = "\improper Telecoms Control Room"}) "aWd" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/bridge) "aWe" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/storage/primary) @@ -2566,10 +2566,10 @@ "aXr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/port) "aXs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXt" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/primary/central) -"aXu" = (/obj/machinery/computer/arcade,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/maintenance/starboard) -"aXv" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/maintenance/starboard) +"aXu" = (/obj/structure/table,/turf/simulated/floor,/area/engine/break_room) +"aXv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39I:140323"},/area/hallway/primary/port) "aXw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"aXx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/wood,/area/maintenance/starboard) +"aXx" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/obj/machinery/camera{c_tag = "Engineering - Foyer - Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "aXy" = (/obj/structure/lattice,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/space) "aXz" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/pill_bottle/dice,/obj/structure/sign/maltesefalcon/left{pixel_y = 32},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/carpet,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "aXA" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) @@ -3049,7 +3049,7 @@ "bgG" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard) "bgH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) "bgI" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/turf/simulated/floor,/area/storage/art) -"bgJ" = (/obj/machinery/hydroponics/constructable,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) +"bgJ" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "bgK" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area/space) "bgL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bgM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -3308,7 +3308,7 @@ "blF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "blG" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1; name = "command chair"},/turf/simulated/floor/carpet,/area/bridge) "blH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Dormitories - Aft"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) -"blI" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"blI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "blJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "blK" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced,/obj/machinery/light_switch{pixel_x = -28; pixel_y = 0},/obj/item/weapon/storage/secure/briefcase{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/lockbox/medal{pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "blL" = (/obj/machinery/light{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/status_display{density = 0; pixel_x = 32; pixel_y = 0; supply_display = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) @@ -3609,7 +3609,7 @@ "bru" = (/obj/machinery/power/apc{dir = 4; name = "Arrivals APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "brv" = (/obj/structure/closet/secure_closet/security/cargo,/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "brw" = (/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/spray/pestspray{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh{pixel_x = 2; pixel_y = 1},/obj/structure/table,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"brx" = (/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"brx" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "bry" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "brz" = (/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage) "brA" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/clothing/suit/apron,/obj/item/clothing/head/greenbandana,/obj/item/clothing/head/greenbandana,/obj/item/clothing/tie/armband/hydro,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hydroponics) @@ -3619,7 +3619,7 @@ "brE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/port) "brF" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "brG" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor{dir = 5; icon_state = "neutral"},/area/hallway/primary/central) -"brH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) +"brH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "brI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/aft) "brJ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/camera{c_tag = "MiniSat Exterior Starboard"; dir = 4; network = list("MiniSat")},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "brK" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "MiniSat Exterior Access Fore"; dir = 2; network = list("MiniSat")},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) @@ -3704,7 +3704,7 @@ "btl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engineering) "btm" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "btn" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/engineering) -"bto" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26; pixel_y = 28},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bto" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "btp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "btq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "btr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/storage/primary) @@ -3786,7 +3786,7 @@ "buP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard) "buQ" = (/turf/simulated/wall,/area/security/vacantoffice) "buR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/security/vacantoffice) -"buS" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"buS" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "buT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/engine/engineering) "buU" = (/obj/machinery/light_switch,/turf/simulated/wall,/area/engine/engineering) "buV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) @@ -3863,7 +3863,7 @@ "bwo" = (/obj/machinery/photocopier,/obj/machinery/camera{c_tag = "Law Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/wood,/area/lawoffice) "bwp" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bwq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"bwr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bwr" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) "bws" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bwt" = (/turf/simulated/wall,/area/engine/engineering) "bwu" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/qm{pixel_x = 0; pixel_y = 0},/obj/machinery/status_display{density = 0; pixel_x = 32; pixel_y = 0; supply_display = 1},/turf/simulated/floor,/area/quartermaster/qm) @@ -3887,7 +3887,7 @@ "bwM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central) "bwN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bwO" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/crew_quarters/locker) -"bwP" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) +"bwP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bwQ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bwR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fore Primary Hallway"},/turf/simulated/floor,/area/hallway/primary/fore) "bwS" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat Central Foyer"; req_one_access_txt = "32;19"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"}) @@ -3976,7 +3976,7 @@ "byx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "byy" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/computer/security/mining,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "byz" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/surgery) -"byA" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) +"byA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hydroponics/constructable,/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/construction{name = "\improper Garden"}) "byB" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper{name = "Sleepers"}) "byC" = (/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "byD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) @@ -3993,7 +3993,7 @@ "byO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "byP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/courtroom) "byQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/secondary/construction{name = "\improper Garden"}) -"byR" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/sleeper{name = "Sleepers"}) +"byR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "byS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "byT" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 0; icon_state = "intact_off"; name = "Air to Port"; on = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/storage) "byU" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) @@ -4056,7 +4056,7 @@ "bzZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig) "bAa" = (/obj/machinery/door/airlock{id_tag = "Toilet1"; name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "bAb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"bAc" = (/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bAc" = (/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/camera{c_tag = "Research and Development"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor,/area/toxins/lab) "bAd" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes{capacity = 9e+006; charge = 1e+006},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/chiefs_office) "bAe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "bAf" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/airlock_electronics,/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) @@ -4070,7 +4070,7 @@ "bAn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/brig) "bAo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bAp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) -"bAq" = (/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/toxins/lab) +"bAq" = (/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bAr" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "redfull"},/area/maintenance/storage) "bAs" = (/obj/machinery/door/airlock/engineering{name = "Aft Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "bAt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) @@ -4170,7 +4170,7 @@ "bCj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bCk" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - O2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bCl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bCm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bCm" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "bCn" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/toxins/lab) "bCo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "bCp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/engine/engineering) @@ -4203,7 +4203,7 @@ "bCQ" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bCR" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; luminosity = 2; on = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "bCS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/locker) -"bCT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) +"bCT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Research Division Hallway - Central"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bCU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) "bCV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/locker) "bCW" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -4232,7 +4232,7 @@ "bDt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "bDu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bDv" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/engineering_hacking{pixel_x = 4; pixel_y = 5},/obj/item/weapon/book/manual/wiki/engineering_construction{pixel_x = 0; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/book/manual/engineering_singularity_safety{pixel_x = -4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering) -"bDw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) +"bDw" = (/obj/structure/table,/obj/structure/sign/bluecross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) "bDx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engine/engineering) "bDy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) "bDz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering) @@ -4255,7 +4255,7 @@ "bDQ" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bDR" = (/obj/machinery/vending/cola,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/gateway) "bDS" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) -"bDT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Research Break Room"; dir = 1; network = list("SS13","RD")},/obj/structure/noticeboard{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bDT" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{dir = 9; icon_state = "whitepurple"},/area/toxins/lab) "bDU" = (/turf/simulated/wall,/area/toxins/telesci) "bDV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bDW" = (/obj/machinery/computer/security/mining,/turf/simulated/floor,/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -4368,11 +4368,11 @@ "bFZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bGa" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) "bGb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bGc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bGc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bGd" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/supply{name = "Security Post - Cargo"}) "bGe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/medbay{name = "Medbay Central"}) "bGf" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) -"bGg" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bGg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) "bGh" = (/turf/simulated/wall,/area/chapel/office) "bGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/chemistry) "bGj" = (/turf/simulated/floor{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) @@ -4381,7 +4381,7 @@ "bGm" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/cryo) "bGn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bGo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) -"bGp" = (/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bGp" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) "bGq" = (/obj/structure/closet/secure_closet/miner,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bGr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bGs" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) @@ -4398,8 +4398,8 @@ "bGD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/turf/simulated/floor/plating,/area/toxins/telesci) "bGE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/toxins/telesci) "bGF" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = -24},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) -"bGG" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) +"bGG" = (/obj/structure/stool/bed/roller,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) +"bGH" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/sleeper{name = "Sleepers"}) "bGI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/gateway) "bGJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bGK" = (/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4446,7 +4446,7 @@ "bHz" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/white,/turf/simulated/floor/wood,/area/security/vacantoffice) "bHA" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bHB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bHC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) +"bHC" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bHD" = (/obj/machinery/chem_dispenser,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bHE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/reagent_containers/syringe/antitoxin,/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = -1; pixel_y = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "bHF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/folder/blue,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -4480,9 +4480,9 @@ "bIh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/hand_labeler_refill,/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "bIi" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bIk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bIk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/noticeboard{pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Research Division - Break Room"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "bIl" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) -"bIm" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) +"bIm" = (/obj/item/weapon/folder/white,/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/design_disk,/obj/item/weapon/disk/design_disk,/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/toxins/lab) "bIn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"}) "bIo" = (/obj/item/device/radio/beacon,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/teleporter{name = "\improper Teleporter Room"}) "bIp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4506,8 +4506,8 @@ "bIH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bII" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bIJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bIK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bIL" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"; pipe_color = "blue"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"}) +"bIK" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/structure/extinguisher_cabinet{pixel_x = 24; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"bIL" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bIM" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bIN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/central) "bIO" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/pen,/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4522,21 +4522,21 @@ "bIX" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bIY" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "bIZ" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"bJa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bJa" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bJb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "bJd" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bJe" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/structure/stool/bed/roller,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bJf" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) -"bJg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bJg" = (/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bJh" = (/obj/machinery/mass_driver{dir = 2; id = "chapelgun"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/device/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main) "bJi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bJj" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 0; pixel_y = 23},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bJk" = (/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) -"bJl" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bJl" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bJm" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"bJn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"bJo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bJn" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) +"bJo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bJp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library) "bJq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bJr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) @@ -4547,10 +4547,10 @@ "bJw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bJx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bJy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bJz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bJz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bJA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/construction) "bJB" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bJC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bJC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bJD" = (/obj/machinery/atmospherics/trinary/filter{density = 0; dir = 8; req_access = "0"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "bJE" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bJF" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/construction) @@ -4560,7 +4560,7 @@ "bJJ" = (/obj/structure/closet/firecloset,/turf/simulated/floor,/area/construction) "bJK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Telescience Lab APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bJL" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/toxins/telesci) -"bJM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) +"bJM" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) "bJN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/toxins/telesci) "bJO" = (/obj/structure/cable/yellow,/obj/machinery/shieldwallgen,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/teleporter{name = "\improper Teleporter Room"}) "bJP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/gateway) @@ -4577,7 +4577,7 @@ "bKa" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Mining"; departmentType = 0; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 10; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bKb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "bKc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bKd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) +"bKd" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "bKe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "bKf" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) "bKg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage) @@ -4591,7 +4591,7 @@ "bKo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bKq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bKr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bKr" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bKs" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bKt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bKu" = (/obj/machinery/mecha_part_fabricator{dir = 1; id = "0"; name = "counterfeit fabricator"; req_access = "0"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4623,7 +4623,7 @@ "bKU" = (/obj/structure/window/reinforced,/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) "bKV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bKW" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; dir = 4; icon_state = "intact-g"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/maintenance/storage) -"bKX" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"bKX" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bKY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bKZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Cargo Bay - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/storage) "bLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4645,10 +4645,10 @@ "bLq" = (/obj/structure/closet/l3closet/virology,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology) "bLr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) -"bLt" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bLt" = (/obj/structure/stool/bed,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/surgery) "bLu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/gateway) "bLv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 4; pixel_y = 2},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bLw" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bLw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "bLx" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bLy" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bLz" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -4703,7 +4703,7 @@ "bMw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/library) "bMx" = (/obj/item/trash/semki,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bMy" = (/obj/structure/closet,/obj/item/stack/sheet/glass{amount = 12},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bMz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) +"bMz" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/surgery) "bMA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/portsolar) "bMB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "bMC" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -4711,7 +4711,7 @@ "bME" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/hallway/secondary/entry{name = "Arrivals"}) "bMF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor,/area/hallway/secondary/entry{name = "Arrivals"}) "bMG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) -"bMH" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bMH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/surgery) "bMI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"}) "bMJ" = (/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bMK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 10; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/maintenance/storage) @@ -4735,14 +4735,14 @@ "bNc" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bNd" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) "bNe" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage) -"bNf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) "bNg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bNh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "bNi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"bNj" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay2{name = "Medbay Storage"}) -"bNk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bNl" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bNm" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bNj" = (/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) +"bNk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Research Division Hallway - Starboard"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bNl" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/cryo) +"bNm" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bNn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/engine/gravity_generator) "bNo" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating,/area/maintenance/starboard) "bNp" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) @@ -4770,13 +4770,13 @@ "bNL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/engine,/area/toxins/telesci) "bNM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/turf/simulated/floor/engine,/area/toxins/telesci) "bNN" = (/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) -"bNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bNO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bNP" = (/mob/living/simple_animal/pug{desc = "It's Pugley III, the loveable four-legged test subject."; dir = 8; name = "Pugley III"; real_name = "Pugley III"},/turf/simulated/floor/engine,/area/toxins/telesci) -"bNQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bNQ" = (/obj/machinery/camera{c_tag = "Medbay Storage"; dir = 8; network = list("SS13","Medbay")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bNR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/engine/gravity_generator) "bNS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/mining{name = "Mining Office"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "bNT" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/toxins/telesci) -"bNU" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bNU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bNV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bNW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "greencorner"},/area/hallway/primary/central) "bNX" = (/obj/item/device/radio/beacon,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/engine,/area/toxins/telesci) @@ -4800,8 +4800,8 @@ "bOp" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bOq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) "bOr" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"bOs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) -"bOt" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) +"bOs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"bOt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay2{name = "Medbay Storage"}) "bOu" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "o2_in"; on = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bOv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "o2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bOw" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "n2_in"; on = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/maintenance/storage) @@ -4824,7 +4824,7 @@ "bON" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bOO" = (/obj/machinery/chem_master,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; dir = 1; name = "requests board"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "whiteyellow"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bOP" = (/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/screwdriver{pixel_x = -2; pixel_y = 6},/obj/machinery/power/apc{dir = 8; name = "Chemistry APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/radio/headset/headset_med,/obj/structure/table,/turf/simulated/floor{dir = 10; icon_state = "whiteyellow"},/area/medical/chemistry) -"bOQ" = (/obj/machinery/computer/area_atmos,/obj/machinery/light/small{dir = 1},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Toxins - Storage"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"bOQ" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/rxglasses,/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay2{name = "Medbay Storage"}) "bOR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bOS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bOT" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) @@ -4873,9 +4873,9 @@ "bPK" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/telesci) "bPL" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor,/area/maintenance/storage) "bPM" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bPN" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab) +"bPN" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/weapon/storage/belt/medical{pixel_x = 0; pixel_y = 2},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/gun/syringe,/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bPO" = (/turf/simulated/wall,/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"bPP" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bPP" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bPQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bPR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bPS" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/assembly/robotics) @@ -4885,7 +4885,7 @@ "bPW" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastleft{dir = 1; name = "Kitchen Window"; req_access_txt = "28"; req_one_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/paper,/obj/machinery/door/window/eastleft{dir = 2; name = "Hydroponics Window"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/hydroponics) "bPX" = (/obj/machinery/computer/upload/ai,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/westleft{base_state = "right"; dir = 2; icon_state = "right"; layer = 3.1; name = "Upload Console Window"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bPY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bPZ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics) +"bPZ" = (/obj/item/clothing/glasses/hud/health,/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bQa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/construction) "bQb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bQc" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -4946,24 +4946,24 @@ "bRf" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Kitchen APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bRg" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bRh" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"bRi" = (/obj/item/weapon/folder/white,/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/design_disk,/obj/item/weapon/disk/design_disk,/obj/structure/table,/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/toxins/lab) +"bRi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) "bRj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 5},/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bRk" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical) -"bRl" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bRm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"bRn" = (/obj/structure/closet/secure_closet/medical3,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) +"bRm" = (/obj/structure/sign/bluecross,/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) +"bRn" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bRo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bRp" = (/obj/structure/closet/l3closet/general,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRp" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bRq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central) "bRr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bRs" = (/turf/simulated/floor{dir = 4; icon_state = "yellowfull"; tag = "icon-whitehall (WEST)"},/area/hallway/primary/aft) "bRt" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "5; 33"},/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "bRu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft) "bRv" = (/turf/simulated/floor{icon_state = "purplefull"},/area/hallway/primary/aft) -"bRw" = (/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) -"bRx" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRx" = (/obj/structure/closet/secure_closet/medical3,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bRy" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/door_control{id = "kitchenhydro"; name = "Service Shutter Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bRz" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bRz" = (/obj/structure/closet/l3closet/general,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bRA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) "bRB" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/obj/item/weapon/aiModule/supplied/protectStation,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bRC" = (/obj/machinery/door/window/eastright{dir = 1; name = "Hydroponics Delivery"; req_access_txt = "35"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/hydroponics) @@ -4997,7 +4997,7 @@ "bSe" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/maintenance/storage) "bSf" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/AIsattele) "bSg" = (/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) -"bSh" = (/obj/structure/stool/bed,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"bSh" = (/obj/machinery/vending/medical,/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bSi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bSj" = (/obj/item/weapon/vending_refill/cola,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bSk" = (/obj/structure/closet/secure_closet/medical2,/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor,/area/medical/surgery) @@ -5009,7 +5009,7 @@ "bSq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bSr" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Upload APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/motion{c_tag = "AI Upload Chamber - Port"; dir = 1; network = list("SS13","RD","AIUpload")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bSs" = (/obj/structure/table,/obj/item/weapon/minihoe,/obj/item/weapon/hatchet,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/paper/hydroponics,/obj/item/weapon/coin/silver,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"}) -"bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"bSt" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26; pixel_y = 28},/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bSu" = (/obj/machinery/door/firedoor,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bSv" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab) "bSw" = (/obj/structure/grille,/obj/structure/lattice,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area/space) @@ -5020,10 +5020,10 @@ "bSB" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "bSC" = (/turf/simulated/wall,/area/maintenance/incinerator) "bSD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bSE" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bSE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bSF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bSG" = (/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/table,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = 29; pixel_y = 0},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) -"bSH" = (/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bSH" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bSI" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/gateway) "bSJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bSK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/hallway/primary/aft) @@ -5049,7 +5049,7 @@ "bTe" = (/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "bTf" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) "bTg" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/cryo) -"bTh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bTh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bTi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) "bTj" = (/obj/structure/table,/obj/item/weapon/aiModule/reset,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bTk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) @@ -5076,10 +5076,10 @@ "bTF" = (/obj/structure/rack,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/under/color/white,/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bTG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/toxins/lab) "bTH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) -"bTI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"bTI" = (/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 7; pixel_y = -3},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = -3},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bTJ" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "bTK" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/turf/simulated/floor{dir = 4; icon_state = "brown"},/area/storage/primary) -"bTL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/aft) +"bTL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera{c_tag = "Research Division - Lobby"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) "bTM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bTN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bTO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) @@ -5125,7 +5125,7 @@ "bUC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/gateway) "bUD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bUE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) -"bUF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bUF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bUG" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 8; name = "MuleBot Access"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"}) "bUH" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/flashlight,/turf/simulated/floor/plating/airless,/area/AIsattele) "bUI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay{name = "Medbay Central"}) @@ -5134,14 +5134,14 @@ "bUL" = (/obj/structure/rack,/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard) "bUM" = (/obj/machinery/door/airlock{name = "Medbay Emergency Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bUN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) -"bUO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bUO" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bUP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/AIsattele) "bUQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "bUR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bUS" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - CO2"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/maintenance/storage) "bUT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bUU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bUV" = (/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) +"bUU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{icon = 'icons/obj/doors/Doorglass.dmi'; id_tag = ""; name = "Hydroponics"; req_access_txt = "35"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) +"bUV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bUW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/port) "bUX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "kitchenwindow"; name = "kitchen shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "bUY" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) @@ -5166,20 +5166,20 @@ "bVr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bVs" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bVt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = 18},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) -"bVu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bVu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bVv" = (/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bVw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/library) "bVx" = (/obj/machinery/computer/secure_data,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; dir = 8; name = "Research Monitor"; network = list("RD"); pixel_x = 28; pixel_y = 2},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "bVy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "bVz" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"bVA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) +"bVA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bVB" = (/obj/structure/rack,/obj/item/weapon/paper,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVC" = (/obj/structure/stool/bed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bVD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/construction) "bVE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/construction) "bVF" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bVG" = (/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/engine/gravity_generator) -"bVH" = (/obj/structure/table,/obj/structure/sign/greencross{pixel_y = 32},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bVH" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bVI" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/turf/simulated/floor/plating,/area/maintenance/starboard) "bVJ" = (/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bVK" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5187,13 +5187,13 @@ "bVM" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area/space) "bVN" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bVO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) -"bVP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay2{name = "Medbay Storage"}) +"bVP" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bVQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/gravity_generator) "bVR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "bVS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "bVT" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = -1},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 6},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor/plating,/area/maintenance/starboard) -"bVU" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) -"bVV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"bVU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay2{name = "Medbay Storage"}) +"bVV" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Storage"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay2{name = "Medbay Storage"}) "bVW" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/maintenance/storage) "bVX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/construction) "bVY" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5254,9 +5254,9 @@ "bXb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator) "bXc" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/genetics) "bXd" = (/obj/machinery/hydroponics/constructable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) -"bXe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"bXe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Medbay Desk"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) "bXf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) -"bXg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"bXg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) "bXh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) "bXi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/carpet,/area/library) "bXj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5265,7 +5265,7 @@ "bXm" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/airless,/area/AIsattele) "bXn" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "bXo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) -"bXp" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper{name = "Sleepers"}) +"bXp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) "bXq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) "bXr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bXs" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) @@ -5275,10 +5275,10 @@ "bXw" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bXx" = (/obj/machinery/hydroponics/constructable,/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "Hydroponics APC"; pixel_x = 0; pixel_y = -28},/obj/structure/cable/yellow,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hydroponics) "bXy" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/library) -"bXz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "MedbayFoyer"; name = "Medbay"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"bXz" = (/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'TAKE ONLY WHAT YOU NEED - HOARDING PROHIBITED."; name = "\improper TAKE ONLY WHAT YOU NEED - HOARDING PROHIBITED"; pixel_y = 32},/turf/simulated/floor{icon_state = "dark"},/area/toxins/mineral_storeroom) "bXA" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) -"bXB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/sleeper{name = "Sleepers"}) -"bXC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2{name = "Medbay Storage"}) +"bXB" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/structure/stool,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"bXC" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bXD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "bXE" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bXF" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central) @@ -5290,11 +5290,11 @@ "bXL" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "yellow"; icon_state = "intact-y"; level = 2},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bXM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 9; icon_state = "intact-c"; level = 2},/obj/machinery/camera{c_tag = "Atmospherics - Starboard Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) "bXN" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port-Aft"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "caution"},/area/maintenance/storage) -"bXO" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"}) +"bXO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"}) "bXP" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hydroponics) "bXQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) "bXR" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (WEST)"},/area/medical/medbay{name = "Medbay Central"}) -"bXS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"bXS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"}) "bXT" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) "bXU" = (/obj/structure/closet/secure_closet/scientist{pixel_x = -4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/lab) "bXV" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2{name = "Medbay Storage"}) @@ -5344,10 +5344,10 @@ "bYN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) "bYO" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/obj/structure/lattice,/turf/simulated/wall/r_wall,/area/space) "bYP" = (/turf/simulated/wall/r_wall,/area/toxins/lab) -"bYQ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bYQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bYR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; icon_state = "intact-c"; level = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "bYS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/storage) -"bYT" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"bYT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "bYU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor/preopen{id = "Biohazard"; name = "biohazard containment door"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bYW" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/obj/item/clothing/under/rank/scientist_new,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -5418,10 +5418,10 @@ "caj" = (/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) "cak" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "cal" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"}) -"cam" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) +"cam" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "can" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor/plating/airless,/area/AIsattele) "cao" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cap" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 24; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cap" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "caq" = (/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "car" = (/obj/structure/disposalpipe/sortjunction{dir = 2; sortType = 20},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cas" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5436,19 +5436,19 @@ "caB" = (/obj/structure/closet/wardrobe/pjs,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"}) "caC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "caD" = (/obj/structure/closet/crate,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/table_parts,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"caE" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"caF" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"caE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) +"caF" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "caG" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"caH" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"caH" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) +"caI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) +"caJ" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Exit Button"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) "caK" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "caL" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"}) "caM" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/floor{dir = 1; icon_state = "blackcorner"},/area/maintenance/storage) "caN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Post - Research Division"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "redfull"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "caO" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor{icon_state = "purplefull"},/area/maintenance/storage) -"caP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) -"caQ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/medbay2{name = "Medbay Storage"}) +"caP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) +"caQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "caR" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "caS" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Telescience - Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/telesci) "caT" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5483,11 +5483,11 @@ "cbw" = (/obj/machinery/power/apc{dir = 8; name = "Incinerator APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cbx" = (/obj/machinery/door/airlock/maintenance{icon_state = "door_closed"; locked = 0; name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cby" = (/obj/machinery/reagentgrinder,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/structure/table,/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) -"cbz" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) +"cbz" = (/obj/machinery/disposal{pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"; tag = "icon-whitehall (WEST)"},/area/medical/chemistry) "cbA" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/light{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cbB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cbC" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) -"cbD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"cbD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) "cbE" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cbF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/library) "cbG" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/turf/simulated/floor{icon_state = "dark"},/area/maintenance/storage) @@ -5531,8 +5531,8 @@ "ccs" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cct" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/medbay{name = "Medbay Central"}) "ccu" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) -"ccw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"ccv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/securearea{desc = "A warning sign which reads 'TAKE ONLY WHAT YOU NEED - HOARDING PROHIBITED."; name = "\improper TAKE ONLY WHAT YOU NEED - HOARDING PROHIBITED"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"ccw" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Research Division APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/camera{c_tag = "Research Division - Airlock"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) "ccx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "ccy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "ccz" = (/obj/structure/closet/secure_closet/security/science,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/science{name = "Security Post - Research Division"}) @@ -5595,7 +5595,7 @@ "cdE" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/starboard) "cdF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/library) "cdG" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) -"cdH" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/chemistry) +"cdH" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cdI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cdJ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/aft{name = "Aft Maintenance"}) "cdK" = (/obj/machinery/door/airlock/maintenance{name = "Kitchen Maintenance"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) @@ -5639,11 +5639,11 @@ "cew" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cex" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) "cey" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"cez" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"cez" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "ceA" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"}) "ceB" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating/airless,/area/AIsattele) "ceC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/theatre) -"ceD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"ceD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "ceE" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating/airless,/area/AIsattele) "ceF" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "ceG" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage) @@ -5692,7 +5692,7 @@ "cfx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"}) "cfy" = (/turf/simulated/floor{icon_state = "greenfull"},/area/hallway/primary/central) "cfz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hallway/primary/central) -"cfA" = (/obj/structure/stool/bed/roller,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/machinery/camera{c_tag = "Medbay Sleepers"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 10; icon_state = "whitegreen"},/area/medical/sleeper{name = "Sleepers"}) +"cfA" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cfB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "cfC" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cfD" = (/obj/structure/barricade/wooden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -5730,9 +5730,9 @@ "cgj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cgk" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cgl" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/gateway) -"cgm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/cryo) +"cgm" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) -"cgo" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/hydroponics/constructable,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) +"cgo" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cgp" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/cryo) "cgq" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/cryo) "cgr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/cryo) @@ -5785,13 +5785,13 @@ "chm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "chn" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/science{name = "Security Post - Research Division"}) "cho" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) -"chp" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) +"chp" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "chq" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 10; icon_state = "green"},/area/hydroponics) "chr" = (/turf/simulated/floor/wood{tag = "icon-wood-broken4"; icon_state = "wood-broken4"},/area/maintenance/aft{name = "Aft Maintenance"}) "chs" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cht" = (/obj/structure/optable,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"chv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgery) +"chv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) "chw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "chx" = (/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/woodentable,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5814,7 +5814,7 @@ "chP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{pixel_y = 29},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "chQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 6},/turf/simulated/floor/carpet,/area/security/vacantoffice) "chR" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/gateway) -"chS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Hydroponics"; req_access_txt = "35"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) +"chS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30; pixel_y = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"}) "chT" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "chU" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/machinery/camera{c_tag = "Medbay Cryo"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/cryo) "chV" = (/obj/structure/sign/chemistry,/turf/simulated/wall,/area/medical/chemistry) @@ -5874,7 +5874,7 @@ "ciX" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/maintenance/storage) "ciY" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/pie,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/crew_quarters/theatre) "ciZ" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; freq = 1400; location = "Research and Development"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/lab) -"cja" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Medbay Hallway Central"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"cja" = (/obj/structure/sign/bluecross,/turf/simulated/wall,/area/medical/chemistry) "cjb" = (/obj/structure/closet/firecloset,/turf/simulated/floor{icon_state = "dark"},/area/library) "cjc" = (/turf/simulated/wall,/area/assembly/chargebay) "cjd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard) @@ -5886,7 +5886,7 @@ "cjj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/starboard) "cjk" = (/turf/simulated/wall/r_wall,/area/toxins/storage) "cjl" = (/obj/structure/grille,/obj/structure/window/reinforced{layer = 2.9},/obj/structure/window/reinforced{dir = 4; layer = 2.9},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 8; layer = 2.9},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"}) -"cjm" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"cjm" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cjn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"}) "cjo" = (/obj/structure/closet/secure_closet/medical1{pixel_x = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) "cjp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/maintenance/storage) @@ -5905,11 +5905,11 @@ "cjC" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) "cjD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Mineral Storeroom"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/mineral_storeroom) "cjE" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"cjF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) +"cjF" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/medbay{name = "Medbay Central"}) "cjG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "cjH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; pixel_y = -2; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/maintenance/storage) "cjI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"cjJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39H:140322"},/area/hallway/primary/port) +"cjJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/o2{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 6; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cjK" = (/obj/structure/closet,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cjL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/storage) "cjM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) @@ -5939,7 +5939,7 @@ "ckk" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "ckl" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "ckm" = (/obj/structure/lamarr,/obj/machinery/light/small{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor) -"ckn" = (/obj/machinery/firealarm{pixel_y = 29},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/mineral_storeroom) +"ckn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cko" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "ckp" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating/airless,/area/AIsattele) "ckq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -6120,7 +6120,7 @@ "cnJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cnK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "cnL" = (/obj/machinery/door/window/eastleft{dir = 1; name = "Robotics Deliveries"; req_access_txt = "29"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/robotics) -"cnM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"cnM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "cnN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "cnO" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 29},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Fore-Starboard"; dir = 2; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "cnP" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/space,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6133,7 +6133,7 @@ "cnW" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"}) "cnX" = (/obj/structure/rack,/obj/item/weapon/weldingtool,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cnY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7.5-Starboard-Aft-Corner"},/turf/simulated/floor,/area/hallway/primary/central) -"cnZ" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"cnZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "coa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "cob" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "coc" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) @@ -6181,7 +6181,7 @@ "coS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "coT" = (/obj/structure/closet/coffin,/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/chapel/main) "coU" = (/obj/machinery/door/airlock/research{name = "Xenobiology Access"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) -"coV" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) +"coV" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/machinery/power/apc{dir = 2; name = "Medbay Storage APC"; pixel_y = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "coW" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "coX" = (/obj/structure/sign/atmosplaque{desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/chapel/main) "coY" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) @@ -6221,7 +6221,7 @@ "cpG" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Gas Pump"; on = 1},/turf/space,/area/maintenance/starboard) "cpH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cpI" = (/obj/item/seeds/moonflowerseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cpJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cpJ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{icon = 'icons/obj/doors/Doorglass.dmi'; id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics) "cpK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cpL" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/xenobiology) "cpM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -6436,7 +6436,7 @@ "ctN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "ctO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Kitchen - Coldroom"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "ctP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/aft) -"ctQ" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"ctQ" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "ctR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/assembly/robotics) "ctS" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/port) "ctT" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) @@ -6460,7 +6460,7 @@ "cul" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cum" = (/obj/machinery/camera{c_tag = "Arrivals - Aft Arm - Far"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"}) "cun" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Telecoms Server Room APC"; pixel_x = 25; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft-Starboard"; dir = 8; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"cuo" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"cuo" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cup" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "cuq" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"}) "cur" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6500,7 +6500,7 @@ "cuZ" = (/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cva" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cvb" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) -"cvc" = (/obj/structure/optable{name = "Robotics Operating Table"},/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) +"cvc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cvd" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) "cve" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main) "cvf" = (/obj/structure/table,/obj/item/candle,/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) @@ -6557,7 +6557,7 @@ "cwe" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "cwf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "isolb"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/patients_rooms{name = "Patient Room A"}) "cwg" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"cwh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isolb"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/patients_rooms{name = "Patient Room A"}) +"cwh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cwi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology) "cwj" = (/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cwk" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) @@ -6567,7 +6567,7 @@ "cwo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwp" = (/obj/structure/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwq" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cwr" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room A APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/patients_rooms{name = "Patient Room A"}) +"cwr" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cws" = (/obj/machinery/light_switch{pixel_x = -27},/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "cwt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cwu" = (/turf/simulated/wall/r_wall,/area/medical/virology) @@ -6653,13 +6653,13 @@ "cxW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 17},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cxX" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "cxY" = (/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cxZ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/patients_rooms{name = "Patient Room A"}) +"cxZ" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cya" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cyb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cyc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cyd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cye" = (/obj/machinery/door/airlock/medical{name = "Patient Room A"; req_access_txt = "5"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/patients_rooms{name = "Patient Room A"}) -"cyf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/patients_rooms{name = "Patient Room A"}) +"cyf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cyg" = (/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) "cyh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre) "cyi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) @@ -6726,17 +6726,17 @@ "czr" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area) "czs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "czt" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main) -"czu" = (/obj/machinery/power/apc{dir = 1; name = "Medbay Central APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Medbay Hallway Fore"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"czu" = (/obj/machinery/vending/cola,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/camera{c_tag = "Maltese Falcon - Gambling Den Aft"; dir = 1; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "czv" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "czw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czx" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) -"czy" = (/obj/machinery/light,/obj/structure/stool/bed/roller,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 1; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"}) +"czy" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Maltese Falcon - Hatch"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "czz" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "czA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Aft Primary Hallway - Aft"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/primary/aft) -"czE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"czE" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "czF" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "czG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;25;28"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "czH" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/obj/machinery/power/apc{dir = 4; name = "Toxins Lab APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -6813,7 +6813,7 @@ "cBa" = (/obj/machinery/computer/arcade,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cBb" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cBc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Break Room"; req_access_txt = "39"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/virology) -"cBd" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay{name = "Medbay Central"}) +"cBd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cBe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cBf" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "cBg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -6925,7 +6925,7 @@ "cDi" = (/turf/simulated/floor/plating/airless,/area/solar/starboard) "cDj" = (/turf/space,/area/syndicate_station/southwest) "cDk" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) -"cDl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cDl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cDm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cDn" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/toxins/xenobiology) "cDo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology) @@ -6997,7 +6997,7 @@ "cEC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cED" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/fancy/candle_box{pixel_x = 0; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "cEE" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space) -"cEF" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"}) +"cEF" = (/obj/structure/optable{name = "Robotics Operating Table"},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/camera{c_tag = "Robotics - Aft"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor{dir = 1; icon_state = "whitehall"},/area/assembly/robotics) "cEG" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/infections{pixel_y = 7},/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 5; icon_state = "whitegreen"},/area/medical/virology) "cEH" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cEI" = (/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/space) @@ -7283,7 +7283,7 @@ "cKc" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrotseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cKd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKe" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"cKf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Xenobiology - Entrance"; dir = 8; network = list("SS13","RD")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) +"cKf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cKg" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) "cKh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) "cKi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) @@ -7349,14 +7349,14 @@ "cLq" = (/obj/machinery/door_control{dir = 2; id = "QMLoaddoor2"; name = "Loading Doors"; pixel_x = 24; pixel_y = 8},/obj/machinery/door_control{id = "QMLoaddoor"; name = "Loading Doors"; pixel_x = 24; pixel_y = -8},/turf/simulated/shuttle/floor,/area/supply/dock) "cLr" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) "cLs" = (/obj/machinery/vending/coffee,/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/medbay3{name = "Medbay Aft"}) -"cLt" = (/obj/machinery/light{dir = 4},/obj/structure/sign/vacuum{pixel_x = 32},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cLt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/camera{c_tag = "Research Division Hallway - Xenobiology Access"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cLu" = (/obj/structure/stool,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/camera{c_tag = "Aft Starboard Solar Maintenance"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cLv" = (/obj/machinery/recharge_station,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay) "cLw" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cLy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/supply/dock) "cLz" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/dna_scannernew,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/genetics_cloning) -"cLA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"cLA" = (/obj/machinery/door/firedoor/border_only,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology) "cLB" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/supply/dock) "cLC" = (/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/aft) "cLD" = (/turf/unsimulated/wall,/area/centcom/control) @@ -7416,7 +7416,7 @@ "cMF" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/plating{icon_state = "bot"},/area/shuttle/escape/centcom) "cMG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "cMH" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"cMI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) +"cMI" = (/obj/machinery/light{dir = 4},/obj/structure/flora/kirbyplants{desc = "A plastic potted plant."; layer = 4.1; pixel_y = 3},/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Fore"; dir = 8; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMJ" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) "cMK" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) "cML" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -7424,7 +7424,7 @@ "cMN" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) "cMO" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "cMP" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"cMQ" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cMQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cMR" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cMS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "cMT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -7482,7 +7482,7 @@ "cNT" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) "cNU" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cNV" = (/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cNW" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Aft-Port"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/hallway/primary/central) +"cNW" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cNX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "cNY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) "cNZ" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) @@ -7510,7 +7510,7 @@ "cOv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape/centcom) "cOw" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) "cOx" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"cOy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/exam_room{name = "Patient Room B"}) +"cOy" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 26},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cOz" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"}) "cOA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/chargebay) "cOB" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) @@ -7680,7 +7680,7 @@ "cRJ" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cRK" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) "cRL" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"cRM" = (/obj/machinery/camera{c_tag = "Chapel Office - Backroom"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"cRM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cRN" = (/turf/unsimulated/wall,/area/tdome) "cRO" = (/obj/machinery/igniter,/turf/simulated/floor,/area/tdome) "cRP" = (/turf/simulated/floor,/area/tdome) @@ -8788,7 +8788,7 @@ "dmZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/north_outpost) "dna" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dnb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned) -"dnc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) +"dnc" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dnd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/chapel/main) "dnf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main) @@ -8849,7 +8849,7 @@ "doi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "doj" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dok" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;37;25;28"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) -"dol" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dol" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dom" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/mine/north_outpost) "don" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/mine/north_outpost) "doo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/mine/north_outpost) @@ -9673,21 +9673,21 @@ "dEa" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dEb" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dEc" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"dEd" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/device/flash,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) +"dEd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEe" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dEf" = (/obj/machinery/power/apc{dir = 2; name = "RD Office APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/flora/kirbyplants/dead,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) -"dEg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dEg" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/firealarm{pixel_y = 28},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEi" = (/obj/structure/disposalpipe/segment,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"dEj" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room B APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/exam_room{name = "Patient Room B"}) +"dEj" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "dEk" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"}) -"dEl" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isola"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/exam_room{name = "Patient Room B"}) +"dEl" = (/obj/machinery/camera{c_tag = "Chapel Office - Backroom"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "dEm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "isola"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/exam_room{name = "Patient Room B"}) "dEn" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost) "dEo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEp" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "dEq" = (/turf/simulated/wall,/area/medical/exam_room{name = "Patient Room B"}) -"dEr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dEr" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 3},/obj/item/weapon/folder/white{pixel_x = -4; pixel_y = 2},/obj/item/weapon/handcuffs,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/off,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEs" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp) "dEt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) @@ -9695,22 +9695,22 @@ "dEw" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "dEx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/server{name = "\improper Research Division Server Room"}) "dEy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) -"dEz" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/exam_room{name = "Patient Room B"}) +"dEz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "dEB" = (/obj/machinery/vending/coffee,/turf/simulated/floor/carpet,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) "dEC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "dED" = (/turf/simulated/floor/plating/asteroid/airless,/area/mine/unexplored) -"dEE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"}) +"dEE" = (/obj/machinery/computer/secure_data,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEG" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Aft APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/junction,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "dEH" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp) "dEI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dEJ" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp) "dEK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/genetics) -"dEL" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/vending/cola,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/carpet,/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"dEL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEM" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/genetics) "dEN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) -"dEO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dEO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dEP" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/engine,/area/toxins/xenobiology) "dEQ" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/device/radio/electropack,/turf/simulated/floor/engine,/area/toxins/xenobiology) "dER" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) @@ -9824,7 +9824,7 @@ "dGV" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGW" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) "dGX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp) -"dGY" = (/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/obj/machinery/light,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"}) +"dGY" = (/turf/simulated/floor{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dGZ" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp) "dHa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/toxins/storage) "dHb" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp) @@ -10028,7 +10028,7 @@ "dKR" = (/obj/structure/rack,/obj/item/weapon/tank/oxygen,/obj/item/clothing/suit/space/rig/medical{name = "emergency medical hardsuit"},/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/medical{desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra mobility."; name = "emergency medical hardsuit helmet"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "dKS" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) "dKT" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard) -"dKU" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/door_control{id = "rdprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"dKU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dKV" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"; pipe_color = "red"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology) "dKW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/access_controller{exterior_door_tag = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; interior_door_tag = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 26; pixel_y = 26; req_access_txt = "39"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/virology) "dKX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -26; pixel_y = 28; req_access_txt = "39"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/virology) @@ -10169,7 +10169,7 @@ "dNC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed/roller,/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/genetics) "dND" = (/obj/machinery/door/poddoor{id = "auxincineratorvent"; name = "Auxiliary Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/space) "dNE" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/assembly/chargebay) -"dNF" = (/obj/machinery/light,/obj/machinery/camera/autoname{dir = 1; network = list("SS13","RD")},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) +"dNF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Departure Lounge Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "redfull"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dNG" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "dNH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "dNI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -10187,7 +10187,7 @@ "dNU" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored) "dNV" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/computer/rdservercontrol,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server{name = "\improper Research Division Server Room"}) "dNW" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"dNX" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/autoname{dir = 2; network = list("SS13","RD")},/obj/machinery/mecha_part_fabricator,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) +"dNX" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/newscaster/security_unit{pixel_x = 29; pixel_y = 1},/obj/machinery/camera{c_tag = "Departure Lounge - Security Post"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "dNY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/mine/production) "dNZ" = (/obj/machinery/door/airlock/external{name = "Labor Camp Shuttle Airlock"},/turf/simulated/floor,/area/mine/laborcamp) "dOa" = (/turf/simulated/floor,/area/mine/laborcamp) @@ -10318,7 +10318,7 @@ "dQv" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "dQw" = (/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dQx" = (/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) -"dQy" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/camera/autoname{dir = 8; network = list("SS13","RD")},/turf/simulated/floor,/area/assembly/chargebay) +"dQy" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/device/flash,/obj/machinery/camera{c_tag = "Robotics - Fore"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) "dQz" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Uplink Management Control"; req_access_txt = "150"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "dQA" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) "dQB" = (/obj/structure/table/woodentable,/obj/item/device/syndicatedetonator{desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press."},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/syndicate_mothership) @@ -10359,6 +10359,31 @@ "dRk" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/incinerator) "dRl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/valve{dir = 2; name = "output gas to space"},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "dRm" = (/obj/structure/table/woodentable,/obj/item/weapon/spellbook/oneuse/smoke{name = "mysterious old book"},/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater{name = "flask of holy water"; pixel_x = -2; pixel_y = 2},/obj/item/weapon/nullrod{pixel_x = 4},/obj/item/device/soulstone{name = "soul stone shard"},/obj/item/organ/heart,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/office) +"dRn" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light/small{dir = 1},/obj/machinery/mecha_part_fabricator,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics) +"dRo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dRp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft) +"dRq" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Research Division Hallway - Robotics"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"dRr" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"}) +"dRs" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room A APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) +"dRt" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isolb"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) +"dRu" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Toxins Storage"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) +"dRv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/light_switch{pixel_x = 24; pixel_y = 24},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) +"dRw" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/patients_rooms{name = "Patient Room A"}) +"dRx" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"dRy" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/door_control{id = "rdprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor) +"dRz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Research Division Hallway - Mech Bay"; dir = 4; network = list("SS13","RD")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"dRA" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/camera{c_tag = "Mech Bay - Starboard"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor,/area/assembly/chargebay) +"dRB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dRC" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/clothing/tie/stethoscope,/obj/machinery/light/small{dir = 8},/obj/machinery/power/apc{dir = 8; name = "Patient Room B APC"; pixel_x = -26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 8; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 24},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) +"dRD" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "isola"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) +"dRE" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/sign/examroom{pixel_x = -32},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"}) +"dRF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) +"dRG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) +"dRH" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/exam_room{name = "Patient Room B"}) +"dRI" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) +"dRJ" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Mech Bay - Aft"; dir = 1; network = list("SS13","RD")},/turf/simulated/floor/mech_bay_recharge_floor,/area/assembly/chargebay) +"dRK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) +"dRL" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitebluecorner"},/area/medical/medbay3{name = "Medbay Aft"}) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10426,7 +10451,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeaavaavaavaavaavaaeadAaaeaavaavaavaavaavaaeaahaaaaaeaaeaaeaaaaaaaaeaaeaaeaaaabbawmayPaaRayQawoaxKaaaaboakeakfakgaboaboaboaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaeadwaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaadaaaaaTaaTaaOaaTaaTaaaaAwaaaaaTaaTaaOaaTaaTaaaaahaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaiawHazaaaCazdayNaaiaaaaboauYauWaqiaviavnaviaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaeaahaahaahaahaahaahaahaaaaelaaaaadaahaahaahaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeacNacNacNacNacNaaOadAaaOacNacNacNacNacNaaeaadaaaaaaaaaaaeaaeaaeaaaaaaaaiaajaaiaaiaxRaxOaxQaaiaaiaxKaaiavoaczaczaczaczaczaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaabCaupaupaupabCaaaaelaaeaupabCaupaupabCaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeadxadyadyadyadyaaEadAaaDadCadCadCadCadDaaeaacaaeaaeaaeaaaaaaaaeaaaaaiaaiayCauaaytayvaaRaysaBMaygayeaaiatYaczatWatVatUaczaczaczaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeadxadyadyadyadyaaEadAaaDadCadCadCadCadDaaeaacaaeaaeaaeaaaaaaaaeaaaaaiaaiayCauaaEfayvaaRaysaBMaygayeaaiatYaczatWatVatUaczaczaczaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaafgafgafgafgafgaupafhaupafgafgafgafgafgaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaavaavaavaavaavaaeadAaaeaavaavaavaavaavaaaaahaaaaaaaaeaaaaaaaaeaaaaaiauQaaBaayaayawrawxawuaaJawwawAaaiauMaczauzauxauDauCauOauNaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeafJafKafKafKafKaaEafMaaDafOafOafOafOafPaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaahaaaaaOaaTaaOaaOaaTaaaajdaaaaaTaaOaaTaaTaaOaaaaaaaaaaaaaaeaaaaaiaajaaiaaiasrawZaayaaxasqaxcaxmaaoaaWazRaaiasEasDasJasIasHasGasCaczaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaeavuavuavuavuavuaaeafMaaeavuavuavuavuavuaaeaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahawLaaTaaTaaOaaOaaOabYaaTaaTaaOaaOaaOawLaaaaaaaaaaaaaaaaaaaaiauUauVatBaaRauRaaRauSauTaaUauPasKaayaayaaiaqiaczatCatoatSatKatmaczatnaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaacaahaahaahaacaahaahaacaaaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaabCabCaupabCabCaaeagTaaaabCabCaupabCabCaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10447,30 +10472,30 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaaaaeaaaaaeaaaaoFaesaiFaiIajqalKammaoFbrTaiBbrTaKBardbrTbrTbrTdKcaKBbrSaKSaKBaKBaKBaeLacGaeDacLafcaeKafxafvacxacyacwacPabvahgafwaheabvabvacCagyacCabvahhahCagWaduaflafzagxagwaguagsagiaftagDafjagpagoagmafeaeYaeYaeYafGaeXaioaeXaeXahFagEagFafLafLafIadiagzafCafCafCafDafBamiamiamiamiamiafFaUoaQsavAaePakKaQsaeZackamlbLCbIwbGZbDPbLIamlaaeaptapuaoIandaptaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBafUaKBaaeaaaaaeaaeaaeaaeaaeaKBafUaKBaoFahdahfaoFaoFaoFaoFbrTahbbKoaeJabKagqaiWbrTajAaKBbHMagSagvafVaKBacuacsabUabMafQafQafQaeMaeMadWabhacPacIaghaeEaeFafYafbaemaenaeoabvaenacBafkaexafSafzafoafnafqafpaeHaeGabzafjahVacTacTaaQaaQaaQaaQaocadradradradraeaadZadXadFadnadkadjadgaeRaeVaeeaiSaecaebaebaebaebaebaeWaThaQsavAaQsaQsaQsaQsafEamlbmEaYlbBKboYbCHamlaaeaptanoadfafmaptaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKBajtbMbaKBanLamsamsamsamsamsajsaKBbrSajtaKBaeTaDnaefbMeaspaKBbwqaedbMbaKBardafdafuaeSaeOaKBaeubrTabmafyaKBabkadYahLabladrabiafQabjabnaerabhassadTadUaeAaeNadQaeIadOaeBaevaewaenaaXafsaexaezadRadPadNadMadLadJadKadJadIadHafaadEadEaepadBaaQaocadrabXabZaklabcabcabcabcabcaciacmacfabcabcabcabcabcabVavAabWacbadlavAavAaQsavAaetaQsacnaQsasLarWaDwaBJatiathaYkamlcgaaptaqZadearbaptaaaaaeaaaaaaaaaaaeaaaaaeaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaeaaeafUaeCaeUadVafRbrTbrTbrTbrTbrTahcacqaeqbKoaaIacrbrTbrTarlbrTabPaqhbQSadradradradradradradradradradracAadradraaNadradradradradrafQaaGaaYaerabhacPacIacJacQacHacSadoacFaeyaaPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQaaHaaSaaKaibadsabcaaZaasaaVabyabxabrabdabcabBaatabAabcavAavAaQsaThaQsaUoavAaQsavAadlaQsabOaQsagCafrancamlamlapTarRamlbWIarNarNabTaclarNarNcgaarNarNacMarNaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGaaeaaeajGaaeaaaaaeaaeaaeaKBaKBaxSaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaaFiaoZascasaapcadrdBfapiappdBnaqdapZaowaeraoraosabvabQatpabvabvaEratraDmazpabvaEJaAoaexaexaaQazuaszaslazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaocadradsauqadsabcarmauoaumaulaukaDYarHausautauuarFabcauravAaufaddacoadGavAaQsavAavAavAbvSavAagCcfIcfEcframlamlamlamlaQsaUoaQsaubatRarNarOabSaucarNcsgarNaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGarqajGaaeaaeaKBaKBaKBatHaBPaKBaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaKBaUDbtwbrTbHMbrTbHMaEsaDuaDFaEvagrasNadradradrataatbatbatbatcadradradrahTaoodpCahTaoqalCaeManPanRassaskaskasiasgaskasjaskasgaskaAyaskasjasbarZashasgaqxapoaskaskaskasgaskasmafQasoainainainainaeMaocadradsadsadsabcabcabcabcabcarMatzaDialZarcabcabcabcatkavAaUoaQsabOaQsavAaQsavAbbNavAatjcblcbucbncbacaZcbkcbgbYbbYbbYbbYbbYbbuqaQsaQsaQsaQsatgacMasRacMaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaeaaeajGaaeapBaaeajGajGajGajGajGajGaCDaAxaCDafRaqhaKBaKBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBaKBbrTbHMavabHMaGPaAfaGJazTaFuasNadralIaaeaaaaaaaaaaaaaaaaaeaaaadraiRcRXalLcRWamgainamPamQamJaqoaqsaqsaqnaqoaqsazcaqDaqoaqBaqCaqsawvaqQaqPaqsasVaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMaocadrasSadYasTabcarUanuaseabyabxabrasOabcasUaasasZabcatdavAavAavAbvSavAavAaQsavAaQsavAatfarNamlafrbZOamlamlarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeajGajGajGajGajGajGaaeajGajGajGaaeaKBaKBaKBarnaqhbrTaKBaaaauIauJauKauJauLalvaaeaaeaaeaKBaovaKBaouaXOaXOaXOaDlbrTaKBaDfarSaoxadraaaavUavUavUavUavUavUavUaaaadraxNaxMasAahTalEalCaeMaoLapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaxnaoMaoQaoPaoJapaanSamSapaaozaoKapbaoVaoUaoXaoWapNapLaeMaocbaabaabaabaabaaarFarDaryarLarKarIarHarparrarjarmabcartarsbvHbvHaribvHbvHbvHaAgbvHbvHarQbZrapSbZyapUbZzasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGajGaotajGaaeaaeaaeaaeaKBbHMaqhardafUaaaavLaUaapIavOavLaDLaCraCsaruaruaruaruanOaruaruadradraKBaKBanNadrakYadraaeavUavVavWaBTavYavZavUaaeakRahTarEakXahTaaaaaaacKajjavKajlaeMajmavJajoaeMajpawPajraeMapHajpapsaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocbaaapVapXanlbaaabcabcabcabcapYaqOaqbalZarcabcabcabcavAaqWaUobWIaQsaUoarhaQsarNarNarNarNarNanVbWsanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeajGajGangajGajGajGajGaaeaaaaaeafUbtwaqhbrTaKBaaaauKawQawRawQauKaCqaADaBdaruazJaBhaCpaBeaBgaruatqamHakCakDakJadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaaiZaiRahZarEahTaknajnaczajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLaoNaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansbaaaomaolaokbaaapmakQapmabcaoAaopaonaodaofaobaobatlbvHanXarNarNarNarNarNarNarNannannanaaBsanfbZkamUamTavFasPasPaaeaaeauBavHauBauBauBauBauBavIauBauBayIaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGaaeajGaaeaaeajGajGaaeaaeaKBaKBbMeaqhaKBaKBaaaavLawQawQawQaylazGavRavRazFawUaynaypayqayraxVaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaahEahTahXarEcRWahuahsaczakqajRakraeMakqajRaksaeMakqajRaktaeMamMacRalNaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWbaaankanmanlbaaaqNanqanqantanranvahMabcabcabcabcabcavAanyarNamkayaanZamwaxYbwtbWybYXbYXbYXbYXbZjamvamtawNawOasPamraaeaaeaaaaaaaaaaaeaaeaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGajGajGaacaaaaaeaaeaaeaKBaKBbHMbHManpafUaaaaaaauKawRawRawRauKaxeawVawWawTawUavRawSavPavQaruahlazOazPazQazIadrakYadraaeazSazwazUazVazWauwavUaaeadrahTahRahRahTahjagYaczakLakMakNafQakLakMakNafQakLakMakNafQalwakPalJafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqamcbaabaaamfameamdajIamRamjamhalZamaahqabAabcambacjarNalmazraycaycalnalobWsaANalyalxalxalxalAalzayiayjaykaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaacbmNaAZbmNaahaaaaaeaaaaaeaKBafVarnbGxaqhaKBaKBaaaavLaBaaBbaBcavLbAYaCraCsarubxQavRbzgavPbyraruaBibjyaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaadrahaahmahmahpaWuaWvaWubnObnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebBiaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbjWboHaZHbjVbjTbjUbiQbznbiLarHbhPbhObhMbhGabcaQsacjarNbmMaAJbmLbmJbmHbmFcnEbmAbnyazzazzazzbnwbnxayiayjazDaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNbJAbmNaaeaaeaaeaaeaaeaKBbrTbrTbrTarVbaQaKBaaaaCmauJaCnauJaCoalvaaeaaebDYbDWbFNbEMbGCbGqarubglbgmbkxaCybDdadrakYadraaabBjaaabgobgnbgoaaaaaeaaaaWuaWuaknajnaWuaWubaybaVarvbmUbpjbEBbpobplbplbEIbplbprbpobpvbpubogbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEbkkbklbotbkgbjtbkjbkebkebkfbkpabcabcabcabcabcaThacjarNaBZbkbaDxboZboOboIcnKboSaAObpgbpebpfaASbpdayiayjaAUaAVaaebooaaaaaaaaaaaabooaaaaaabooaaeaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbrTaqhaKBaaaaaaaaaaaaaaaaaaaaaaaaaaebKpbKabJEbIZbIsbIqarubihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMaWubicbeVbeVbfHbdhbcNbcNbcKbELbdfbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbmRbAnbANbbUbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxblVbmQbaablHblAblFblNblFblJblMblnbkqbkobbKabcaQsacjarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaaeaaaaaaaaaaaaaaabBlaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBaqhaKBaaaaFaaFaaFaaFaaFaaFaaFaaaearuaruarubNybNSaruarubipbimbiqbrzbrpbhrbikbidbqjbkJbrBbrBbjsbrBbknbrLbkQaWublablgbkNaxwaxwbGSaxwaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabrkbmVbmWalZbnabnebngalZbnkbnBbnqabcbNoacjarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbtJaycaDHazDaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBaqhafUaaaaFaaFaaFaaFaaFaaFaaFaaaeaaeaGubymaJbaHZaFVaFDaEBaEAbaTbaUbaRbisaEGbgBbhraCuaBSaBWaDraDtaCVaCYbAQaBOaBLaBNaBRahjaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEbqUbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaaaUwaUfaUtaCWaCWaCWaCWaCWaCWaCWaCWaCWavAbzjarNaTMaTBbtgaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaaebooaaeaaeajGajGajGaaeblfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstbCmaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaLnaKYbcGaIcaIdaIebpRbcIbdzbdMbnlbdMbdMbdMbdMbnmaYhbjjbjgbitbjjaYhaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphbxAapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaaaXEaXXaZaaCWbrwaHebkUaVJaUBbaMaWiaCWciUacjarNaTBaTBbjcaHFaHGazrampaGhbjdbthasPbhfaGkaGlaGmaGnaGoazDaaeaaaaaaaaebtNbwxajGaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBanpaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldbkZbJibJibJibJibUraYhaTPbkWbkRbmIaSLaSAbkPbkLbkMbzwaGUaGUbkIbkKbyLbkHbkBaLUaLUbyVbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaQDbyWaBUbwoaqLbdjaPpaNdaPpbkcbjGbdlaPDbkibdkaPLbiGaIGbfhaCWbfTbdibdibdibdebchbbDaCWbPMacjarNaKhaKhaHEaHFaHGbkbbypbyobjHbjRaHNaHOaHPaHQaHRaHSawMazDaaeaaabyhaaeajGajGajGaaeaaebooaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkbytaKBaKBaqhaKBaaeaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhaWfbmzaWkaWebmxbmxbmxbmvbjlaaaaFsbzuaGYaGYaGYaGYaGYbAJaFsaaaaxwblUawnblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBbhvbhwbfBbhzaeQaIyaIyaIybgybiHbgUaCWaiQacjarNaKhblOaUNaGaasPbviaAJbysaAObzxasPaJeblhaDxaDxaDxaDyazDaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQabzKaKBaUDaqhaKBaaeaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBbBOaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbOHbOcbPXaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbqYaIEaIFaJSaKRbtHbztbQmbzqbzsbzhbribrebrhbqZbraadhbvCbySbyQbwHbwmaCWaUoacjarNasPbwtbwtasPasPbwtbzNbzMbzObDvasPasPaCfasPasPaCgbdIbDrbDsaaaaaaaaaaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLaMIaMJaMIadqbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwraKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbsqaLQbPVbDXbPVaLQbRcbSiaaaaxwbiBbzlbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbCxaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbsGbsubswaIyaIyacabgybEnbzpaCWaTNacjarNbAlbAkbDHbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbEeaaebooaaaaaabooaaaaaaaaaaaabooaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaNKaNKaNKaNKaMcaNKaNKaNKaNKaMcaNKaNKaNKaNKaMcaNKaNKaNKaNKaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaMIaObaMIaawbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBaqhbrTaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSraLQbTmaGYbRebRBaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoabCSdtNdAubBabTobsLbBabBcbChbChbCebupbutbsRburbusbsQbsRbsMbsOaCWbtPbuCbEqbNtauhbIbbEAaCWaQsbuParNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbENaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaMibUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBaqhbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebKZaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaaeaFsaFsaFsbCYaNlaNkaFsaFsaFsaaeaxwbjuaIvblTaBQcbbaueaueauebOhaueauebCUaojaBQbkcdDPbCVbwLaIFbvtaIFaIEaJSaIFbDOaIFbwOaJSaKRaIFaKRaJSbDLbDMaCWbSsbIubwwatebPobaMbbDaCWbItacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaaeaaaaaaaaaaaaaaeaaaaaabIraaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlbGfbFgbFgaFUbFgbFgbFgbFgaJUbFgbFgbFgbFgaFUbFgbFgbFkaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBbKdasdaKBaaeaFaaFaaFaaFaaFaaFaaFaaaeaaebpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaPyaPyaPyaPyaPyaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbroavlarPbmfaojaojbsDbsIaojaChbkcbsjbslbrPbsrbonbsrbsvbECboqbsmbsrbsrbsrbsrbsrbsrbsJbsPbzGaCWaCWaCWaCWapJaCWaCWaCWaCWavAacjarNbARbAdbAdbtabsZbsVbsTbsSbtkbtlbvubtnbteawMawNaPoasPaaaaaeaaeaaaaaaaaaaaaaaeaaaaaaaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlaGpaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNblIaQNaQNaaeaFaaFaaFaaFaaFaaFaaFaaaaaaeaZpbqlaJnaKvaKvaKwaKvaIeaJuaIebuKaPybrvbqdbmtbmOaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbEXbukbHwaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbCWaoabkcbtLbtHbuHaCZaCZaCZaCZaCZaCZaCZbuFbuGbuLbovbuBbuDaCZaPpaPpavAbuObYbbYbborbYbbYbbYbbASbYbbuqarNaNLaNLaNLaNLbuvbuubPnbuybuVbuWbuUaAJbuTavEasPasPasPaaeaaeauBaQIauBauBauBauBauBauBauBauBbvBaaeaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlaGpaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaTpaZDbrsbIdaZfbsfbrsbtfbHybHrbHybHBbIebHybIjbInbIJbILbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaeaZpbvgaJnaKvaKvaKwbKvaIeaTAbumbujbwKbtqbtjbxSbyyaKBasNaYhaYhaYhbjqbvMbvNbjlbsHbsabjlbSXbTHbNpaNnbvAaNpbvraNnbrFbIVbvdbIUbvebqFbuZbuYbuMbLGbrGaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbowboCboFavAavAavAavAbbOavAavAavAavAavAavAacjaUoaQsaJzaJzaJzaJzaJzaJzaJzaNLbvZbvUbvTaNLbBpbATaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaaeaaeaacaahaahaahaacaaeaacaahaahaacaacaahaahaahaacaaeaaeaaeaaeaaeaFvaMibIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaeaaeafUanparVarlayTaXOaXOaXOaXOaXOamHaeUaeqaeCacradVaXOaXOacqaXOabPacaaaIadradradradradradradradradradracAadradraaNadradradradradrafQaaGaaYaerabhacPacIacJacQacHacSadoacFaeyaaPabQacDacEaegaduadzadvadcadaadtadmacWacVacYacXacUacTabNadpabNabRaaQaaHaaSaaKaibadsabcaaZaasaaVabyabxabrabdabcabBaatabAabcavAavAaQsaThaQsaUoavAaQsavAadlaQsabOaQsagCafrancamlamlapTarRamlbWIarNarNabTaclarNarNcgaarNarNacMarNaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGaaeaaeajGaaeaaaaaeaaeaaeaKBaKBaBPaKBaKBasWasXasXasXasXasXasYaKBaKBaKBaKBaGraGCaGCaGCaGCaGCaGVbQSadraInatDatEatFawpatGatIasaaFiaoZascasaapcadrdBfapiappdBnaqdapZaowaeraoraosabvabQatpabvabvaEratraDmazpabvaEJaAoaexaexaaQazuaszaslazuaaQazCazBaaQazyacTacTaAbaAbaAbaaQaaQaocadradsauqadsabcarmauoaumaulaukaDYarHausautauuarFabcauravAaufaddacoadGavAaQsavAavAavAbvSavAagCcfIcfEcframlamlamlamlaQsaUoaQsaubatRarNarOabSaucarNcsgarNaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGarqajGaaeaaeaKBaKBaKBatHaBIaKBaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaKBaUDbtwbrTbHMbrTbHMaEsaDuaDFaEvagrasNadradradrataatbatbatbatcadradradrahTaoodpCahTaoqalCaeManPanRassaskaskasiasgaskasjaskasgaskaAyaskasjasbarZashasgaqxapoaskaskaskasgaskasmafQasoainainainainaeMaocadradsadsadsabcabcabcabcabcarMatzaDialZarcabcabcabcatkavAaUoaQsabOaQsavAaQsavAbbNavAatjcblcbucbncbacaZcbkcbgbYbbYbbYbbYbbYbbuqaQsaQsaQsaQsatgacMasRacMaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaeaaeajGaaeapBaaeajGajGajGajGajGajGaCDaAxaCDafRasNaKBaKBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaKBaKBaKBbrTbHMavabHMaGPaAfaGJazTaFuasNadralIaaeaaaaaaaaaaaaaaaaaeaaaadraiRcRXalLcRWamgainamPamQamJaqoaqsaqsaqnaqoaqsazcaqDaqoaqBaqCaqsawvaqQaqPaqsasVaqMaqFalQalQaraaqYaqVaqUaAnaqSajgajhajiaBraeMaocadrasSadYasTabcarUanuaseabyabxabrasOabcasUaasasZabcatdavAavAavAbvSavAavAaQsavAaQsavAatfarNamlafrbZOamlamlarNarNarNarNarNarNarNarNbWIarNarNarNarNarNarYaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeajGajGajGajGajGajGaaeajGajGajGaaeaKBaKBaKBarnasNbrTaKBaaaauIauJauKauJauLalvaaeaaeaaeaKBaovaKBaouaXOaXOaXOaDlbrTaKBaDfarSaoxadraaaavUavUavUavUavUavUavUaaaadraxNaxMasAahTalEalCaeMaoLapqaiGayMapfapnaiGapzapfapqapAapraiMapwapxaxnaoMaoQaoPaoJapaanSamSapaaozaoKapbaoVaoUaoXaoWapNapLaeMaocbaabaabaabaabaaarFarDaryarLarKarIarHarparrarjarmabcartarsbvHbvHaribvHbvHbvHaAgbvHbvHarQbZrapSbZyapUbZzasPaDQasPatLatMatNatMatOarNarNarNatLatMatOatPasPaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeajGajGajGajGajGajGaotajGaaeaaeaaeaaeaKBbHMasNardafUaaaavLaUaapIavOavLaDLaCraCsaruaruaruaruanOaruaruadradraKBaKBanNadrakYadraaeavUavVavWaBTavYavZavUaaeakRahTarEakXahTaaaaaaacKajjavKajlaeMajmavJajoaeMajpawPajraeMapHajpapsaeMalfanAanzanCanBaldaldalXanxanwaldaldaneaeMaeMaeMaeMaeMaocbaaapVapXanlbaaabcabcabcabcapYaqOaqbalZarcabcabcabcavAaqWaUobWIaQsaUoarhaQsarNarNarNarNarNanVbWsanUanTauyaACauyauAauBatTauBauEatMauFatMauGauBatTatPauHaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeajGajGangajGajGajGajGaaeaaaaaeafUbtwasNbrTaKBaaaauKawQawRawQauKaCqaADaBdaruazJaBhaCpaBeaBgaruatqaytakCakDakJadrakYadraaaavUaxfaxgaxhaxiaxjavUaaaaiZaiRahZarEahTaknajnaczajQajRajSaeMajTajRajSaeMajUajRajSaeMamKamLaoNaeMamEamGamFamIazLaldaunamyamxamAazkaztaneamDamCamCamCamCansbaaaomaolaokbaaapmakQapmabcaoAaopaonaodaofaobaobatlbvHanXarNarNarNarNarNarNarNannannanaaBsanfbZkamUamTavFasPasPaaeaaeauBavHauBauBauBauBauBavIauBauBayIaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGaaeajGaaeaaeajGajGaaeaaeaKBaKBbMeasNaKBaKBaaaavLawQawQawQaylazGavRavRazFawUaynaypayqayraxVaqzaywayxayyayzadrakYadraaaavUayAayBasfaxiayDavUaaaahEahTahXarEcRWahuahsaczakqajRakraeMakqajRaksaeMakqajRaktaeMamMacRalNaeMalValUalTalSalRaldayHajualPaoRaoSapGanealOaeXaeXaeXalYalWbaaankanmanlbaaaqNanqanqantanranvahMabcabcabcabcabcavAanyarNamkayaanZamwaxYbwtbWybYXbYXbYXbYXbZjamvamtawNawOasPamraaeaaeaaaaaaaaaaaeaaeaaaaaaaaeaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaajGajGajGaacaaaaaeaaeaaeaKBaKBbHMbHMaxSafUaaaaaaauKawRawRawRauKaxeawVawWawTawUavRawSavPavQaruahlazOazPazQazIadrakYadraaeazSazwazUazVazWauwavUaaeadrahTahRahRahTahjagYaczakLakMakNafQakLakMakNafQakLakMakNafQalwakPalJafQalfalhalgafQalcaldatAalbalaapEapFatxaneakZbaabaabaaalpbaabaaalqamcbaabaaamfameamdajIamRamjamhalZamaahqabAabcambacjarNalmazraycaycalnalobWsaANalyalxalxalxalAalzayiayjaykaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaacbmNaAZbmNaahaaaaaeaaaaaeaKBafVarnbGxasNaKBaKBaaaavLaBaaBbaBcavLbAYaCraCsarubxQavRbzgavPbyraruaBibjyaBkaBlbtbadrakYadraaaaBnavUaBoaBpaBoavUavUaaaadrahaahmahmahpaWuaWvaWubnObnVbnObnZbnObnVbnObyGbnObnVboaboebobbombolbxKbygbywblxafQainanebBiaqrbpXbqsbqWbCXaneakZbaabnubnvbntbpmbpmbpnbjWboHaZHbjVbjTbjUbiQbznbiLarHbhPbhObhMbhGabcaQsacjarNbmMaAJbmLbmJbmHbmFcnEbmAbnyazzazzazzbnwbnxayiayjazDaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNbJAbmNaaeaaeaaeaaeaaeaKBbrTbrTbrTbrHbaQaKBaaaaCmauJaCnauJaCoalvaaeaaebDYbDWbFNbEMbGCbGqarubglbgmbkxaCybDdadrakYadraaabBjaaabgobgnbgoaaaaaeaaaaWuaWuaknajnaWuaWubaybaVarvbmUbpjbEBbpobplbplbEIbplbprbpobpvbpubogbpsbAgbAhbzRbzZafQainaneanebEcbubanebsianeaneakZbaabaabaabzJbcEboDboEbkkbklbotbkgbjtbkjbkebkebkfbkpabcabcabcabcabcaThacjarNaBZbkbaDxboZboOboIcnKboSaAObpgbpebpfaASbpdayiayjaAUaAVaaebooaaaaaaaaaaaabooaaaaaabooaaeaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabmNaAZbmNbmNaDIaDJaDKbmNaKBaKBaKBaKBbSFbtoaKBaaaaaaaaaaaaaaaaaaaaaaaaaaebKpbKabJEbIZbIsbIqarubihaFeaFfaFfaFfbdMbxsbdMbdMbhJbhIbhLbhKbhTbhSbjnbdMaWubicbeVbeVbfHbdhbcNbcNbcKbELbdfbEKbqDbqEbqIbFDbqEbqQaLXbqMbqLbqPbmRbAnbANbbUbBdafQainajvaeMbHmbxdanebxrbwjaeXbqibaabpZbqbbpWbugbaabdxblVbmQbaablHblAblFblNblFblJblMblnbkqbkobbKabcaQsacjarNbpGbpFbpEaCabpObwtbpLbpIaAObpDasPasPaCfasPasPaCgbeQaCiaaeaaaaaaaaaaaaaaabBlaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNbmNaEUbJJaEWaCkaCkaCkaEXbJFaEYaEZaKBaKBasNaKBaaaaFaaFaaFaaFaaFaaFaaFaaaearuaruarubNybNSaruarubipbimbiqbrzbrpbhrbikbidbqjbkJbrBbrBbjsbrBbknbrLbkQaWublablgbkNaxwaxwbGSaxwaxwaxwaxwaxwaxwaxwaxwbGSaxwbiBawnblTaoaaoaaoabrmbrmbrmbrmbrmaoabrlaoaaqLaqLaqLaqLbrnaqLakZbaabaabaabxtbhDbaabrcbaabHbbaabrkbmVbmWalZbnabnebngalZbnkbnBbnqabcbNoacjarNasPasPasPasPasPbwtbrdaDBaAObqXasPaDDaDEaycbtJaycaDHazDaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNaEUaEUaEUaCkaCkaCkaCkaCkaCkaEUaEUaGtaKBasNafUaaaaFaaFaaFaaFaaFaaFaaFaaaeaaeaGubymaJbaHZaFVaFDaEBaEAbaTbaUbaRbisaEGbgBbhraCuaBSaBWaDraDtaCVaCYbAQaBOaBLaBNaBRahjaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaabEdbEwbEpbiCaoabiEbiDbivaoebvnaogaohaoiaojaoabyEbqUbtXbvcaDsaqLbynbaabhEbAabcEbhDbaabhCbaabKlbaaaUwaUfaUtaCWaCWaCWaCWaCWaCWaCWaCWaCWavAbzjarNaTMaTBbtgaFZasPbylaAJaDBbhRaDHaEOaEPaEQaoGaAKaESawMazDaaebooaaeaaeajGajGajGaaeblfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaabmNbwkaCkaCkaCkaCkaCkaCkaCkaCkaEUaEUaEUbstblIaKBaaaaFaaFaaFaaFaaFaaFaaFaaHVaHWaHXbwlaLnaKYbcGaIcaIdaIebpRbcIbdzbdMbnlbdMbdMbdMbdMbnmaYhbjjbjgbitbjjaYhaYhaYhaYhbjlaaaaaaaFsaFsaFsaFsaFsaFsaFsaaaaaaaxwbjuatZbjwapdbjvaohbjFapgaphbxAapjapkaplaoabyXaDqbyWbjzbzCaqLbnMbaabaabaabiFbiFbaabaabaabaabaaaXEaXXaZaaCWbrwaHebkUaVJaUBbaMaWiaCWciUacjarNaTBaTBbjcaHFaHGazrampaGhbjdbthasPbhfaGkaGlaGmaGnaGoazDaaeaaaaaaaaebtNbwxajGaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebmNaJiaCkaCkaCkaCkaJjaCkaCkaCkaCkaEUaJkaKBaxSaKBaaaaFaaFaaFaaFaaFaaFaaFabFOaJmbFOaHYaJnaJoaJpbrgaJraJsbrfbewbetbldbkZbJibJibJibJibUraYhaTPbkWbkRbmIaSLaSAbkPbkLbkMbzwaGUaGUbkIbkKbyLbkHbkBaLUaLUbyVbkwbkzaLXbiCaoabkvaohapOaohapPaohapQaohaohaoabzYaQDbyWaBUbwoaqLbdjaPpaNdaPpbkcbjGbdlaPDbkibdkaPLbiGaIGbfhaCWbfTbdibdibdibdebchbbDaCWbPMacjarNaKhaKhaHEaHFaHGbkbbypbyobjHbjRaHNaHOaHPaHQaHRaHSawMazDaaeaaabyhaaeajGajGajGaaeaaebooaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKqaCkaCkaKraCkaCkaCkaCkaCkaCkaCkbytaKBaKBasNaKBaaeaFaaFaaFaaFaaFaaFaaFaaKsaKtaKsaKuaJnaKvaKvaKwaKvaIebeKbeLbftaKBaKBaKBaKBaKBaKBasNaYhaWfbmzaWkaWebmxbmxbmxbmvbjlaaaaFsbzuaGYaGYaGYaGYaGYbAJaFsaaaaxwblUawnblTaoablRaqGaqHaohaqIaohaqJaqKaohbmubBvbBDbBhbBtbxiaqLblZbmabliblibliblkbllbllblmblmblBbhvbhwbfBbhzaeQbrxbrxbrxbgybiHbgUaCWaiQacjarNaKhblOaUNaGaasPbviaAJbysaAObzxasPaJeblhaDxaDxaDxaDyazDaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLjaLkaLlaaaaLmaCkaCkaCkaCkaCkaCkbPDbPHbPHbQabzKaKBaUDasNaKBaaeaFaaFaaFaaFaaFaaFaaFaaLoaHWaLpbPkaJnaLraKubvjaLtaLubBAbBIbBkbBrbqrbqnbqJbqHaKBbBOaYhbyjbmzcjRcnmckeckeclsbyIbjlaaabNqbyJaGYbOHbOcbPXaGYbyMbORaaaaxwbiBawnblTaoabyNarxadSarzarAarzarBarCbyPaoacoucpTcwQcxabPtaqLbqYaIEaIFaJSaKRbtHbztbQmbzqbzsbzhbribrebrhbqZbraadhbvCbySbyQbwHbwmaCWaUoacjarNasPbwtbwtasPasPbwtbzNbzMbzObDvasPasPaCfasPasPaCgbdIbDrbDsaaaaaaaaaaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLaMIaMJaMIadqbmNaCkaCkaCkaCkaCkaCkaCkaCkaCkbRIaMMaKBbwqbwPaKBaaaaFaaFaaFaaFaaFaaFaaFaaKsaMOaKsaKuaJnaKvaKvaKwaKvaIebpRbEobEsaMRbtKbsUbsobsnaKBbzzbzAbgfbmzbOTbzDbzFbOTcMVbQRbjlaaabPRbsqaLQbPVbDXbPVaLQbRcbSiaaaaxwbiBbzlbQXaoaastasuasuasvaswastasuasxasyaoaaqLcSncNkcRzaqLaqLbCxaIEaJSaKRbAIbnbaIEaIFaKRaKRaJSbwNbAFbsGbsubswbrxbrxbyAbgybEnbzpaCWaTNacjarNbAlbAkbDHbAmbzPbhxaAJbysaAObAMbpebALaLhbAKayiayjaAUbEeaaebooaaaaaabooaaaaaaaaaaaabooaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaNKaNKaNKaNKaMcaNKaNKaNKaNKaMcaNKaNKaNKaNKaMcaNKaNKaNKaNKaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaMIaObaMIaawbmNaJiaEUaCkaCkaCkaCkaCkaCkaCkbUcaOcaKBbyRaDlaKBaaaaFaaFaaFaaFaaFaaFaaFacdhaOecdhaOfaJnaKvaSpaSqaSraSsbKgaIebJraKAbvPbvzaOnbwuaKBbBBaYhbBwbmzbOTbBEbBFbRUcMVbTKbjlaaaaFsbTjbSraLQbTmaGYbRebRBaFsaaaaxwbAXatZbjwaChbKQaueaueaueaojaueauebAZbQtaoabCSdtNdAubBabTobsLbBabBcbChbChbCebupbutbsRburbusbsQbsRbsMbsOaCWbtPbuCbEqbNtauhbIbbEAaCWaQsbuParNbCrbCqbCpbCobCAbAibAbbzVbxfbBPaMDaMDaMEbBQayiaMGazDbENaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaMibUobBHbBHbBHbzTbBHbBHbBHbBHbZMbBHbBHbBHbBHbzSbBHbBHbBHaXfaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaQNaPqaPraPsaQNbmNaCkaEUbVDbVXbVEaCkaCkaCkaCkbUcaEUaKBasNbrTafUaaaaFaaFaaFaaFaaFaaFaaFaaPtaHWaPuaPvaJnaKvaKvaKwaKvaIebKgaIebKZaKAbyfbyebydbxcaKBasNaYhbDcdDRbTqbTCbTDbOTcMVbDfbjlaaeaFsaFsaFsbCYaNlaNkaFsaFsaFsaaeaxwbjuaIvblTaBQcbbaueaueauebOhaueauebCUaojaBQbkcdDPbCVbwLaIFbvtaIFaIEaJSaIFbDOaIFbwOaJSaKRaIFaKRaJSbDLbDMaCWbSsbIubwwatebPobaMbbDaCWbItacjarNbWcaTgbDCbDBbDIbAVbDKbDJbDxbDyaAKaAKbDzayhayiayjaNYaaaaaaaaeaaaaaaaaaaaaaaeaaaaaabIraaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlbGfbFgbFgaFUbFgbFgbFgbFgaJUbFgbFgbFgbFgaFUbFgbFgbFkaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaQNbCLbCJbCZaQMbmNbueaEUaQPbJGbCdaEUaEUaEUbuwbDAbEmaKBcoLasdaKBaaeaFaaFaaFaaFaaFaaFaaFaaaeaaebpMaPvaQTaJoaJpbtAaSrbmXbopbozblLaPyaPyaPyaPyaPyaKBbsbbsgbshbsdbsdbrQbrRbrNbLjbHobHqaaaaaaaaaaFsaFsaSFaFsaFsaaaaaaaaabEdbEwbHvblTaChbroavlarPbmfaojaojbsDbsIaojaChbkcbsjbslbrPbsrbonbsrbsvbECboqbsmbsrbsrbsrbsrbsrbsrbsJbsPbzGaCWaCWaCWaCWapJaCWaCWaCWaCWavAacjarNbARbAdbAdbtabsZbsVbsTbsSbtkbtlbvubtnbteawMawNaPoasPaaaaaeaaeaaaaaaaaaaaaaaeaaaaaaaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlaGpaaaaaaaFUaaaaaaaaaaaaaJUaaaaaaaaaaaaaFUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaQNaQNaSiaShaQNaQNaQNbvfaQNaQNbFublSaQNaQNaQNbFraQNaQNbuSaQNaQNaaeaFaaFaaFaaFaaFaaFaaFaaaaaaeaZpbqlaJnaKvaKvaKwaKvaIeaJuaIebuKaPybrvbqdbmtbmOaKBasNaYhbtCbtDbtFbtrbtsbttbLlbtxbjlaTLbINaTLaNnbEXbukbHwaNnaTLbINaTLaxwbuhbwRbuiaoaaoaaoaaoaaoabtMbtUbufaojbCWaoabkcbtLbtHbuHaCZaCZaCZaCZaCZaCZaCZbuFbuGbuLbovbuBbuDaCZaPpaPpavAbuObYbbYbborbYbbYbbYbbASbYbbuqarNaNLaNLaNLaNLbuvbuubPnbuybuVbuWbuUaAJbuTavEasPasPasPaaeaaeauBaQIauBauBauBauBauBauBauBauBbvBaaeaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlaGpaaaaaaaFUaFUaFUaFUaFUaJUaFUaFUaFUaFUaFUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaTpaZDbrsbIdaZfbsfbrsbtfbHybHrbHybHBbIebHybIjbInbIJbwrbISaQNaaaaaaaFaaFaaFaaFaaFaaaaaaaaaeaZpbvgaJnaKvaKvaKwbKvaIeaTAbumbujbwKbtqbtjbxSbyyaKBasNaYhaYhaYhbjqbvMbvNbjlbsHbsabjlbSXbTHbNpaNnbvAaNpbvraNnbrFbIVbvdbIUbvebqFbuZbuYbuMbLGbrGaoaaoaazAbvGazvaoaaoabvDbvEbvFbvDaCZbwybJmbowboCboFavAavAavAavAbbOavAavAavAavAavAavAacjaUoaQsaJzaJzaJzaJzaJzaJzaJzaNLbvZbvUbvTaNLbBpbATaNLbwabvObwtbwtbvQbvRbqNauybLcauyaScauBbirauBatLatMaSfatMatOauBbiratPauHaaeaaeaacaahaahaahaacaaeaacaahaahaacaacaahaahaahaacaaeaaeaaeaaeaaeaFvaMibIiaLIaLIaLIaLIaLIavcavcavcbwpavcavcavcaLIbwsaLIaLIaLIbHdaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaXFbwBaUMaUMbMnaUMaUMaUMaUOaYbbMFbMEbKcbKcbKcbKnbLHaUQbyFaQNaaaaaaaaeaaeaaaaaaaaeaaaaaeaaeaZpbxlaJnaKvbVqbxaaGDbxgaGDbuAbqmbEzbGdbwnbDabBzaKBbpHbxbbOSbITbxebuzbwXbvhbwbbsKbtOaVkcdbaVkbBNbBMaVsbziaVtaVkbJRaVvbwMaVxbLZbuEaVAaVBaVCaVDaVDaVDbvbbpcaVDaVDaVHaVDbpbboQaVDboJaVDbwvboGavAbpTbpUbpVbBsbpUbqybpUbqObpUbqRbYbbASbuqaThaQsaJzbxBbxJbxLbpSbxObxPaNLbzHbxpbxpbOdbxpbzIaNLbxubuVbzkaHoaHoaHoaHoaHoaRfasPaTnatMaToatMauGasPasPasPaTnatMauGatPasPaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaFvbCzaIlaGpaaaaFUatXatXayKbJjaweaxxbBLbJjayLatXaGvaFUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeboibojaPBaWgaQNaTpaWhaTpbwBaUMaWLaWYaTpaWhaTpaZCaWlaWmaVyaKBaKBaKBaKBaWpaWqaWraKBaKBaKBaKBaZpaORaOUaOVaOSaOTaKvaOkaPzaOmaOlaPyaPyaPyaPyaPxaKBaKBaSuaKBaKBaWCaOQaOOaWKaMhaWWaWVaWKaMhaOFaOHaWWaOIaWKaWKaWKbbLaWNaOKazxaITaBjaWSaWTaWKaWKaWKaWKaWUaOAaWKaWKaWVawgaOBaWKaWKaWKaWKaLeaKLaVMaVMaVMapJaVMaVMaVMavAaKJavAacjavAavAaHUaHUaHUaHUaOyaOuaOuaOtaKdaUEaNLaOdaTwaROaQFaSbaStaNLaSjaNSaNRaHoaUIaVZaNMaHoaNQasPasPasPasPasPasPasPaDUasPasPasPasPasPasQaaeaacaFvaFvaacaFvaFvaFvaFvaacaFvaFvaFvaFvaacaFvaFvaFvaFvaFvaFvaFvaFvaMiaIlaGpaaaaFUatXaweaxqaCRaxtaxraxuaCRaxvaweaGvaFUaaaaGqaIlaGpaLKaLKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaULaaeaaaaaeaaaaXFbeNaXFaVgaVgaUTaVbaXFbeNboiaXKaQNaXLaVEaOaayTaXOaXOaXOaRXaXOaXOaNJaXOaNmaNraNsaQSaKzaQhaySaUPaNqaHfaNDaNEaHfaNNaKcaHfaOvaOxaOwaOLaOzaSWaUHaYpaNzaNCaNCaFSaFJaNHaNGaNeaNgaLNaUsaUsaUsaUsaUsaUsaUsaLsaYyaSYaSYaSYaSYaSYaSYaSYaSYaSXaOraNiaTjaSYaNjaSXaSYaSYaLdaYGaUFaVMaJgaJVaJOaIXaIVaVMaOjaMxavAacjavAaaaaHUaINaIKaHUaMAaOgaMFaMyaMwaKaaNLaMTaMUaMVaMWaNXaQKaNLaQuaMoaLPaHoaSEaMkaMfaHoaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaHFaMpaMqaMpaMqaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaMcaMbaIlaGpaaaaFUatXaNyawqatXawlawkawjatXawiaSCaGvaFUaaaaGqaIlaLLaaaaLKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10480,71 +10505,71 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbecbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFaZjaQUaZlaFGbekaQRbemaQEaFHaZlaXQaEcaFWaFXaGdaGiaGsaGyaGzaFmaFpaMLaFEaFKaFNaFPaFQaGBaGAaGFaGEaGIaGHaGNaHiaYpaRnaZNaGKaFwaYDaJPaZLaDNaFdaTLaaeaaeaFhaKxaEEaDdaRibfaaxlbfcaAYaBmaECaJxaFraaeaaeaZTbfiaClbfkaGTaGLaDVaDzaZTaEMavgaGwazgbfAaExbfAbfwayfaEwbfAbfAbfAaEKbfAayuaEDaMHaJGbfAbfAaCSayubfwaEKaELaxXaCSaybaMSaTmaziaFoaKQaFnaFlaFkaETaEhaDZaDaaFgbcebcedBCdBBdBzdBJaaaaaaaaaaaeaakaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeajGaJJaJEaGbaJEaJKaGpaaaaaaaaaaFUaGfaGgayKaEiaNBaJMaNUaEkaJLatXaGvaFUaFUaFUaFUckMaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfPbckbckbaCbckbefaEdbefbfQbefaEdbefbckbegbehaXFaQQaQpaZlbfSaQnaTzbfVaTzbaHbaHaNcaNvaNxaHfaNuaNfaNtaMXaMZaMKaMNaHfaIwaLWaMnaHjaLVaHfaLTaLqaKVaKUaKTbbcaIHaYpbRAaZNaLSaIoaSwaLMaZLaIPbbsaTLaZPaIIaZPaOEbgsbgwbgubgvbgtbgsbgubgwbgvaNAaZPaIIaZPaZTaYtaYtaYtaIxbgAaQbbgCaZTaPlaLZaLYaLbbgMaJHbgMbgObgMaLcbgMbgMbgMaKKbgMaLvaIjaLgaLfbgMbgMaIJaQmaIiaKKbgSaKKaKOayOaKPaTmawaaKWaKWaKZaLxaKWaKWaLzbbEaMjaLDbcebcedBsdBvdBvdByaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaJIaaaaaaaaaaaeaLJaLJaKpaJRaIlaGpaaaaaaaaaaFUaFUaImatXatXatXaTxatXatXatXatXaLHbwsaLGaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcqbhkbedbeebckbefaEdbefaEdbefaEdbefbckbegbehaXFbhlbhmbhnaKeaKbaJZaJZaKgaKfaKebcCaKiaKkaHfaKyaJwaJyaJNaKmaIRaISaHfaIfaHLaILaIOaPnaHfaKHaKNaKIaKFaKDaSWaKEbbFaKlbleblebleblebleaZLaHDaHcaKobhUbqxaPHaNhbgubgubgubguaDTbgubgubgubguaIgaBCaMBaZPaPXaJYaMabifbigaKjaPfaNoaZTaFCaPwaKnazsbiwaGxbiwaGjbiwaMYbiwbiwaIUbiwbiwaOGaKXbiwaIraIUaFOaHhaOGaGjbiwbiyaPiaPmaIYaEuaJaaFjaJcaJdaJfaMjaJlaJlaJhaZbaFtaJqaTmaTmaTmaawaHTaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaIZaIWaJAaJvaJDaJCajeaJFaIlaFUaFUaFUaFUaFUaJXaLFaJXaJXaLwaLyaLwaMQaMQaNWaMdaMgaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybeEbjQaQZaZPbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbezbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbhobgGavAavAavAbdmavAbddbdgaUSbdaaTCbcYbcVbhuaJlaBIbcRbcQaZbaSmaJqaTmbhsbcFbeuaTSaTSbcUbeaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaIZbcLbcDaaaaaebcubbHbfWbbBbhNbrKaJXbhibkYbfDbhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbiUbaBbcjbckbckbiVbckbiWbiXbckbiYbckbcqbiZaULaZjbjabmsbbpbbrbbzbbtbbnbblbbpbmPbjkbaXaHfbiobiIbjebixaHfaHfaHfaHfaHfaHfaHfbjEaHfaHfbbcbbbbbabbhbbebbdbbiaYpaXoblebbjaVSbbkblebbybeEbjQaQZaZPbnHaZMbhBbjMbmSbjIbaSbjKbjIbjIbjLbjMbjNbjObnJaZPaZTaYtaYtaYtbljaYtaYtaYtaZTbmTaYpbahbkdbcTbezbcTbkdaSaaSaaSaaSaaSaaSaavAavAbcSavAavAavAbhobgGavAavAavAbdmavAbddbdgaUSbdaaTCbcYbcVbhuaJlaXubcRbcQaZbaSmaJqaTmbhsbcFbeuaTSaTSbcUbeaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaIZbcLbcDaaaaaebcubbHbfWbbBbhNbrKaJXbhibkYbfDbhdbhhbhqaJXbofbmbbgNbinbnLbhWbhWbiuaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiTbaBbaCbaBbaDbaBbaBbaDbaBbaCbiUbkDaQNbiabkFbkGaSWbbTaYOaTaaYObbPaSWaZcaXYaZdbaibkXbizaYLaYMbkmbizbjJbkAbizbkEbkXaYNbkXbagaXZaYIaYFbkObkXbjYbibblcbRAaZoaVTaZsaYJbleaTLaTLaTLaTLaZPaQfbloblpblqbeoaQXbssboRbqzaQYblrblqblyblzaQeaPYaZTblCblDblEbigaPRaYtbijaZTbkhaYpaOMbaIbaGbctbgibkdbawbazbfrbaubatbavaSRbyCbDEavAaUqaUnbeDaOhbOoavAbWIbaravAbambaobapbaqbakbakbakbfqbfoaJlaJlbggbfnaPgbgabfYbeGbeybcgbbxbbxbbSbbQbaPaYxbaPbaPaYxbaPbaPbaPbaPbaPbaPaYxbaPbaPbaPbaPbaPbaPaYxbaPbaZbbIbbxbbxbbxaYdbdZbejbebbebberbfsbnhbcfbcibdSbdTbdUbdVbdWbdYbbWbbYbbZbcbbccbcdaYZaLIaLIbrJaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNbyKbmrbruaSWbktbdKblPbdKbspaSWbsxbjxbfubmCcjJbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBbleaSobdLbeiaSBbtIblrbmYbeobskbsYbjXbndblGbndaSDboPboybvkbnjaTkaSZaZTbfIbnnbnobnpaTraZTaZTaZTaEMbnraWQbkdbfRbfObgIbkdbzcbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabkTbgYbhebhgbhbavAbddaYabzfaTmaFTbgVaEfbgJbgTbcZbgxbgcbmmaZbbafbadbkybjDaFLaaaaaabgKbcDaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaVNbeUbeaaaaaaeaGqbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaTpaWhbmpaSlaSlaSlaSlbmqaWhaTpaaaaQNbyKbmrbruaSWbktbdKblPbdKbspaSWbsxbjxbfubmCaXvbrEbmDbmCbmCbfxboMbmGbmBbmCbmCbfvbmCbmCbmCbfzbfybmKbmKboXbBebdPbnUblebdQbtWbcBbleaSobdLbeiaSBbtIblrbmYbeobskbsYbjXbndblGbndaSDboPboybvkbnjaTkaSZaZTbfIbnnbnobnpaTraZTaZTaZTaEMbnraWQbkdbfRbfObgIbkdbzcbyHbgLbgrbvxbgkbgjbgHbgFbgEbgDbgZbhabkTbgYbhebhgbhbavAbddaYabzfaTmaFTbgVaXxbgJbgTbcZbgxbgcbmmaZbbafbadbkybjDaFLaaaaaabgKbcDaaaaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaVNbeUbeaaaaaaeaGqbfLbuobulbtzbtvbsXbrObwZbxnbwTbwVbsNbwSbvKbvLbsCbvJbvIbhWbvlbvsaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaTpaaeaaaaaeaaaaXFbzWaXFbpQbqcaVgbpAaXFbzWboibojaQNaZjbwJbpwaSWbqTbdKbdFbdKbpzaSWbpPbhVbdAbdBbosbmobkVbdwboxbdCbnCbosbosbosbosaWPbosbmnbohbkVbdvbosbosbnDboAboBbnUblebbubbVbbfboNbbfbbvbbfbbfbtIaRWaRZboLboLboLbszbppbeJbdEbsyboLboLboLaRNaRLaZPaZTblKboTboUboVboWaZTbbXaXNbaYbpaaWQbcTbeIbeObeMbkdbeRbfEbfCbjfaSaaSaavAavAaTUavAavAavAbjobjpavAavAbeFaRPavAbeAaYabeBaTmaJqaJqaJqaJqbeCaJqaJqaWRbjraZAaTmaTmbffbfebfFaaaaIZbfGaaaaaaaaeaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaVNbeUbeaaaebeSbesbqSbexbqKbtBaJXbrbbqfbqhbqvbqCbhXaJXbqpbpCbqeaMQbqkbqobhWbiuaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaLBaWJaWIaXwaSTbdsaSTaPEaWFaPGbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaAkbqFaLabkdbkdbkdbkdbkdaTTaUkaSaaSaaSaaXzaUlavAaXxaXvaXuavAbbNbdtavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwaXCarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaUjaTSaSSaSgaaeaaeaaeaaeaaeaaeaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaeaJIaaaaVNaUmaJvaWtaWsajeaJRaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaWjaWzaXdaMQaMQbePaYYaPIaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqaazHaWEbrXbrYbscbqaaWwazhbqaaWwazhbqabqgaYpbRAbleaVqaRGaONbleaOWaOoaNwaVpbtIaZuaZxboLaZnaOYaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFaRkaSaazYaSdaTQazNaRUaRCaQtaSaaVYaXsaXgaVVaVUaVXaVWavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaaeaaaaaaaaaaaeaaaaaeaaaaaeaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaFvaOXaIlaGpaRDaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaboibojaPBaWgaQNaULaWhaULbtybrsbcybcMaULaWhaULaZDbrrbpNbkFbkGaSWaUUaSVaTaaSVaUUaSWbcWaXraXiaSWaTeaXmaTiaSWaSWaTcaSWbqabqaaXcbaLbaNaXcbqabqabqabqabqabqabqabqgbboaLBaWJaWIaXwaSTbdsaSTaPEaWFaPGbalbaWbcvbqtbbgbqtbqtbqubajbqwboLboLbdyboLbcObdcaZTbdGaRBbqAbdqbqBbdbaZTbdXaYtaAkbqFaLabkdbkdbkdbkdbkdaTTaUkaSaaSaaSaaXzaUlaSaaVWaVVaVravAbbNbdtavAaUqaTZaTXaTYaUhaUiaUbaUgarwarwaXCarwapDbelaJqbhcaYsaYnbduaYvaYTaYzaUjaTSaSSaSgaaeaaeaaeaaeaaeaaeaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaeaJIaaaaVNaUmaJvaWtaWsajeaJRaIlaFUaUraUpaYKaYRaYAaYEaJXaJXaWjaWzaXdaMQaMQbePaYYaPIaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFaZDbrsaZfaYXaZfbrsbrsbrtaQOaYbaYWaXMaXMaXMaXJaRzbryaRyaXVaRraRxaRwaRuaRtaRsaRraXnaTqaRIaUxaUxaUyaUxaUxbrSaRHaWDbqaazHaWEbrXbrYbscbqaaWwazhbqaaWwazhbqabqgaYpbRAbleaVqaRGaONbleaOWaOoaNwaVpbtIaZuaZxboLaZnaOYaXSbssbssaYQaYUaXTaYmboLaWGaWdaZTaXBbsAbsBaXbaSIbsEbsFaTdaYtaEMbqFaRkaSaazYaSdaIyazNaRUaRCaQtaSaaVYaXsaXgaTQaVUaVXbcPavAavAavAavAavAavAaRPavAaRRaRSaRTbgXbiJaRQbiJbiJbiJbgXbgXbiJbiKaRMbiNbbAbcsaIMbiRbiSbgXbgXbgXaaeaaaaaaaaaaaeaaaaaeaaaaaeaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaFvaOXaIlaGpaRDaFUaZKaZOaZQaTJaTKaTVaTWaUuaUAaUKaVcaWcaLIaLIaSQaFUaFUckMaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFbwBaUMaUMbfUaUMaZyaUcaUeaUebpxaUebiebhyaZSbcaaZEbiAbacaXjaKebqqbhpbgRbhtaXeaXhbgPbgQbgWbaxbbJbltaZGaUxaYCaXlbrTbqaaYwaYqbrXbrYbscbqaaYobDDbqaaYobDDbqaaWAaYpbRAblebleaYBblebleblebeXbeWaUGbleblublvblwbssbndbndbtQbtRbtSbtTbtTbcHbtVblQbmZblWbdqbtZbuaaZzbucbudaZTbhHaYtaYPbqFaRkaSabilbhYaRUaXRaRUbhZaRUbnAbeHbcPbjbbtdbtcbrZbptbyiaXUaXAbwIbiiavAbyxavAaPTaYaaXWbgXciTciXaZVaYebncbgXbnfbabbdHbkuaVRbkabtubjCbjBbcwbjPbkCbgXaaeaaeaaeaaeaaeaaeaaeaaaaacaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUbnKboKbniaTJbfbbfJbdRbeqbfNbfXbfKaTJaFUaaaaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFaRkaSaaAmaVOaVPaVOaXPaVQaApaSaaBvbcPbcJbcXbcPbeHbdJaXIaVhaVfaViaAlavAaRPavAaXkaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUaZXaZZaZWaTJaYSaZgaZkaZqaZraZtaZvaTJaFUaaaaaaaNKaNZaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaZhbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNaQQaQpaKBaZwaKBaKBbuQbuRbuQaUXbuQbuQbuQbuQaUxaUxaZIaZFaUxaUxaUxacpbHMbqaaVebrVbrXaYibqabqaaVdbqabqaaUZbqabqabenaYpbRAbgzbgpbfgbeTbfpbeTbfgbfgbkSblsbdcbkrbqtbjZbndbvmbfdbvobvpbvqbfmbjmboLbjibjhaZTbvvbvwbdqbhQbhjbvyaZTaYjaYtaEMbqFaRkaSaaAmaVOaVPaVOaXPaVQaApaSaaBvbcPbcJbcXbcPaWbbdJaXIaVhaVfaViaAlavAaRPavAaXkaVlaVnaUvaVoaVGaVIaVKbfjbgXaQiaZJaZRbmeaUdbjAbmhblXbmibmjbiObPGbgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUaZXaZZaZWaTJaYSaZgaZkaZqaZraZtaZvaTJaFUaaaaaaaNKaNZaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWbwgbwhaZjbwiaKBaRHbtwcnSbuQdLtbxHccRdLwdLudLvbuQcpocpocsUdJRdJYcsQaUxacpcbObqadABbJpbrXbrYbrUcbNbrVbrUcbJcbFdJXaXcbqgaYpbRAbgzcsPcsMcsNcsOcsOcsOcsWcsTblsclWcnTaZPaZPaZPdLAdLydLzdLydLxaZPaZPaZPcmjclWaZTaZTbtYaZTaZTaZTaZUaZTcgSaYtcsScsRaRkcjqcjscjscjsaUzcjscjtcjscttbeHbeHcuAbeHbeHbcPdxSduvdIGcimcidciYavAaRPavAdLBaVlcjdaZBcjhblXbnYcjpcjHcjLcjybnPbnQbnRaUdbnSbnTaYcbgdbnXbnWcnVcsXcEebWjbocbodbodbgXaaeaaaaXqaaaaXyaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaFUaFUaFUaFUaTJcoIconcpubfNcrjcpRcrqaTJaFUaaaaGqdIJbBHdLCaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbxDbxEbxFaZjbxGaKBdDUdDYcmDbuQchIbxHccRbWmchLdLqbuQdKkdJVcnjdJTaUxaUxaUxacpaKSbqabXybXnbrXbrYbrXbrXbrXbrXbrXbtEbrXbaLcdicbhcrHcrCcrucrAcrudzQcrucrAcrucsaciachmcfXchocrUcrMcrIcrIcrNcrJcrIcrLcrKcivckxclEclFcrMdAlcipcrMcsocsqcrMcsrcsccsmbyDaWQchWaRUcTiaRUdAraRUaRYaRUdgJbeHbeHcUSbeHbeHbcPdtnduvcigaXUciddxeavAaRPavAbnFciqbeBaUvcirblXblYblXcitciubmcbksbmdbpyaYfbnIbpBbmgbmlbmkblbciybUiaaebNCbpJbodbpKbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBaGpaaaaaaaaaaaadIDbUtbMUbMUdICclMdICbMUbMUaSOaLGaFUaFUckMcElcEmaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfcjrdzTcjraZjdHpaKBcmCdwcbGxbuQcfmbxHccRdwwbxHchQbuQaUxdJPaUxdJRdJQcrkaUxacpbrTbqabHlbJpbXibWUbvabvabvabvabvacbPbvabeYboAcqVcqZcrecbrcbscbrcbtccxcqNcqMbZVbZUbZYcqRcqncqOcqncqmcqmcqkcqJcqmcqpcqocpQcpScprdxwdxzcqjcpVcqccpxcpBcprcpscpHcpMcpEbZSchlcdpcLlcyGcyGcLicLjcdpcQwcQMcqacRvbcPcNHbcPcPTcyhcdccgzcgccfUdKTcfWavAbpqcgQcgYcgUcgLcgBcgOcgMdKrcfHdIuaVFaUWaVjaVmaVzaYcaWHbrjaVLaYVcfMbHWczpbRbbrqbodaPUbgXaaeaakaXqaaaaXyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaWBcEgaNKaNKaaaaaaaJUdIvcnIdIwbHidIybHidIzcnOdIAaJUaaaaGqaIlaGpaLKaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbADbAEbxFaZjdCHaKBcmvaKBaKBbuQdBDdCAdBrbxHbxHbxHbuQdJOdJNaUxaZeaUxaUxaUxcnQahccdabrVbrVbtEbZfbzobrVbrVbrVbrVcpnckVaXcbqgbWCcMJbSAbSAcdebSAcddbSAbSAbBqbBqccSbUhbBqcpmblscoNcoMcoPcoOcpacoMcphblscpmbCGbCGcyjccWbCGbCGbDRcdycdrbCGcdlcBKcmYbBybYHcdQbzecobbzecnUcoaaRUaRUcttcuAbeHctpcpjcEkcpjcqacvzceCceycewcesavAbxhavAcfjcxccfebiRceYcePceMceGbiRbiScdfaSkbmjbsWaYraRVaTIaTyaTIaTyaTOcdgcdmaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaahaacaaeaacaahaahaacaacaahaahaahaFvaFvaFvaFvaOXdLmbBHbBHcppajeajeaJUcDBcdOcdVcLMclMcLMcdVcdOdAZaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULdAbaZjdALaKBacpaKSaUDbuQcEoccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaaecufcutcoMcoMcuscoMcoMcuqcugaaebCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSadGSbJfcjsbAedGYcjsdHCaSacuAdGGbeHbeHbeHbeHbeHduvdFbcnFdGCcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcltbHncEebWjbuIbuJbuJbgXaaeaaebYOaaebVMaaeaXqaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaFvaaacEpbFgbFkaIlaGpaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaedLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaaectIctNctKctJbzvctKctJctMctLaaeckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcEncmGbEjdCWbEjbICdEBdELdDadDddFabjScmVbjSbjSavAbxhciocvZcvYciobgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaaebNCbwcbwdbwebgXaaeaaaaXqaaaaXyaaabSwaFvaFvaFvaFvaacaFvaFvaFvaFvaacaFvaaeaacaFvaFvaFvaFvaFvaGqaIlaGpaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebwfbwfbwfbwfbwfbwfbwfbwfbwfbwfbwfdzWaULdAbaZjdALaKBacpaKSaUDbuQcEoccRbCfcnlchQbxHbuQdKmctXaUxdKkdKjctWaUxacpbrTbqabETbETbtEbrYbwDbwDbwEclmbwFckWbqabqacdibCwcaVbSAcllckrckIcjYcnhcbicNedLYcvOckLbBqaaecufcutcoMcoMcuscoMcoMcuqcugaaebCGdLXdvNdvOdvTbCGbCGbCGbCGbCGcPEcBKcmYbCObqGaSadGSbJfcjsbAeczycjsdHCaSacuAdGGbeHbeHbeHbeHbeHduvdFbcnFdGCcnHavAbxharNcntcnocnubiNcnycnvcnBcnzbiPcohbuxbdNbepbevbevbeZbgqbghbgdbfZbfMcltbHncEebWjbuIbuJbuJbgXaaeaaebYOaaebVMaaeaXqaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaFvaaacEpbFgbFkaIlaGpaaaaJUdJlcdOcdOcdOdJkcdOcdOcdOdJjaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaedLWbojaQNaWgaPBaWgaQNckJaSlbxFaQNaWgaQNaQNaQNbZmbAGcfodnUarXagvbuQcmJcmsbCfcmtbDqbEHbuQaUxaUxaUxaUxaUxaUxaUxacpbrTbqacmpctHbtEbrYbrVbrVcckbrVbyabybbqacjbbqgaYpcaVbSAbDQcgscgxcgCcmqcbicgFcgGcgHcgDcgEaaectIctNctKctJbzvctKctJctMctLaaeckDcjWdLVdLSdLTdLUcvxcPCcOKbCGcgVcBKckKbEhbEibEjbEjbEjcmEcmKbEjcEncmGbEjdCWbEjbICdEBczudDadDddFabjScmVbjSbjSavAbxhciocvZcvYciobgXbgXbgXbgXbgXbiMbiNcmWaZYcneblXbvVbvWbvXbvYbnTbbmbanbMhbUiaaebNCbwcbwdbwebgXaaeaaaaXqaaaaXyaaabSwaFvaFvaFvaFvaacaFvaFvaFvaFvaacaFvaaeaacaFvaFvaFvaFvaFvaGqaIlaGpaaaaJUceTdJgdJfcdOdJecdOdJddJcceIaJUaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFaZDbrraZfaZfaZfbrsbrsdLQbrsbrrbrsdLPbrrbrsbpNcuPaKBaZmbHMaqhbuQclnclobxHbxHbxHcljbuQbzmasdarnctrdKedKhaKBacpbMbbqabCtbEYbtEdAHbwCbwCbwGbrVbrVcnkbqacgbbqgaYpcfPbSAcdGcefceqchgceecbiceAcetceuceNbBqcfsbFmcfsbFmbFmbFnbFmbFmcfsbFmcfsbCGcjobJPchRchTdLMcicchNchAbCGcgVcBKdLNbqFbqGbEjcmhbHXbFCbFBdCmcmacmaclSclYbEjbEjbEjbEjbEjbEjbEjbjSdxUclNbgbavAdxTciocvRcuUcvXciodIYctCaQsaSRbgXbxqcfKcfJcfNcuQbxvbxwbxxbxychHbbmcficcCbHWczpbRbbxCbuJcfVbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLKaOXctBaLIaLIdIUaLGdIWdIVcdOdIXcdOdISdITdIDdIUaLIaLIctwaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaXFbwBaUMaUMbfUaUMaUMcumdLIdLHaUeaUeciMcihcgRdLLdLKaKBaZmbMeaqhbuQdLwbGabxHbxHbGabxIbuQdKddKcagSarXagvdKeaKBacpctmbqacjUbxXckacjZbrVccDckdckcctncdtbqacdFbqgaYpcdIbSAcbRbFvdLGcgJcbicbicbUcbXcdPctZbBqctcctactdbGzbGAbGBdLDclGcticthctlbCGdLEbJPcgndLFbCGcglcgXcgWbCGcgVcBKcjGbqFceXcktckubGRckqbOlbGVbFCbFCbVackobEjbMoceWcffceWbIzbEjckSckRcoGckNavAbxhciocuOcuNcuMcioaQsaQsaQsckFbgXbxqceHcerbiJbiJbiJbyTblXckjblXbbmcbGbMhbUiaaebgXbgXbgXbgXbgXaaeaaaaacaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlaGpaaaaaaaJUcuucdOcdOcisdINciwcunaJUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaZhbmqceQaTpaQNbuNbojaQNaWgaQNbuNbojaQNaQNccNaQNaQNaKBaZmbMbaqhbuQbxIbWkbHzbxHbHzcfQbuQdJKbrTbrTaKSbxMbrTaKBacpbHMbqabqabMvbMDbMwbMvbqabqabqabqabCubqabqabGobbFbNwbSAbKsbFvbKkbVpbJQcbibNvbNhbNubMQbBqcNNcNObIfcLFbIgbIfcLLbIfciQcMqcMUbCGbHEbJPbLubLDcNLbWxbWnbWpbCGbQWcBKbXkbqFbqGbUXcwybLzbLEcMTbUZbFCbLzbVaceFbEjbEQbHacchcfhbIzbEjbbwbPsbPrbPvbVmbVtciocjPciSckwcioapCdJCckCcfYbgXbArbZqbZpbVWbiJbAvbxyblXbxwbOybOzccZcltbHncEebWjbAAbABbACbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlaGpaaaaaaaJUbVscmNcmObYzcmUcmRbVsaJUaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaXFbeNaXFaaaaaaaaaaaeaaaaaaaaaaaeaaaaKBbUwarXbUxbUybyObUycfwbuQbuQbuQbuQbUvbuQbuQbuQdJGbMebHMbrTbUAbQsaKBacpciAbqabKRbKPbKObHPbHgbKMbKfbqabKNbJYbGObqabqgaYpbWgbSAbDQbFvcnWbHxbDQcbibJSbIocMCbJObBqcincaycxwcfLcoibWQbGUcyvbJHbJIdJHbCGbFsbGIbPJbGNcMBbUQbUCbUNbFpbEFcBKbUBbqFbqGbTObTRbTNbTNcdxbIAcdubUbbUdcdzbEjcMybHacftbKbcepbEjceocfFcQmbTlavAbxhciociociociociocluaQsaQscelbgXbArbZqbZpbUebBXbAvbBYbnTbxwbAwbbmcaObMhbUiaaebNCbCabCbbCcbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlaGpaaaaaaaJUclBbMUbZtciJbZFbMUclCaJUaaaaaaaGqaIlaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaULceQaULaaeaaeaaeaaeaaeaaeaaeaaeaaeaKBbSFaXOaXOaXOaXlbrTaqhbHMaUDbtwbrTaDnccJbMbaKBaKBaKBaKBaKBbTcaKBaKBbSYaKSbqabHHbHSbHRbHRbHPcekbTfbqabFccgibFabqaaWAaYpbUjbSAbDQbTdbEfbTecCmcbibDlcKpcJWbBqbBqcegcdDbLdcdjccMccLcdvcdscuhcdqcCkbCGbEadJDcnndJEcLZbSIbSIcKwbCGbGYcBKbSJbqFbqGbEjbRfbRjbRybFCcpOcqdbOlbRYbRZcenbScctOcejbRMbRSbEjbjSbjSbjSbjSavAbxhavAcxnckFaQsaQsaOhaThckEaQsbgXbgXcfpaSkbAubiJccgbDhblXbDibOybbmchBccCbHWczpbRbbDkbABcPDbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaOXckGaFUaFUaFUaLHaLIaLIaLIbwsaLIaLIaLIaSQaFUaFUaFUckMaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaKBaKBaKBaKBbQsbxRaXObQhcdSbQlbKtbKtbKtccabKtbKtcdSbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqcdTbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNbPZbMNbMNbPWbMPbMNbMNbMNbMNbEjcdMcdNcdKcdEcdAcdnaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcdLblXbEDbEEbbmcbGbMhbUiaaebgXbgXbgXbgXbgXaaeaaebSwaaebVMaaeaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlaGpaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaKBaKBaKBaKBbQsbxRaXObQhcdSbQlbKtbKtbKtccabKtbKtcdSbKtbKtbKtbQVbKtbJibQUbrTbqabEZbFtbFqcdTbJpbERbEybqabqabqabqabqabAWaYpcaVbSAbSAbQTbQTbQTbSAbSAbBqbBqcEbbBqbBqcCLcCxbMGcCLcDccDccDccCxbMIcCLcCxbCGbCGbCGbCGbCGbCGbQQbQQbQQbCGbCNcBKbSzbqFbNWaZLbMNbMNbMNcpJbMNbMNbPWbMPbMNbMNbMNbMNbEjcdMcdNcdKcdEcdAcdnaQsbLLbLMavAckCckzckyaQsaOhaQsaQsbWIbgXbPIbmcbPLbiJbiJbiJcdLblXbEDbEEbbmcbGbMhbUiaaebgXbgXbgXbgXbgXaaeaaebSwaaebVMaaeaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlaGpaaaaaaaaaaaaaaaaaabQgaaaaaaaaaaaaaaaaaaaGqaIlaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaKBaKBbzdccPaWoaKBccQaKBaKBaKBcoLbYwbYwbYwbYwbYwbYwbYwbrTbZwaQWbVBbqabVwbUaccebTnbJpbHPbWoccfbVFbtwaKBcbQbqgcorbYeccrccnccicciccicEhcdocxTcEiccidAScosccrccrcoycowcowcowcoxcowcovccccccccKcoEbXwcfSdBocEjcciccicciccObTzcccccmbqFdvRchbcevbWDbWEbXWcmycmBcmZbXWclOclZcmdcmobEjdvYdAacnCcarcnJcnDasMbLMbOnavAavAavAavAavAdvAdvbbgXbgXbgXccbbmcaSkbFPbFQcoqbnIbFSbFTbFUbOzchXcltbHncEebWjbFWbFXbFXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqaIlcEgaNKaNKaNKaNKaNKaNKbQgaNKaNKaNKaNKaNKaNKaNZaIlaFLaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaacnwcixbzacoBcnwbrTdvaagvdAcaKBcolbYwcnXcnAcnscnrcngbYwbrTbHMaQWbHMbqabqabqabqabqabqabqabqabqabQSbHMaKBcijbqgbOUbOVaWKaWKaWKaWKaWKaWKaWVaWKbPjbOXaWXaWWaWKaWKbOYbOZcojbPbbPcbPdbPebPfaWKaWKcaXbPhaWKaWKaWVaWKaWKaWKaWKbSRaWKbPjcnYcfzcfycawbUmcdkbUmbFFbFFduKduIclibFFcdkduJbEjbEjbEjbEjatJbasaUobWIbQMbOoaUobOocasbZiavAbvSavAbgXcmLcaxcaKcaMcaUchfchfchfaVzblXblXblXbbmcgTbMhbUiaaebNCbHsbHtbHubgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaGqdvMbBHbBHbBHbBHbBHbBHbBHcmAbBHbBHbBHbBHbBHbBHbBHdvJaGpaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacnwclJbyZcifcnwbrTdJyaqhaKBaKBdACbYwcjBclDctGclUdKGbYwavabrTbZAbKtcdSbKtbKtbKtbZDbZEbZEbZEbZEbOMbOSdokcQabTPclHbQdbQcbQebZXbQdbQdbQdchGbQdbTUaVCbUgbQiaVCaVCbRqbQkbRQcxPbQnbQobQpbQqaVCbZnchccgZcgZchacdUchachachachiclAbRXckbchhbSaceVceUdtDdurdiddkCdtobSZbTaddvcgNbSZdcBbMNchJchPbMNatJbasaUoaUoaUoaUoaUobZeasMasMckPcqWbYxbZdbYybYpbYubYkbYmblXblXblXblXblXbnTblXbbmccjccCcksczpbRbbIPbFXbUSbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabFgbFgbFgbFgbFgbFgbFgbFgcEfbFgbFgbFgbFgbFgbFgbFgbFgaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaaeaacaFvaaecnwcqedzMbyYcnwbVBbrTcVRaKBcjKcvobYwcjwcpqcjucjncuSbYwbYwbYwbYwbYwbYwdJpbYwbYwcjIbYcbYdbHMbMebrTbMbaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLaZLaZLctQbRwbRwcezceDbRwcNWbRwcjmcbDbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdNdaZLbSXbNpbNpbGWaZLcaeaZLcPGcUvcPGbMNcAkcENbTacylcxybSZbTacwnctscvUcrZbMNcfZcgtbMNdHLbXlcfTasMasMasMasMbXfbWTbMicjjbMibMibiNbRhbWLbWMblXbWHbevbevbevbevbevbWGblXbbmcbGcjibgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLKaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqccobYwbSlbSmbRKbYwbRRbSjbREbYwczGbYwbYwbYwbYwbYwbYwbYwbRzbRpbRxbRlbRnbRmcxLbQZbRkbYtcxLbUIbXObUIbXRbXQbUIbXObUIbYIbMzbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbPObPObPObPObPOcpcaZLcclcboccBcevceicdkbTacgNcgNbSZbTJcgNcgNbSZchdbMNbUnbUlbMNatJbSSbSVbMibMibMibMibMibMjavAbSBbSCbSCbgXbXNbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaaeaaeaaeaaeaaeaaeaaeaaebYOaaebVMaaebSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaabMqbMrbMrbUpbMsbMBbMAaaaaaeaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbxmbAPbxkbUGbUFbUubUEbUubTQbTIbTEbTycwvbTxbSObThbAcbYTbNYbPQbYTbuSbtobXObTLbTSbTTbSNbtibtmbTVbTXbZIbTVbAObAfchpbPObZKbYZchnbPObWwaZLchkchechYchSchqbXZcjgbVlciebXZcjgbVlbVlbXZcjzcjxbVObVybYFbYGbasaUobULbNaavAavAavAavAavAcpedIBcaobgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabIWaaaaaebWRbKjbKjbKeaaeaaeaaeaaeaaebYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbxjbUkbVcbUMbVubVrbTrbYYbGybrxcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbTLbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbVxbPObPpaZLbWXbWqbXFcevbZBbXPbXdbXKbXxbXKbXGbXKbZLbXKbrAbMNbRPbRCbPwcsVbMjavAavAavAavAbLAcCdcEAcMLcRVcAfcCcbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaaeaaaaaaaaaaaeaaaaXqaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaaeaacaFvaaeaaabIWaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzcaWdEcbYwbMHbNmbNjbNibNgbNfbNlbYIbYIbAUbYIbNDbDmbXobXobXqbrMbsebrCbrDbrHbrIbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwaZLaZLaZLaZLbMNbMNcaYbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAdAodDIdHOdCSdCVdBcdBmbgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaaeaaeaaeaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvAaaaaaaaaaaaeaaaaaaaaactSaaaaaaaaeaaaaaaaaaaaaaaaaakaaeaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwcbjbZhbYwaKBbxzbxzbxzbxzbxzbxzbXCbNibXVbXTbGcbYIbGgbYQbZcccwccvbSEczybSEbFjcctdJAbUIbTLbmybTTcwbcpvbFMcomclLcbcccHbDpbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXcbWbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAdRkbTvdRhbTsbBWdRidRjbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaaeaaeaaeaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaaaFvaaaaaeaaebYwcaTbPlcaCbYwbYwbYwbxNbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBbGvcagcbmbxzcaQcaPcaJcaIcaHbYIcaFcaEcaLbStcambZNbZNchVbGicbqbGicdHcbvbmybYNcvBcmkciNciNbYPbCncdCbYPbYUbYVbPOccAcczcnfbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfdRlbTsbWZbXbbWYbTsaaeaaecxsaaecxFaaecxsaaecyHcwTcwEaaecwEcxdaaeaaeaaeaaaaaaaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVajGajGaaaaaeaaabYwbVYbYwbGbbFZbFZcatbFZbFZbVRbZxbZxbZxcbebZxbZxbZxbVSclpcslbVJbUObUUbVUbVVbNkbxzbWfbCTbBZbVPbWfbYIbXebXabYIbXzbXgbZNbDebZPbCvbZRbYjbZNbYMbDocdBclyckhckncjDcavbZZbZTbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbBnbDNcgobNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAdMMdJmdJSbTsbBWbCsbCybTsaaebgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaacuLaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXpbXtbXubXvbJgbXBbNObJlbJnbNQbOsczubJobXSbNUbJzbKrbNVbPybPxbYDbYCcapbZNbYMbmycdwciNciNciNciNckTcmMcmFbYPbYJbOJbOtcsdbWBcuScmzcnxcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAdRgbTsdRfbCRdQGdNDaaebgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaaaaeaaeaaeaaacabaaaaaeaaaaaeaaaaaeaaaaFvaaeaaeaaabYwcfdceZcfnbnGcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwcfAbyRbHkbyAbGGbGHbHCbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIEbGibYMbmybYNbCnbXUbPNbQxbQvbIxbQubIQbyubyvaXDaYHbWBcaqbQFbQfbPTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbnEbYwbBobVHbVIbVKbVTbWeavAcpGbTsbTscqAbTsajeaaebgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbRObGrbzUbIIbYwbIKbJCbIkbJabImbLBbLwbIcbzEbLxbGpbSEbSEbSEbLtbFzbGjbLvbLocfvbnNbJkcbzbZNciWbmybRGbYPcahcaabZHbKSbDFbRibYPbzBbZvbWzbVNbWBbdObYvbQYbQGbWBbrWbJVbDVbDTceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQscpqbQEbYwcwHcpNbTsbBmbTsbtNaaebgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaaaaeaaacacbZGbZocaicajcalbmwbYwbYwbFobYwcdZceacebceccedcaAbyzbQjbyzbYwbxzbExbyBcjlbxzbxzbSucyUbEWcemcembFxbHTbFVcemcemcshbZNcbycfvbEUbUqbZNbZNbDbbmybKmbYPbJXbKhbLfbKSbBubAqbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbPKbEkbIvbYBbYhbEbbEJbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwcnPcocbFRbFYbFRajGaaebgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaebwWbwWbwWbwWbwWaaaaFvaaaaaeaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbQDcaAbCBbDnbEPbYwbwPbyqbFlcflbGmbHUbPPbNYbSDcemcqLbCKcfqbDjbnzcemctGbZNceOcfvbHLbHDbGibIlbykbnsbPqbPubPBbPCbGPbGnbDFbFbbBJbGlbQAbQyaWbaWObVfaVwbFEbOraVrbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaecokcokcokaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaeaaaaaeaaaaaeaaabIWaaaaaeaaaaaeaaeaaeaaebUYaaaaaeaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTcgmbLnbLmcgpcgqcgrbUVbNYbPQbOkcgucgvcgwbLpctecembQLbZNbMJbqVbpkbRVbRtbRsbRubmybRFbRvbRNbTpbUDbQbbQzbTGbQObQCbRdbAxbBxbJsbURbBCbIRbUTbZabUTbIybIpbIDbJybwUbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwcxocokcyWcyWcyWaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaebJUaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacaccvqcaicvjcaicaibmwbYwbYwbxZbLSchscgechtcggchuchvchwbDuchychzbDwbLPchCchDchEchFbVAbLNbDmbPmchKbDgchMbLschMchObTBbZNbOPbOKbTAbOObGibRsbRubmybRFdJWbCnbSWbWbbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbVkbJBbVbbBGbJTbJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaacokcyWcyWaaaaaeaaeaacaXyaXyaXyaXyaXyaXyaacaXyaXqaXybVMaaeaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaeaaeaaacacbNAcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbJMchUbKiciLbTgbHUbSHbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfboubMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUbLbbJZbMtbLkbLkbLkbLkcjkcjkbIBcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKcxibQLbQLbHhbYwaaeaaeaaeaaeaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaecaccalchrcalbNZbZlcjBcjTbYwbQKbYwbSkcjAcjVcjCbSLcaAbKXcjFbShbYwbPYcehcehcehcehcehcjabAtbTMbNHbKVcjMbHFcjOcsCcembwQbPzbPzbOjbxYbxWbuXbokbHVbpibHYbHZbIabSMbHIbHGbHKbHJbHNbOabHQbHOckfckgbOgckibtGckkcklckmbphcjkdJvbJcbOQbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaaeaaaaaaaaaaaeaaeaaeaacaXqaXqaXqaacaXqaXqaXqaacaXqbSwaXqaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaaaaeaaeaaeaaaaaacvTaaeaaaaaaaaeaaeaaaaaaaFvaaaaaeaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwcxZcxYcyfcyebVAcukcuDcemdKQdKRdCGcoCcoCcoCcoCcoCcoCcoCcxJdCLcxJcxJctPcrncrobYwcmzdQwdEcbYwcjccjcdAgcjcckUctYckYckZbOgclaclbclccldcledQxcjkclgdHadHccxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaaeaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaaeaaaaaabUYaaaaaeaaaaaaaaaaaaaaebYwbYwbYwbYwcgKbQKbZhcucdCMbQLcEJcuSbZhclwctGbYwbYlbQLbYwcwrcwqcwhcwfcBdcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctodKOctqbTSbYNbYwdDWdNjdODbYwctEdBlclXctFckUcAJcmbcmcdKPcmecmfcmgdDXcmidPxcjkdQvcmldGMcwScuobYvbCQbFAdEadEbbZhdLadEadLbcotclraaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaacaFvaFvaFvaaaaaaaaacvTaaaaaaaaaaFvaFvaFvbUYaFvaaeaaeaaeaaeaaeaaeaaeajGbYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRczEczIcyYctjcQFcxvcxxcoCdMJbTZcwYbUJcwGcoCcxjbXccxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEdMscnacnbcnccnccndcmicjkdQFcmldHjcnicJRbYvdJwdKHbYwbZgbQLcOzbYwbQLcpZbYwaaaaaeaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaFvaaecBBaaeaFvaaaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaeaaecELcEKbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkdInbQLbQLcpWdKGckXbYwdEjdEkdEldEmdEgdEhdEictjczmczocEMcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdQyckUcpJcjeczqbLkdEfcnZdKUdKSbTWdQEcjkcoecofdHicxXcnibYvbYwbYwbYwbEJbYwdLdbYwbYwbYwbYwaaeaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaFvaaaaaeaaaaFvaaaaaaaaeaaeaaeaaeaaaaaaaaaaaeaaeaaaajGajGbYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdEzcNScOycOucMIdEocMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkdLgcjkcjkbYvcpXclpclpcpYbYwbQLdLecubdKZcubaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaakaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaeajGbYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdErdEtdEucyscyncyqcxVdDzdMOdMNbXrdMLdMKdDAcyIcyRcAKdDGcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLbIGcBOcKNdJidovbYWbYgcEOdHlbXAdJqcafdKydKCdKDdKMdoBcdYdJobQLbQLbYwbYwdLfbYwbYwbYwbYwaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaeaaeaaeaaeaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdEOdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdNcdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGdNodNpdOddOecEPcEQdOmdOndNrbJDdOndNvdNwdoBdovcqQdBwdovdovdNudOjdOhdOidNtaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecYFdpecYFaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaeaaeaaaaaaaaaaaeaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydEEdEFdEGctjcKjdAmcJUcoCcaudNCdNBdMQdMTcoCdMVcKOcKOcxJdMUbTSbYNcjcdNEdNfdNFdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNMdLhdNJdNJdMfdMydMRdMSdLpdLRdoBdppdNQdNRdNSdLodNOdNOdNOdNPdOgaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecYQcYFdsCcYFcYQaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaabYwbZhdKabYwcuecqqdCIcOccsbcrDdolcrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCdATcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdssdptdsgdshdspcBCcBFdsedsfcLmcOecKJdsrdtidtkdoPdsEdtJdufdoVdpcduiaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecsGcszcsFcsHcsKcszcsGaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecwucwucwucyJcwucwucwuaaaaaeaaaaaaaaaaaeaaaaaabYwcizcpWbYwbSxdnEcEFdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFdJWcjSdnJdNXcvbdBEdJUdEddERcvJcqUbSTcqDdovcAecAecBlcAbcAccxlcxBcxNcyycyCczHdoBdpvdpwdpxdovdpydqGdrbdovdrxdovajGaaeaaaaaaaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaecrScrTcrVcrWcrWcrWcstcrScrTaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaaeaacaFvaaecnwcqedzMbyYcnwbVBbrTcVRaKBcjKcvobYwcjwcpqcjucjncuSbYwbYwbYwbYwbYwbYwdJpbYwbYwcjIbYcbYdbHMbMebrTbMbaKBaKBaZLaZLaZLaZLaZLaZLaZLaZLaZLaZLctQcuocuocwhcvccuocwrcuocxZcyfbqFcbBcbCbRDcTgbRDbXDcexbRDbRDdNdaZLbSXbNpbNpbGWaZLcaeaZLcPGcUvcPGbMNcAkcENbTacylcxybSZbTacwnctscvUcrZbMNcfZcgtbMNdHLbXlcfTasMasMasMasMbXfbWTbMicjjbMibMibiNbRhbWLbWMblXbWHbevbevbevbevbevbWGblXbbmcbGcjibgXaaebgXbgXbgXbgXbgXaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLKaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaacnwbLKcracrbcnwaKBaKBaKBaKBbYwcvobYwbSnbSobSpbSqccobYwbSlbSmbRKbYwbRRbSjbREbYwczGbYwbYwbYwbYwbYwbYwbYwbShbRzbRpbRnbRxbRwcxLbQZbRkbYtcxLbUIbRmbUIbXRbXQbUIbRmbUIbYIbRlbSKbMSbRLcwbbSNcwbbLObYKcwbbSNcwbbRLbPObPObPObPObPOcpcaZLcclcboccBcevceicdkbTacgNcgNbSZbTJcgNcgNbSZchdbMNbUnbUlbMNatJbSSbSVbMibMibMibMibMibMjavAbSBbSCbSCbgXbXNbLVbLTbLRbLQbnTblXblXbWHbevbLXchHbbmbMgbMhbgXaaeaaeaaeaaeaaeaaeaaeaaebYOaaebVMaaebSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaabMqbMrbMrbUpbMsbMBbMAaaaaaeaaaaaaaaabYwcvobYwbYwbYwbYwbTwbYwbYwbTtbTubTtbYwbYwbYwbYwbYwbTicjvbYwcdYbxmbAPbxkbUGbUObUubUEbUubTQbUFbTEbTycwvbTxbSObThbTIbSEbNYbPQbSEbSHbStbRmbOsbTSbTTbSNbtibtmbTVbTXbZIbTVbAObAfbTLbPObZKbYZchnbPObWwaZLchkchechYbUUchqbXZcjgbVlciebXZcjgbVlbVlbXZcjzcjxbVObVybYFbYGbasaUobULbNaavAavAavAavAavAcpedIBcaobgXbVjbMKblXblXbxwbMLbnXbnXbMRbMTbMRbnXbMYbMZbMhbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaXyaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabIWaaaaaebWRbKjbKjbKeaaeaaeaaeaaeaaebYwbGbbFZbKYbYwbLabLebZbbYwbLgbLhdJrbKubKzbQLbKHbYwbKIbuXbIHbIhbxjbUkbVcbUMbNUbVrbTrbYYbGybNQcxLcxLbHjbGFbLibLybMabWdbEObWibWhbKGbXsbXEbOsbTSbTTbVebVfbVgbVhbKqbWSbVkbVkbFwbFybTkbSgbRJbVxbPObPpaZLbWXbWqbXFcevbZBbXPbXdbXKbXxbXKbXGbXKbZLbXKbrAbMNbRPbRCbPwcsVbMjavAavAavAavAbLAcCdcEAcMLcRVcAfcCcbgXbLFbKFbKDbKCbKAbMcbKybKxbKwbMkbKWbKUbKLbKJbMhbWWdOqbWWaaeaaaaaaaaaaaeaaaaXqaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFvaaeaacaFvaaeaaabIWaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaabYwbYwbYwcvobYwbMCbFZbNbbNcbMXbGwbMlbQLbQLbZbbMybYwbMmbMxbYwcuScmzcaWdEcbYwbPZbPPbOQbNibNgbOtbPNbYIbYIbAUbYIbNDbDmbXobXobXqbrMbsebrCbrDbRibrIbHpbVebVfbVfbVfbWtbUfbTYbWvbBCbXJbXIbWlbVibWAbPObWwaZLaZLaZLaZLbMNbMNcaYbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNbMNatJbNKavAcfRchjavAdAodDIdHOdCSdCVdBcdBmbgXbNNbNNbOCbNNbXLbNNbOCbONbXLbXLbMhbNNbQNbPibXMbgXbgXbgXaaeaaaaaaaaaaaeaaaaXqaaaaaeaaeaaeaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvAaaaaaaaaaaaeaaaaaaaaactSaaaaaaaaeaaaaaaaaaaaaaaaaakaaeaaabYLbYEbYwbYfbYnbYobYwbYwbYwbXYbYabYqbYrbYsbYwbYwbYwcbjbZhbYwaKBbxzbxzbxzbxzbxzbxzchpbNibXVbXTcfAbYIcgocgmbZcceDcezbJacdHbJabFjcctdJAbUIbOsbmybTTcwbcpvbFMcomclLcbcccHbDpbXHccIbPOccyccqcbAbPObOAbXXbXXbXXbXXbXXbPgctubXXbXXbXXcbWbXXbXXbXXbXXbXXbZQbOWbZWasMckvbZCbNrbZJdJCavAdRkbTvdRhbTsbBWdRidRjbgXbgXbgXbYSbOEbOFbOEbOIbOEbOFbOFbODbOEbYRbgXbgXbgXaaeaaeaaeaaeaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaaaFvaaaaaeaaebYwcaTbPlcaCbYwbYwbYwbxNbYwbYwbYwbYwbYwbYwbYwcaGclwbMmcaDdEebYwcazcaBbGvcagcbmbxzcoVcnZcnMckncjJbYIcjFcjmcaLchvchSbZNbZNchVbGicbqbGicjacbvbmybYNcvBcmkciNciNbYPbCncdCbYPbYUbYVbPOccAcczcnfbPObGTcizbWBbWBbWBbWBbPFbWBbEbbEbbEbbEbbEbbEbbEbbEbbEbbZgbYwbQLaQsaQsaQsavAaQsaQsavAcbwcbfdRlbTsbWZbXbbWYbTsaaeaaecxsaaecxFaaecxsaaecyHcwTcwEaaecwEcxdaaeaaeaaeaaaaaaaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVajGajGaaaaaeaaabYwbVYbYwbGbbFZbFZcatbFZbFZbVRbZxbZxbZxcbebZxbZxbZxbVSclpcslbVJbVubUVbVHbVAbVPbxzbWfbVUbBZbVVbWfbYIbXebXabYIbXpbXgbZNbDebZPbCvbZRbYjbZNbYMbDocdBclyckhbXzcjDcavbZZbZTbYPbQrbGJcadcaNcadbPObPOczlbYwbWBbBnbDNbXBbNzbFdbEbbFIbFIbFIcaSbNsbNxbFIbEbbZgbYwbWNaUobWFbWJavAciVcjQavAdMMdJmdJSbTsbBWbCsbCybTsaaebgXbNFbNCbNFbgXbNFbNCbNFbgXbNEbNCbNBbgXaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaacuLaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbQKbYwbYwbXhbXjbXjbXjbXjbJdbXjbXjbXjbXCbXtbXubXvbXSbXOcapcambYTbYQcaIcaHcaFcaEcaJcaPcaQbNVbPybPxbYDbYCcbzbZNcbDbmyccvciNciNciNciNckTcmMcmFbYPbYJbOJccwcsdbWBcuScmzcnxcjvbWBbWVccEbunbOfbQwbEbbFIbOebNXbNTbNPbNMbNLbEbbZgbYwbYwbYwbYwbYwavAavAavAavAavAavAdRgbTsdRfbCRdQGdNDaaebgXbOwbWObOxbgXbOubSdbOvbgXbOibNdbOmbgXaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaaaaeaaeaaeaaacabaaaaaeaaaaaeaaaaaeaaaaFvaaeaaeaaabYwcfdceZcfnbnGcfucfxbZsbZudIFbYwbzQbyUcbHcbIbzLcaAbEgcbLcbMbYwbHCbGHbHkbGgbGGbGpbGcbRHbzrbzbbRobRrbRobzbbRobFhbGecbdbJucfvbJqbJkbIEbGibYMbmybYNbCnbXUbDTbQxbQvbIxbQubIQbyubyvaXDaYHbWBcaqbQFbQfbPTbWBbGuccGbFGbFHbQPbEbbFIbFIbFJbFIbFIbFLbFKbEbbZgbYwceRbnEbYwbBobDwbVIbVKbVTbWeavAcpGbTsbTscqAbTsajeaaebgXbVLbWPbCEbgXbRgbSebCkbgXbOGbNecbTbgXaaeaaeaaeaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaecuLaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacfGcfOcaicgIcgPcalbZocgybYwbQKbYwccTccUccVbzXccXbRObGrbzUbIIbYwbJMbJCbJzbJobJnbLBbJlbIcbzEbLxbJgbJabJabJabILbFzbGjbLvbLocfvbnNbJkbIKbZNciWbmybRGbYPcahcaabZHbKSbDFbImbYPbzBbZvbWzbVNbWBbdObYvbQYbQGbWBbrWbJVbDVbIkceLbEbbEbbGEbGDbGMbGLbEbbGKbEbbGQcbxcakbCFbYwbCDaQsaQsaQscpqbQEbYwcwHcpNbTsbBmbTsbtNaaebgXbVLbGkbVLbgXbRgbGsbRgbgXbLYbGtbLYbgXaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaaaaeaaacacbZGbZocaicajcalbmwbYwbYwbFobYwcdZceacebceccedcaAbyzbQjbyzbYwbxzbExbyBcjlbxzbxzbSucyUbEWcemcembFxbHTbFVcemcemcshbZNcbycfvbEUbUqbZNbZNbDbbmybKmbYPbJXbKhbLfbKSbBubAcbYPbDGbGJbRLbRLbWBaUJbYvbEGbWBbWBbRLbKKbxobRLbRLbDUbDSbDZbPKbEkbIvbYBbYhbEbbEJbYwbErbEubYwbTFcpqbZbbQLbZlbQLbYwcnPcocbFRbFYbFRajGaaebgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXbgXaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaebwWbwWbwWbwWbwWaaaaFvaaaaaeaaacacccFcaicdWceJcalcdJceKdJpbQKbYwcfacfbcfcccYbQDcaAbCBbDnbEPbYwbCmbyqbFlcflbGmbHUbAqbNYbSDcemcqLbCKcfqbDjbnzcemctGbZNceOcfvbHLbHDbGibIlbykbnsbPqbPubPBbPCbGPbGnbDFbFbbBJbGlbQAbQybCTaWObVfaVwbFEbOrbVfbOpbFibFfbVfbFebDUbEVbEScbSccuccdcbZcbYbEbbZgbYwbYwbVzbYwbVobVvbQLbQLbIXbVCclraaecokcokcokaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaeaaaaaeaaaaaeaaabIWaaaaaeaaaaaeaaeaaeaaebUYaaaaaeaaacuwcurcaicalcalcaicaictgdJpbQKbYwcgdcgecgfcggcghcaAcjEcgjcgkbRTbNfbLnbLmcgpcgqcgrbNjbNYbPQbOkcgucgvcgwbLpctecembQLbZNbMJbqVbpkbRVbRtbRsbRubmybRFbRvbRNbTpbUDbQbbQzbTGbQObQCbRdbAxbBxbJsbURbBCbIRbUTbZabUTbIybIpbIDbJybwUbIFcrtcqSckQcjXcmrclQcqicmubYwbIMcsYceScfkbZlbQLbQLcotbHfbYwcxocokcyWcyWcyWaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaabwYbwYbwYbwYbwYaaebJUaaebwYbwYbwYbwYbwYaaeaFvaaaaaeaaacaccvqcaicvjcaicaibmwbYwbYwbxZbLSchscgechtcggchubNOchwbDuchychzbNlbLPchCchDchEchFbNmbLNbDmbPmchKbDgchMbLschMchObTBbZNbOPbOKbTAbOObGibRsbRubmybRFdJWbCnbSWbWbbSvchZbQBbBJbSyclkbzybLrbBVciicikbVnbVkbVkbNkbJBbVbbBGbJTbJNbJLbJKbPabJxbJwbJvbJtbEbbZgbYwbJebJbcfDcakdJxbIXcuJbQLcfCclraaacokcyWcyWaaaaaeaaeaacaXyaXyaXyaXyaXyaXyaacaXyaXqaXybVMaaeaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecuHcuIcuIcuIcuIcuKcuLbMWbMMbMMbMMbMMbMVaaeaFvaaeaaeaaacacbNAcalcgIcalchrbZbchxbYwbQKbYwciBciCciDciEciFcaAciGcfgciHbYwbKdchUbKiciLbTgbHUbKrbNYbKTcemciOciPbHAciRcilcembMubZNbZNbZNbMObZNbZNbZNbMfboubMdbYPbYPbYPbYPbYPciZbLUbYPbWBbWBbSQbSTbSUbLbbJZbMtbLkbLkbLkbLkcjkcjkbIBcjkbEbbEbbEbbHcbGXbHedJubEbbZgbYwbIMbElbYwcbEcbKcxibQLbQLbHhbYwaaeaaeaaeaaeaaeaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaebwWbwWbwWbwWbwWaaabUWaaabwWbwWbwWbwWbwWaaaaFvaaaaaeaaecaccalchrcalbNZbZlcjBcjTbYwbQKbYwbSkcjAcjVcjCbSLcaAbMzbMHbLtbYwbPYcehcehcehcehcehbLwbAtbTMbNHbKVcjMbHFcjOcsCcembwQbPzbPzbOjbxYbxWbuXbokbHVbpibHYbHZbIabSMbHIbHGbHKbHJbHNbOabHQbHOckfckgbOgckibtGckkcklckmbphcjkdJvbJcbKXbEvbEtbEbbEbbEbbEbbEbbEbbZgbYwbYwbYwbYwbYwbYwbYwclrbYwbYwbYwaaaaaeaaaaaaaaaaaeaaeaaeaacaXqaXqaXqaacaXqaXqaXqaacaXqbSwaXqaXqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaaaaeaaeaaeaaaaaacvTaaeaaaaaaaaeaaeaaaaaaaFvaaaaaeaaadMEdMFdMFdMDbYwdMCdMBbYwbYwbQKbYwbYwbYwbYwbYwbYwbYwbYwcshbYwbYwbYAbYwdRwcxYdRvcyebNmcukcuDcemdKQdKRdCGcoCcoCcoCcoCcoCcoCcoCcxJdCLcxJcxJctPcrncrobYwcmzdQwdEcbYwcjccjcdAgcjcckUctYckYckZbOgclaclbclccldcledQxcjkclgdHadHccxzcvEbYvdEedEebYwcpXclpdLcbYwcABcjvbYwaaaaaeaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaeaaaaaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUYaaaaaaaaaaaaaaaaaaaaacvTaaaaaaaaaaaaaaeaaaaaabUYaaaaaeaaaaaaaaaaaaaaebYwbYwbYwbYwcgKbQKbZhcucdCMbQLcEJcuSbZhclwctGbYwbYlbQLbYwdRscwqdRtcwfdRrcxhcxfcemcemcemcemcoCctbdMAdMzcsZcsLcoCcsxcsEctodKOctqbTScdwbYwdDWdNjdODbYwctEdBlclXctFckUcAJcmbcmcdKPcmecmfcmgdDXcmidPxcjkdQvcmldGMcwSdRubYvbCQbFAdEadEbbZhdLadEadLbcotclraaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaacaFvaFvaFvaaaaaaaaacvTaaaaaaaaaaFvaFvaFvbUYaFvaaeaaeaaeaaeaaeaaeaaeajGbYwdNlbYwbIOdJtbXXbXXbXXbXXbXXbXXbXXbXXbXXcwtbQLczwbYwczYczRcAiczRdREczIcyYctjcQFcxvcxxcoCdMJbTZcwYbUJcwGcoCcxjbXccxAcxEctqbTSbYNbYwbYwbYwbYwbYwcxScxUcxIcxKckUbTXcmXcBEdMscnacnbcnccnccndcmicjkdQFcmldHjcnicJRbYvdJwdKHbYwbZgbQLcOzbYwbQLcpZbYwaaaaaeaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaFvaaecBBaaeaFvaaaaaaaaeaaaaaaaaeaaaaaaaaaaaaaaeaaecELcEKbPlckAcxtckAdJrbQLbQLbQLbQLcizdNkdInbQLbQLcpWdKGckXbYwdRCdEkdRDdEmdRBdEhdEictjczmczocEMcoCcuFcuGcuBcuEdMIcoCdMHdMGcxJcxJcvGbTScBgcmPdNgdNfcwzdNidNhcwFcvHdRAckUdRzcjeczqbLkdEfdRxdRydKSbTWdQEcjkcoecofdHicxXcnibYvbYwbYwbYwbEJbYwdLdbYwbYwbYwbYwaaeaaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaFvaaaaaeaaaaFvaaaaaaaaeaaeaaeaaeaaaaaaaaaaaeaaeaaaajGajGbYwdBhbYwbQLbZhbQLbQLdNzbYwbYwbYwbYwbYwbZhcpWcuScmzbYwdRHcNSdRGcOudRIdEocMKcNjcLNcMmcLzcMGdMPcNmcJOcJPcBQctocCMcDYcJQcxJcbvbWrcNBclRdNAcmScmScmSdBtcmTcmTcmTcOAcuRcjecpfbLkbLkbLkbLkbLkbLkbLkcjkcjkcjkdLgcjkcjkbYvcpXclpclpcpYbYwbQLdLecubdKZcubaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaakaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaaaaFvaFvaFvaFvaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaeajGbYwbYwbYwcdYbYwcmzcJZclfbYwdKIdKJdKIbYwcdYcpWbYwbYwbYwdEqdEqdEqdEqdRFdEtdEucyscyncyqcxVdDzdMOdMNbXrdMLdMKdDAcyIcyRcAKdDGcDSbTSdBMcjcdNndNmdNmdNmdNhcmTczKczLbIGcBOcKNdJidovbYWbYgcEOdHlbXAdJqcafdKydKCdKDdKMdoBcdYdJobQLbQLbYwbYwdLfbYwbYwbYwbYwaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaeaaeaaeaaeaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbYwbQLcpWbYwcqucpKcLscLrbWKctvdRLdAPdARctjdNadNbdMZcoCdMXdMWdMWdMWdMYcoCdNcdEKdEMcnRdENcnNcNBcpbdOfcmScmScmSdBtcmTcmTcmTcOAdAdcqGdNodNpdOddOecEPcEQdOmdOndNrbJDdOndNvdNwdoBdovcqQdBwdovdovdNudOjdOhdOidNtaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecYFdpecYFaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaeaaeaaaaaaaaaaaeaaaaaabYwbQLdECcshcLPcJYcpDcpCcpzcpydRKdEFdEGctjcKjdAmcJUcoCcaudNCdNBdMQdMTcoCdMVcKOcKOcxJdMUbTScLkcjcdNEdNfdRJdNGdNhdBAcLvcLYckUbTXcrEcrFdNHdNIdNMdLhdNJdNJdMfdMydMRdMSdLpdLRdoBdppdNQdNRdNSdLodNOdNOdNOdNPdOgaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecYQcYFdsCcYFcYQaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaabYwbZhdKabYwcuecqqdCIcOccsbcrDdRocrBdMkctjctjcryctjcoCcoCcoCcoCcoCcoCcoCdATcxJcxJcnpcrmcrncnqcjcckUckUckUcOAdBGckUckUckUckUcrpcjecqldrxdssdptdsgdshdspcBCcBFdsedsfcLmcOecKJdsrdtidtkdoPdsEdtJdufdoVdpcduiaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecsGcszcsFcsHcsKcszcsGaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaecwucwucwucyJcwucwucwuaaaaaeaaaaaaaaaaaeaaaaaabYwcizcpWbYwbSxdnEcqqdMicqIctvdmVdnddnDctvdmJcrdcqXckOclIclKclIdMjclIcwBclKcwAckOclPbYMbTSbRFdJWcjSdnJdRncvbdBEdJUdQydERcvJcqUbSTcqDdovcAecAecBlcAbcAccxlcxBcxNcyycyCczHdoBdpvdpwdpxdovdpydqGdrbdovdrxdovajGaaeaaaaaaaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaaecrScrTcrVcrWcrWcrWcstcrScrTaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaacwudCudCvdCudCrdCucwucwucyJcwucyJcwucwuaaeaaebYwdEecpWbYwbYwbYwbYwbYwbYwbYwdMqduXduRduUduYcAactfckOcDPdBIclIclKclIduAduNcDRckOdBFbYMbTSbRFbRvcsfcsicrzcrzdAycrxdAzdKgcvJbTXcjeckZdrYdoBdoBdoBdoBdoBdowdoBduzdvIcEHdujdoBdovcqQdBwdovdBpdBjdBkdBgcEIajGajGaaeaaeaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeczXcBoczXcrWcMocrWcCKcGdcYFaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaFvaaecwudzYdzXdAhdzZdzYdAidAAcEGdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsndBecoScyEcoScoScyOcyTdoCdMndoAcsBcnMcnNcyrcsecsecoocuicuidAwcwOcqEbBRcvJcpJcjebBbdoBdvPdzPdCpdCqdBddBadBddAEdAKdstdoBbYvcvpdACcjvdovdovdovdovdovcEuaBVajGaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaecrScrTcyVcrWcrWcrWczrcrScrTaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZbSGcwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBdKtcsecrYcpAcLQcLQdAwcqTcqEcrvcvJcAJcuabCgdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdJMdoBcuScdXcvobQLdAIbYwaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecsGcYQcYTcYMcYNcYLcsGaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaFvaaecwudzYdzXdAhdzZdzYdAidAAcEGdzSdzRdzUcwuaaaaaabYwbYwdrHdtrdtrdtrdtrdtsdttbPYdpjdpqdpudpzdpIdqAcsndBecoScyEcoScoScyOcyTdoCdMndoAcsBdRpcnNcyrcsecsecoocuicuidAwcwOcqEbBRcvJbTXcjebBbdoBdvPdzPdCpdCqdBddBadBddAEdAKdstdoBbYvcvpdACcjvdovdovdovdovdovcEuaBVajGaaeaaaaaaaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaecrScrTcyVcrWcrWcrWczrcrScrTaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaacwuczcdJLdJIdJBczcczcdJzdJsczgdJZbSGcwuaaaaaaaaacwucwucwucwucwuctvdKBctvctvdADdAFdKbctvdAvdAxcujckOcnGclKclIclKclIcsjcskcLocrGcLCdAGcfBdKtcsecrYcpAcLQcLQdAwcqTcqEcrvcvJdRqcuabCgdrxdvPdzPdwfdwfdwsdvBdvEdvHdvIdJMdoBcuScdXcvobQLdAIbYwaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecsGcYQcYTcYMcYNcYLcsGaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaecwudEUdDSdEAdEydDFdDBdDQdDMdEIcBebBSdAfdAedzVcAhdAfdwbdwFdxxcwudCJdCNctvdvVcrXdzOdDybYwbYwbYwbYwckOclIclKclIcKnclIctDctAcKkckOcJVdAnbTSbYNcsedOpcpAcsucsvctycqzctRcupdwtbBTdCobBUdoBdvPdzPdwfdKfdBddIIdBddAjdIHdAkdoBcvmbQLcvobQLdvubYwaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecszcYFcYGcYFcYJaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaacyJdMddMcdDHdMadMmdMldMhdMedCFdMrdMpdModDCdMudKWdMtdKXdDHdDDdMvdDKdDLdMwdDJdDOdMxcrXbYwdGIbIXdGFbYwbYwbYwbYwbYwbYwbYwcvWbYwbYwcnpdDrbTSbYNcsecsscpAcuicuicLQcxrcGhcLObCMbCPdGDcAxdExdExdExdExdExdExdBUdExdCzdAMdCCdoBbQLbQLcvobQLbYwbYwbYwaaeaaeaaaaaaaaeaaaaaaaakaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecYFdpecYFaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacwudKFdKEdKYdKVbCCdLidLldLkdLrdLnbCIcwudDpdDodDqcwudKqdIRcyMcwudBqdIZctvdCsdCxdCydKwbYwdFSdFTdFVbYwdAWbZxbZxcbebZxdKlcARclpcsldKpdKncwecLkcsedKNcrhcsycsycsycxmcvLcwRdwybCldDxcASdJhdBxdKsdLsdLJdLOdJbcBPbYidAUclpdILclpclpbCidLjbCjcwpbYwbYwbYwajGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecwucACcAGczccAFcACcADcAycAzcAlcAwbLqcwucExaaaaaacwucwucwucwucwuctvcwCctvctvctvctvctvbYwcmmcwNclhbYwcwocuxcuxcuxcuxcuxcuxcuxcuxcnpczJczZczDczFdMbbJWcsJcplcuicxucmHcnLcvJbVfdAVdKicAIdIxdIPdIQdIMdIOdGmcBPclwcxCbYwbYwbYwbYwbYwcwNbAoclTbPlcmnbPlcEyaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaaeaaeaaebYwcmzcdYdIncxgcBJcBIclpcBLcBHcEzdKubYwcogbJbbGwcBDcwMcuxcAZcBbcBacuxcAXcAYcANcuxcALcAMcAHczFbPScvcdBucsAcuicmQcsedAYcsebWacvVclqcAIcAtdNVcmxcAgczkcDgcBPbQLcxCbYwcmIcmwcpkbYwdDZbApdCDbYwbYwbYwajGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaacDjcDjcDjcDjcDjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacwucBmcBnczccBncBhcBiczcczccBcczcczccwuaaeaaeaaebYwcmzcdYdIncxgcBJcBIclpcBLcBHcEzdKubYwcogbJbbGwcBDcwMcuxcAZcBbcBacuxcAXcAYcANcuxcALcAMcAHczFbPScEFdBucsAcuicmQcsedAYcsebWacvVclqcAIcAtdNVcmxcAgczkcDgcBPbQLcxCbYwcmIcmwcpkbYwdDZbApdCDbYwbYwbYwajGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaacwucCacCbczccBRcCecBibRabRWcBNcJTcBMcwuaaaaaeaaabYwcxRcxQcxQcybcxWbNGbNGbNGbNGcxOcxCbYwbYwbYwbYwbYwcwocuxcCjcClcCycCzcCAcCBcwDcCfcCgcChcCicsecsecsecsecsecyxcsecsectGcsecvKcwPbWBcBPcBPcBPcBPcBPcBPcBPcBPbQLcrQdJncAjcAdcqHcygcygbAscyicygaaaaaaaaaaaaaaeaaeaaaaaaaaeaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJbAycyJaaaaaaaBVbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbdIKcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcDlcDIcAQcDGclpclpclpcBkcBjclpcslcytcyzcymcykcytcyoclpclpclpdILclpclpclpcudbYwbWNctVcswcygcyubAzcywcygaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaaeaaeaBVcGkcGjbGhcrfcGbcGacDTcMcdRmbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcLAcLtcuxbYwbYwbYwcdYcOzbWucxqbQLcBScoVcoWcKfcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcLubAHcoYcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaeaaebSPcECcEBcNKcOtcOGcPtcPFcPRcwuaaaaaaaBVdKvcMQbGhcMYcMDcMhbSbbGhbGhbpYcRucPrdJJcQLdJacRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhcLxcLAcuvcvlaaaaaebYwbYwcNnbYwclrbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwbEucygcrgdAscqFcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaeaaaaaacEEaaeaaecwucwucwucwucwucwucwuaaaaaaaBVcoKcRMbGhcOMcOZcEDcribGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcLAdnccuxaaaaaeaaabYwdKxbYwaaaaaeaaacxpcwicxpaaaaaaaaeaaabYwcuJbQLbQLdMgbGwcNRbGwcxkcwIcygcqfczscqgcygaaaaaeaaaaaeaaeaaaaaaaaebUYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaeaaeaaeaaaaaaaaaaaeaaeaaeaaaaaaaaaaaeaaaaaaaaaaBVcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxcLAcuvcvlaaaaaeaaebYwcNnbYwaaeaaeaaecxMclvcxMaaeaaeaaeaaabYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygczWdAtczWaaeaaaaaeaaaaaaaaeaaeaaeaaeaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaBVcoKcoJbGhcqKcoHcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTcuvcuxaaaaaeaaaaaaaaeaaaaaeaaaaaacyccydcycaaaaaaaaeaaebYwcqCcqwcqvbYwcqycqtcqvbYwaaaaaecAvczscAvaaeaaaaaeaaaaaaaaeaaeaaaaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaacwucCWcCXczccCXcCWcCYcCZcDacCCcCJbAycyJaaaaaaaBVbYwcAAbYwbYwbYwcAEbYwbYwbYwbYwcwmcAncAmcDbdIKcAmcAmcBfcDMcDLcvhcJScKdcGccGlcDwcDwcDkcKfcDIcAQcDGclpclpclpcBkcBjclpcslcytcyzcymcykcytcyoclpclpclpdILclpclpclpcudbYwbWNctVcswcygcyubAzcywcygaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecwucwucyJcwucyJcwucNfcMXcNbcNCcNDcNhcwuaaeaaeaBVcGkcGjbGhcrfcGbcGacDTcMcdRmbYwbYwbYwbYwcMpbYwbYwbYwbYwcuxcKUcvhcKqcvhcKvcKTcLwcvhcLxcMQcMIcuxcuxcuxcuxcuxcOzbWucxqcdYcBScLtcoWcLAcBScmzcdYcxqbYwbYwbYwbYwbYwbYwbYwbYwbYwbVzcygcLubAHcoYcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaeaaeaaebSPcECcEBcNKcOtcOGcPtcPFcPRcwuaaaaaaaBVdKvdEjbGhcMYcMDcMhbSbbGhbGhbpYcRucPrdJJcQLdJacRkcQXdKocvfcvgcvhcKqcvhcuvcvtcvgcvhdoldEdcRMdnccNWcOydEgcuxcNnbYwclrbYwcBScBTcoUcBScBSbYwbYwclrbYwcBGcKycKlbYwcKccKScKMbYwbEucygcrgdAscqFcygaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaaaaaeaaaaaacEEaaeaaecwucwucwucwucwucwucwuaaaaaaaBVcoKdElbGhcOMcOZcEDcribGhcRTcPScSjdlGcRUdlydltcSScSSdlZdmbdmjdmvdmHcvhcuvdmIcvgcvhcLxcMQcuvdEzdEEcvhdErcuxdKxbYwaaaaaeaaacxpcwicxpaaaaaaaaeaaabYwcuJbQLbQLdMgbGwcNRbGwcxkcwIcygcqfczscqgcygaaaaaeaaaaaeaaeaaaaaaaaebUYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaeaaeaaeaaaaaaaaaaaeaaeaaeaaaaaaaaaaaeaaaaaaaaaaBVcTMdKAdiLdcndkOdkGdkRbGhdlobGhdlxdlvdlCdnfdnedlGdlGdnudnvdnncuzdoadoscuvdnwcvgcvhcLxdELdKUdNFdEOdGYdNXcuxcNnbYwaaeaaeaaecxMclvcxMaaeaaeaaeaaabYwcpIbQLbQLdKzcpFcjBcpwbYwclrcygczWdAtczWaaeaaaaaeaaaaaaaaeaaeaaeaaeaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaBVcoKcoJbGhcqKcoHcoFcoDcoAcozbGhbKEbwzcvkbxTcvibwAduMdKocvfcvgcvhcuVcuWcuXcuZcuycuzcuCcuTczEcuxcBdcDlcuxcuxaaeaaaaaeaaaaaacyccydcycaaaaaaaaeaaebYwcqCcqwcqvbYwcqycqtcqvbYwaaaaaecAvczscAvaaeaaaaaeaaaaaaaaeaaeaaaaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaacaaaaaaaaeaacaahaacaaeaacaacaacaaeaBVbpYbGhbGhbGhbGhbGhcoQcoRbGhbGhbGhcvwbxUcvybxTcvubxVcvvbpYbpYcvgcvhcvhcvhcuvcvtcvgcvhcvncvrcuvcvlaaeaaeaaaaaaaaeaaaaaeaaacwXcwZciKcwZcwXaaaaaeaaabYwbYwbYwbYwbYwbYwbYwbYwbYwaaaaaeaaacAWaaaaaeaaeaaeaaeaaeaaeaaaaaaaaeaFvaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacEqcoTbKBbpYcvPcoXcvNcpicpgcpdbpYcvMcvIcvFcvCbxTcvibwAduMcwkbpYcwlcvhcwwcvScwxbAjcvQcvSdNscvhcwjcuxaaaaaeaaeaaeaaeaaeaaeaaecwZcjNclxcyFcwZaaeaaeaaaaaaaaeaaaaaaaaaaaaaaaaaeaaaaaaaaeaaacAWaaaaaeaaeaaaaaaaaaaaeaaaaaaaaabUYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaaaaaaahaaaaaacErcqYbKBcqrcqscqscqscqxcqPcqBcqbcqhcwJcqhcpUcqscwKcpUcwLciIdKocxecwWcwVcwWcwWcwWcwWcwWcwVcwWcxbcvlaaaaaeaaaaaaaaeaaaaaaaaacwZcyPcodcwacyScEsaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaacBXcBYcBYcBYcBZaaaaaaaaaaaaaaaaaaaFvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/metastation.dm b/_maps/metastation.dm index c7914a57547..ca76eeeb18f 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -1,8 +1,8 @@ #if !defined(MAP_FILE) - #include "map_files\MetaStation.v39H.II.dmm" + #include "map_files\MetaStation.v39I.dmm" - #define MAP_FILE "MetaStation.v39H.II.dmm" + #define MAP_FILE "MetaStation.v39I.dmm" #define MAP_NAME "MetaStation" #elif !defined(MAP_OVERRIDE) From 5035820e9c41d2d138df44257701e894a90b051f Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 23 Mar 2014 11:53:38 -0400 Subject: [PATCH 081/102] fixes me being stupid and not setting creator right Now for the conflicts... --- code/modules/mob/living/simple_animal/hostile/statue.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 5364845c027..fa547eb50b8 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -55,7 +55,7 @@ // No movement while seen code. -/mob/living/simple_animal/hostile/statue/New(var/mob/living/creator) +/mob/living/simple_animal/hostile/statue/New(loc, var/mob/living/creator) ..() // Give spells mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src) @@ -65,6 +65,10 @@ // Give nightvision see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + // Set creator + if(creator) + src.creator = creator + /mob/living/simple_animal/hostile/statue/Move(var/turf/NewLoc) if(can_be_seen(NewLoc)) if(client) From 1a9da0ba471577640433d996ca06131a8c93f731 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 23 Mar 2014 16:21:08 +0000 Subject: [PATCH 082/102] You will fall over in zero gravity, but you won't make a noise. This was important because it told players whether someone was stunned or dead, when it was changed it just added confusion. You can no longer slip in zero g. Added an admin subtype of the gravity generator which admins can spawn to create a pre-setup gravity generator. --- code/game/turfs/space/space.dm | 3 -- code/game/turfs/turf.dm | 46 ++++++++++++++------------ code/modules/power/gravitygenerator.dm | 8 +++++ 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index e50776413bf..c26bc1e88c9 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -235,8 +235,5 @@ A.loc.Entered(A) return -turf/space/handle_fall() - return - /turf/space/handle_slip() return \ No newline at end of file diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 531b4f55a7c..c27b4893cc2 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -293,28 +293,30 @@ faller.lying = pick(90, 270) if(!forced) return - playsound(src, "bodyfall", 50, 1) + if(has_gravity(src)) + playsound(src, "bodyfall", 50, 1) /turf/handle_slip(mob/slipper, s_amount, w_amount, obj/O, lube) - var/mob/living/carbon/M = slipper - if (M.m_intent=="walk" && (lube&NO_SLIP_WHEN_WALKING)) - return 0 - if(!M.lying) - M.stop_pulling() - if(lube&STEP) - step(M, M.dir) - if(lube&SLIDE) - for(var/i=1, i<5, i++) - spawn (i) - step(M, M.dir) - if(M.lying) //did I fall over? - M.adjustBruteLoss(2) - if(O) - M << "You slipped on the [O.name]!" - else - M << "You slipped!" - playsound(M.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(s_amount) - M.Weaken(w_amount) - return 1 + if(has_gravity(src)) + var/mob/living/carbon/M = slipper + if (M.m_intent=="walk" && (lube&NO_SLIP_WHEN_WALKING)) + return 0 + if(!M.lying) + M.stop_pulling() + if(lube&STEP) + step(M, M.dir) + if(lube&SLIDE) + for(var/i=1, i<5, i++) + spawn (i) + step(M, M.dir) + if(M.lying) //did I fall over? + M.adjustBruteLoss(2) + if(O) + M << "You slipped on the [O.name]!" + else + M << "You slipped!" + playsound(M.loc, 'sound/misc/slip.ogg', 50, 1, -3) + M.Stun(s_amount) + M.Weaken(w_amount) + return 1 return 0 // no success. Used in clown pda and wet floors diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 701198c2db5..085a34347a8 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -89,6 +89,14 @@ var/const/GRAV_NEEDS_WRENCH = 3 middle.overlays += "activated" update_list() +// +// Generator an admin can spawn +// + +/obj/machinery/gravity_generator/main/station/admin/New() + ..() + initialize() + // // Main Generator with the main code // From bd934359efee16701e16dd31ed5d0f8d14d5165b Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 23 Mar 2014 17:23:34 +0100 Subject: [PATCH 083/102] fixing typos. Slight buffing of nutriment amounts in some recipes Fixing typos, missing periods in food descriptions, two missing descriptions. Buffing amount of nutriment in some recipes so as to not have less than their ingredients. --- .../reagent_containers/food/snacks.dm | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index a79589dcbd2..c83f6c408b3 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -320,7 +320,7 @@ icon_state = "chocolateegg" New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("nutriment", 4) reagents.add_reagent("sugar", 2) reagents.add_reagent("coco", 2) bitesize = 2 @@ -515,7 +515,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat name = "carp fillet" - desc = "A fillet of spess carp meat" + desc = "A fillet of spess carp meat." icon_state = "fishfillet" New() ..() @@ -545,16 +545,16 @@ New() ..() reagents.add_reagent("nutriment", 3) - src.bitesize = 6 + src.bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/tomatomeat name = "tomato slice" - desc = "A slice from a huge tomato" + desc = "A slice from a huge tomato." icon_state = "tomatomeat" New() ..() reagents.add_reagent("nutriment", 3) - src.bitesize = 6 + src.bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/bearmeat name = "bear meat" @@ -573,7 +573,7 @@ New() ..() reagents.add_reagent("nutriment", 3) - src.bitesize = 6 + src.bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/spidermeat name = "spider meat" @@ -787,7 +787,7 @@ /obj/item/weapon/reagent_containers/food/snacks/waffles name = "waffles" - desc = "Mmm, waffles" + desc = "Mmm, waffles." icon_state = "waffles" trash = /obj/item/trash/waffles New() @@ -1016,7 +1016,7 @@ /obj/item/weapon/reagent_containers/food/snacks/fries name = "space fries" - desc = "AKA: French Fries, Freedom Fries, etc" + desc = "AKA: French Fries, Freedom Fries, etc." icon_state = "fries" trash = /obj/item/trash/plate New() @@ -1087,7 +1087,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff name = "spacy liberty duff" - desc = "Jello gelatin, from Alfred Hubbard's cookbook" + desc = "Jello gelatin, from Alfred Hubbard's cookbook." icon_state = "spacylibertyduff" trash = /obj/item/trash/snack_bowl New() @@ -1098,7 +1098,7 @@ /obj/item/weapon/reagent_containers/food/snacks/amanitajelly name = "amanita jelly" - desc = "Looks curiously toxic" + desc = "Looks curiously toxic." icon_state = "amanitajelly" trash = /obj/item/trash/snack_bowl New() @@ -1143,7 +1143,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bloodsoup name = "tomato soup" - desc = "Smells like copper" + desc = "Smells like copper." icon_state = "tomatosoup" New() ..() @@ -1167,7 +1167,7 @@ /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup name = "vegetable soup" - desc = "A true vegan meal" + desc = "A true vegan meal." icon_state = "vegetablesoup" trash = /obj/item/trash/snack_bowl New() @@ -1563,7 +1563,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "spesslaw" - desc = "A lawyers favourite" + desc = "A lawyers favourite." icon_state = "spesslaw" New() ..() @@ -1830,7 +1830,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread name = "Tofubread" - icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." + desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." icon_state = "tofubread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice slices_num = 5 @@ -1898,7 +1898,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice name = "cheese cake slice" - desc = "Slice of pure cheestisfaction" + desc = "Slice of pure cheestisfaction." icon_state = "cheesecake_slice" trash = /obj/item/trash/plate bitesize = 2 @@ -1973,7 +1973,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake name = "chocolate cake" - desc = "A cake with added chocolate" + desc = "A cake with added chocolate." icon_state = "chocolatecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice slices_num = 5 @@ -2026,7 +2026,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread name = "bread" - icon_state = "Some plain old Earthen bread." + desc = "Some plain old Earthen bread." icon_state = "bread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice slices_num = 5 @@ -2071,7 +2071,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake name = "apple cake" - desc = "A cake centred with Apple" + desc = "A cake centred with Apple." icon_state = "applecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice slices_num = 5 @@ -2112,7 +2112,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita name = "margherita" - desc = "The most cheezy pizza in galaxy" + desc = "The most cheezy pizza in galaxy." icon_state = "pizzamargherita" slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice slices_num = 6 @@ -2124,13 +2124,13 @@ /obj/item/weapon/reagent_containers/food/snacks/margheritaslice name = "margherita slice" - desc = "A slice of the most cheezy pizza in galaxy" + desc = "A slice of the most cheezy pizza in galaxy." icon_state = "pizzamargheritaslice" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza name = "meatpizza" - desc = "" //TODO: + desc = "Greasy pizza with delicious meat." icon_state = "meatpizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice slices_num = 6 @@ -2142,13 +2142,13 @@ /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice name = "meatpizza slice" - desc = "A slice of " //TODO: + desc = "A nutritious slice of meatpizza." icon_state = "meatpizzaslice" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza name = "mushroom pizza" - desc = "Very special pizza" + desc = "Very special pizza." icon_state = "mushroompizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice slices_num = 6 @@ -2165,7 +2165,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza name = "vegetable pizza" - desc = "No one of Tomatos Sapiens were harmed during making this pizza" + desc = "No one of Tomatos Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice slices_num = 6 @@ -2178,7 +2178,7 @@ /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice name = "vegetable pizza slice" - desc = "A slice of the most green pizza of all pizzas not containing green ingredients " + desc = "A slice of the most green pizza of all pizzas not containing green ingredients." icon_state = "vegetablepizzaslice" bitesize = 2 @@ -2374,7 +2374,7 @@ icon_state = "benedict" New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("nutriment", 6) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/hotdog @@ -2383,7 +2383,7 @@ icon_state = "hotdog" New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("nutriment", 6) reagents.add_reagent("ketchup", 3) bitesize = 3 From 3d509f84e3ba6bcd857b961aafddb9d08fae869b Mon Sep 17 00:00:00 2001 From: Giacomand Date: Sun, 23 Mar 2014 23:07:52 +0000 Subject: [PATCH 084/102] Added examples. Removed a now unnecessary workaround. --- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 19 ++++++++++++++++--- .../admin/verbs/SDQL2/SDQL_2_parser.dm | 1 - 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 1c5876db7b6..11439465c5d 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -1,5 +1,20 @@ // Code taken from /bay/station. +// Examples +/* + -- Will call the proc for all computers in the world, thats dir is 2. + CALL ex_act(1) ON /obj/machinery/computer IN world WHERE dir == 2 + -- Will open a window with a list of all the closets in the world, with a link to VV them. + SELECT /obj/structure/closet/secure_closet/security/cargo IN world WHERE icon_off == "secoff" + -- Will change all the tube lights to green + UPDATE /obj/machinery/light IN world SET color = "#0F0" WHERE icon_state == "tube1" + -- Will delete all pickaxes. "IN world" is not required. + DELETE /obj/item/weapon/pickaxe + + --You can use operators other than ==, such as >, <=, != and etc.. + +*/ + /client/proc/SDQL2_query(query_text as message) set category = "Debug" if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. @@ -72,9 +87,7 @@ // To stop any procs which sleep from executing slowly. if(d) if(hascall(d, v)) - // Replace _ with a space because BYOND doesn't like it in call, hascall loves it though! (Really I can't believe this myself) - var/sanitized_v = replacetext(v, "_", " ") - spawn() call(d, sanitized_v)(arglist(args_list)) // Spawn in case the function sleeps. + spawn() call(d, v)(arglist(args_list)) // Spawn in case the function sleeps. if("delete") for(var/datum/d in objs) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index 8aac5b930e9..c3f96072ba3 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -1,7 +1,6 @@ //I'm pretty sure that this is a recursive [s]descent[/s] ascent parser. - //Spec ////////// From e7082bd1ef4b901e715f95a960fa3f51fb6e69e0 Mon Sep 17 00:00:00 2001 From: IsdatAfamas Date: Sun, 23 Mar 2014 21:22:25 -0400 Subject: [PATCH 085/102] Fixes #3160, by updating robots.dmi icon states. --- icons/mob/robots.dmi | Bin 91211 -> 91209 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 8e578cf28ef4e3472dfb0b007bc0ff6c88d4f6f6..823c3c3db0f0d38289c43eee442d0efd231a6f9e 100644 GIT binary patch delta 595 zcmV-Z0<8VZ$OXyB1&}0vQhHQabVOxyV{&P5bZKvH004NLwbsp!(?ARd@N@DMqupaS zKtEVcxvW}2k-8TiU^U4&smsK!oM}tmoZ#H%_QdngB=_!V@p1X==Bs7C z2kDW?m2URtU7j5OEfBNJTxYFH)@m-z;l-`wpZkA___zrqky738_ z=wzyrN^ex@jVeo{5gS@r(A0p0D^4RG)xYHUsw}MX04fZYdkvO*4d#1&;TTj2op1lX z`o}yA5dGjvH-7l}%d^P5b)}o+nZN-loYfnkH#KhYG-wyb)?yX-Ko+;#TGYgXrWQ1_ zp!XK^XhBspP3wa%1x2{9<-ap8oyr!}A^`|etM2#;3B;6*6%xp3W3peM-U+5bKO}@J zPAY36v*@#vQUN1>Pvq$IksO^qlcUpza&-Ds1Uiq@pQYeZQII{>@X|o%BdDSI!A&?Z zMo1U4I6XagCl6<5YoT0y!aohc7Wowf3nQeBuUPaaz4PC&!x)iCwVypbane61cwg`q zsOCM0JAE}<{ODGHFl>2knngcQKzOMlb6E3^46oz?`oda&zJq|5p^~NR7oTcsjc|az zFzbz{D{%J52gq5U>zAK@4(X#r0x{KleLop@GI8dz+8tffz@HJ4X zx%)4*`+))$9R$>u;kU^nnaZxYw=dU<>yC}{viGh#erxm+ZhEFiNx&P^3DlyEzn)+J hwD`SSJkQ+?e6`HK15MOm&gFK7b%TKdw}Aoy%3+xGEQkOA delta 597 zcmV-b0;>JV$OX&D1&}0vRC-icbVOxyV{&P5bZKvH004NLwU*0{(?AeK*Y;PmW|kQP zc`&TJ86|=sWj1`ksO>I071~u%xs%|(XORIyAgPK3^2*Zby4|;KKknVr;^Xq!%~#8O z57Hx(E8XnPyF5E!NNZQR=_JqAfbBXRfBNJTxYFH)@m-z;l-`wpZkA___zrqky737z z(UGZ&RJu^53sn}O5gVi|(9{44SDZ#Xs(+E=t7Ks%51@jC#tI2!v@x+?pxz0lK|dsf zD^4obL}t;wlTiU9e>-yIbW4t$?#YqUO*wM9D*~NI>d#VesVK-EYj|m(^AXh0{J>3c zVvLY3W^sCY?oJ-g&elR1eS&`)f-UkZ2o{WxHojufcY5c)VTUmylgfVf^u$SjQ1HIs zEl|yS5O;btTlmqf{K3%j+T=w)P(XO8B6C>tjtp1w0DWODf4`F!F4?R^se^zf5unxx z4$v27dgJK|IQ!%Mai(*9`1xx{4=oaisov}LWNc*e6ucPQZlA=l_|4&}IC&cE3ODdI zP^!86FSYxD0u~(v)TiOM$s?J{uDQ2Q*9zAi8~w6t*B!q#@)B;^)1xHdjp+nx(T2Ys jU;niDy<0rb4&8jU%)bK&UtoynZv_p5e*(9E0s+cls Date: Sun, 23 Mar 2014 22:44:52 -0700 Subject: [PATCH 086/102] Fix some blob-related qdel() issues. In particular, the one where dead blob spores make a shitload of smoke and become invisible and generally be buggy on death. Also blobs should GC correctly now. --- code/game/gamemodes/blob/blobs/core.dm | 3 +-- code/game/gamemodes/blob/blobs/factory.dm | 12 ++++++++---- code/game/gamemodes/blob/blobs/node.dm | 3 +-- code/game/gamemodes/blob/blobs/resource.dm | 5 +---- code/game/gamemodes/blob/blobs/shield.dm | 3 +-- code/game/gamemodes/blob/theblob.dm | 10 ++++------ 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index e3d871748c7..fd3ce5d5a5b 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -30,8 +30,7 @@ /obj/effect/blob/core/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() + qdel(src) return // update_icon is called when health changes so... call update_health in the overmind if(overmind) diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 24a18f59da0..8388b7e7953 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -10,10 +10,13 @@ /obj/effect/blob/factory/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() - return - return + qdel(src) + +/obj/effect/blob/factory/Destroy() + for(var/mob/living/simple_animal/hostile/blobspore/spore in spores) + if(spore.factory == src) + spore.factory = null + ..() /obj/effect/blob/factory/PulseAnimation(var/activate = 0) if(activate) @@ -128,3 +131,4 @@ if(contents) for(var/mob/M in contents) M.loc = src.loc + ..() diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index 5e54b8a6a79..1b615aed0a8 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -26,7 +26,6 @@ /obj/effect/blob/node/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() + qdel(src) return return \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index 0a303bc51a1..2480d48552f 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -9,10 +9,7 @@ /obj/effect/blob/resource/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() - return - return + qdel(src) /obj/effect/blob/resource/PulseAnimation(var/activate = 0) if(activate) diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index 4eef5f85d2e..e954cba6a4d 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -9,8 +9,7 @@ /obj/effect/blob/shield/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() + qdel(src) return return diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index e114c39f09d..c288eca5c88 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -25,6 +25,8 @@ /obj/effect/blob/Destroy() blobs -= src + if(isturf(loc)) //Necessary because Expand() is retarded and spawns a blob and then deletes it + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) ..() @@ -117,7 +119,8 @@ B.loc = T else T.blob_act()//If we cant move in hit the turf - B.Destroy() + B.loc = null //So we don't play the splat sound, see Destroy() + qdel(B) for(var/atom/A in T)//Hit everything in the turf A.blob_act() @@ -184,13 +187,8 @@ luminosity = 0 health = 21 -/obj/effect/blob/normal/Destroy() - src.loc = null - blobs -= src - /obj/effect/blob/normal/update_icon() if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) qdel(src) else if(health <= 15) icon_state = "blob_damaged" From 8af8a43d6f27e342e79d4aacb22b7668cbdc8559 Mon Sep 17 00:00:00 2001 From: Mloc-Hibernia Date: Sun, 23 Mar 2014 19:46:46 +0000 Subject: [PATCH 087/102] Initial pass to convert LF to CRLF Signed-off-by: Mloc-Hibernia --- code/LINDA/LINDA_fire.dm | 362 +- code/LINDA/LINDA_system.dm | 524 +-- code/LINDA/LINDA_turf_tile.dm | 926 ++-- code/WorkInProgress/carn/debug_pipenets.dm | 116 +- code/__DEFINES/_readme.dm | 26 +- code/__DEFINES/admin.dm | 74 +- code/__DEFINES/atmospherics.dm | 218 +- code/__DEFINES/clothing.dm | 164 +- code/__DEFINES/combat.dm | 94 +- code/__DEFINES/flags.dm | 96 +- code/__DEFINES/genetics.dm | 164 +- code/__DEFINES/machines.dm | 26 +- code/__DEFINES/math.dm | 22 +- code/__DEFINES/misc.dm | 58 +- code/__DEFINES/preferences.dm | 54 +- code/__DEFINES/sight.dm | 64 +- code/__DEFINES/stat.dm | 30 +- code/__HELPERS/game.dm | 778 ++-- code/__HELPERS/matrices.dm | 6 +- code/__HELPERS/unsorted.dm | 2 +- code/_globalvars/configuration.dm | 88 +- code/_globalvars/database.dm | 22 +- code/_globalvars/game_modes.dm | 12 +- code/_globalvars/genetics.dm | 50 +- code/_globalvars/lists/flavor_misc.dm | 64 +- code/_globalvars/lists/mapping.dm | 86 +- code/_globalvars/lists/mobs.dm | 24 +- code/_globalvars/lists/names.dm | 30 +- code/_globalvars/lists/objects.dm | 26 +- code/_globalvars/logging.dm | 26 +- code/_globalvars/misc.dm | 28 +- code/_globalvars/station.dm | 26 +- code/_globalvars/unused.dm | 72 +- code/_onclick/adjacent.dm | 246 +- code/_onclick/ai.dm | 282 +- code/_onclick/click.dm | 630 +-- code/_onclick/cyborg.dm | 236 +- code/_onclick/drag_drop.dm | 34 +- code/_onclick/hud/_defines.dm | 210 +- code/_onclick/hud/alien.dm | 344 +- code/_onclick/hud/alien_larva.dm | 152 +- code/_onclick/hud/hud.dm | 610 +-- code/_onclick/hud/human.dm | 766 ++-- code/_onclick/hud/other_mobs.dm | 70 +- code/_onclick/hud/robot.dm | 388 +- code/_onclick/hud/screen_objects.dm | 648 +-- code/_onclick/item_attack.dm | 152 +- code/_onclick/observer.dm | 196 +- code/_onclick/oldcode.dm | 752 ++-- code/_onclick/other_mobs.dm | 268 +- code/_onclick/overmind.dm | 32 +- code/_onclick/telekinesis.dm | 416 +- code/controllers/garbage.dm | 260 +- code/controllers/verbs.dm | 168 +- .../diseases/advance/symptoms/genetics.dm | 160 +- .../diseases/advance/symptoms/vitiligo.dm | 80 +- code/datums/diseases/rhumba_beat.dm | 100 +- .../datums/diseases/robotic_transformation.dm | 128 +- code/datums/diseases/transformation.dm | 344 +- code/datums/diseases/xeno_transformation.dm | 120 +- code/datums/spells/charge.dm | 176 +- code/datums/spells/mime.dm | 104 +- code/datums/supplypacks.dm | 2 +- code/datums/uplink_item.dm | 986 ++--- code/datums/wires/alarm.dm | 188 +- code/datums/wires/autolathe.dm | 114 +- code/datums/wires/syndicatebomb.dm | 152 +- code/datums/wires/taperecorder.dm | 78 +- code/game/gamemodes/antag_spawner.dm | 286 +- code/game/gamemodes/blob/blob_finish.dm | 2 +- code/game/gamemodes/blob/blobs/resource.dm | 68 +- code/game/gamemodes/blob/overmind.dm | 200 +- code/game/gamemodes/blob/powers.dm | 470 +- .../gamemodes/changeling/changeling_power.dm | 160 +- .../gamemodes/changeling/evolution_menu.dm | 782 ++-- .../gamemodes/changeling/powers/absorb.dm | 190 +- .../changeling/powers/digitalcamo.dm | 34 +- .../changeling/powers/epinephrine.dm | 52 +- .../gamemodes/changeling/powers/fakedeath.dm | 68 +- .../gamemodes/changeling/powers/fleshmend.dm | 38 +- .../gamemodes/changeling/powers/glands.dm | 24 +- .../gamemodes/changeling/powers/hivemind.dm | 140 +- .../gamemodes/changeling/powers/humanform.dm | 66 +- .../gamemodes/changeling/powers/lesserform.dm | 36 +- .../changeling/powers/mimic_voice.dm | 54 +- .../gamemodes/changeling/powers/mutations.dm | 340 +- .../gamemodes/changeling/powers/panacea.dm | 40 +- .../gamemodes/changeling/powers/revive.dm | 58 +- .../gamemodes/changeling/powers/shriek.dm | 90 +- .../gamemodes/changeling/powers/spiders.dm | 32 +- .../gamemodes/changeling/powers/tiny_prick.dm | 324 +- .../gamemodes/changeling/powers/transform.dm | 70 +- code/game/gamemodes/objective_items.dm | 378 +- code/game/gamemodes/traitor/double_agents.dm | 180 +- code/game/jobs/job/civilian.dm | 2 +- code/game/machinery/PDApainter.dm | 184 +- code/game/machinery/ai_slipper.dm | 246 +- code/game/machinery/computer/aifixer.dm | 274 +- code/game/machinery/computer/computer.dm | 2 +- .../machinery/computer/telecrystalconsoles.dm | 440 +- code/game/machinery/kitchen/icecream_vat.dm | 492 +-- code/game/machinery/newscaster.dm | 2054 ++++----- code/game/machinery/recycler.dm | 312 +- code/game/machinery/syndicatebomb.dm | 622 +-- code/game/mecha/combat/reticence.dm | 50 +- code/game/mecha/mech_bay.dm | 2 +- code/game/objects/effects/anomalies.dm | 356 +- code/game/objects/effects/decals/decal.dm | 10 +- .../objects/effects/spawners/vaultspawner.dm | 2 +- code/game/objects/items/devices/flash.dm | 2 +- .../objects/items/devices/laserpointer.dm | 414 +- .../items/stacks/sheets/sheet_types.dm | 288 +- .../objects/items/weapons/airlock_painter.dm | 156 +- .../items/weapons/grenades/ghettobomb.dm | 186 +- .../items/weapons/grenades/syndieminibomb.dm | 22 +- .../objects/items/weapons/storage/storage.dm | 868 ++-- .../objects/items/weapons/storage/wallets.dm | 176 +- .../objects/items/weapons/tanks/watertank.dm | 352 +- .../objects/items/weapons/vending_items.dm | 120 +- .../objects/structures/crates_lockers/bins.dm | 188 +- .../crates_lockers/closets/statue.dm | 304 +- code/game/objects/structures/dresser.dm | 42 +- code/game/objects/structures/transit_tubes.dm | 1316 +++--- code/game/sound.dm | 154 +- code/game/turfs/simulated/dirtystation.dm | 286 +- code/modules/admin/banappearance.dm | 216 +- code/modules/assembly/voice.dm | 72 +- .../mission_code/blackmarketpackers.dm | 42 +- .../awaymissions/mission_code/centcomAway.dm | 124 +- .../awaymissions/mission_code/spacebattle.dm | 64 +- code/modules/client/client defines.dm | 2 +- code/modules/clothing/gloves/ninja.dm | 234 +- code/modules/clothing/masks/miscellaneous.dm | 2 +- code/modules/clothing/shoes/colour.dm | 2 +- code/modules/events/anomaly.dm | 78 +- code/modules/events/anomaly_grav.dm | 36 +- code/modules/events/anomaly_pyro.dm | 50 +- code/modules/events/anomaly_vortex.dm | 36 +- code/modules/events/false_alarm.dm | 30 +- code/modules/events/holiday/friday13th.dm | 34 +- code/modules/events/holiday/halloween.dm | 32 +- code/modules/events/shuttle_loan.dm | 412 +- code/modules/events/vent_clog.dm | 78 +- code/modules/hydroponics/seed_extractor.dm | 2 +- code/modules/mining/equipment_locker.dm | 1354 +++--- .../modules/mining/laborcamp/laborminerals.dm | 12 +- code/modules/mining/laborcamp/laborshuttle.dm | 42 +- code/modules/mining/laborcamp/laborstacker.dm | 276 +- code/modules/mob/camera/camera.dm | 28 +- .../mob/living/carbon/alien/alien_defense.dm | 2 +- .../mob/living/carbon/alien/larva/larva.dm | 2 +- code/modules/mob/living/carbon/brain/brain.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 22 +- code/modules/mob/living/carbon/emote.dm | 400 +- .../mob/living/carbon/human/human_damage.dm | 384 +- .../mob/living/carbon/human/human_helpers.dm | 236 +- code/modules/mob/living/carbon/inventory.dm | 28 +- .../mob/living/carbon/metroid/powers.dm | 2 +- .../modules/mob/living/carbon/update_icons.dm | 48 +- code/modules/mob/living/death.dm | 124 +- code/modules/mob/living/emote.dm | 564 +-- .../mob/living/silicon/ai/vox_sounds.dm | 1436 +++--- code/modules/mob/living/silicon/laws.dm | 84 +- .../mob/living/simple_animal/friendly/pug.dm | 84 +- .../living/simple_animal/friendly/slime.dm | 2 +- .../simple_animal/hostile/mining_mobs.dm | 844 ++-- .../living/simple_animal/hostile/mushroom.dm | 320 +- .../simple_animal/hostile/retaliate/bat.dm | 74 +- .../living/simple_animal/hostile/statue.dm | 406 +- .../mob/living/simple_animal/hostile/tree.dm | 2 +- code/modules/mob/mob.dm | 1606 +++---- code/modules/mob/transform_procs.dm | 1026 ++--- code/modules/nano/JSON Reader.dm | 408 +- code/modules/nano/JSON Writer.dm | 118 +- code/modules/nano/_JSON.dm | 24 +- code/modules/nano/nanoexternal.dm | 86 +- code/modules/nano/nanomanager.dm | 400 +- code/modules/nano/nanoui.dm | 828 ++-- code/modules/paperwork/photography.dm | 708 +-- code/modules/power/apc.dm | 2570 +++++------ code/modules/power/cable.dm | 1270 +++--- code/modules/power/lighting.dm | 1484 +++---- code/modules/power/port_gen.dm | 674 +-- .../particle_accelerator.dm | 832 ++-- code/modules/projectiles/ammunition/energy.dm | 234 +- .../projectiles/ammunition/magazines.dm | 320 +- .../modules/projectiles/ammunition/special.dm | 58 +- code/modules/projectiles/firing.dm | 120 +- code/modules/projectiles/gun.dm | 198 +- code/modules/projectiles/guns/magic.dm | 106 +- code/modules/projectiles/guns/magic/staff.dm | 46 +- code/modules/projectiles/guns/magic/wand.dm | 246 +- code/modules/projectiles/projectile/magic.dm | 494 +-- .../reagent_containers/food/condiment.dm | 438 +- .../reagents/reagent_containers/syringes.dm | 548 +-- code/modules/recycling/disposal.dm | 2682 ++++++------ code/modules/research/designs.dm | 2 +- code/modules/research/research.dm | 536 +-- code/modules/research/server.dm | 688 +-- code/modules/shuttle/shuttle.dm | 250 +- code/modules/surgery/generic_steps.dm | 136 +- code/modules/surgery/limb augmentation.dm | 152 +- .../surgery/multiple_location_example.dm | 106 +- code/modules/surgery/organs/augments.dm | 102 +- code/modules/telesci/bscrystal.dm | 74 +- code/modules/telesci/gps.dm | 162 +- code/modules/telesci/telepad.dm | 312 +- code/modules/telesci/telesci_computer.dm | 760 ++-- code/unused/Agouri_stuff.dm | 3896 ++++++++--------- code/unused/cable_heavyduty.dm | 54 +- code/unused/computer2/buildandrepair.dm | 298 +- code/unused/conveyor.dm | 768 ++-- code/unused/hivebot/hive_modules.dm | 114 +- code/unused/hologram.dm | 224 +- code/unused/limbs.dm | 280 +- code/unused/pipe_filter.dm | 484 +- 216 files changed, 31650 insertions(+), 31650 deletions(-) diff --git a/code/LINDA/LINDA_fire.dm b/code/LINDA/LINDA_fire.dm index 45e059dd505..5089252dc59 100644 --- a/code/LINDA/LINDA_fire.dm +++ b/code/LINDA/LINDA_fire.dm @@ -1,181 +1,181 @@ - -/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return null - - - -/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) - return - - -/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) - var/datum/gas_mixture/air_contents = return_air() - if(!air_contents) - return 0 - if(active_hotspot) - if(soh) - if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5) - if(active_hotspot.temperature < exposed_temperature) - active_hotspot.temperature = exposed_temperature - if(active_hotspot.volume < exposed_volume) - active_hotspot.volume = exposed_volume - return 1 - - var/igniting = 0 - - if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5) - igniting = 1 - - if(igniting) - if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5) - return 0 - - active_hotspot = new(src) - active_hotspot.temperature = exposed_temperature - active_hotspot.volume = exposed_volume - - active_hotspot.just_spawned = (current_cycle < air_master.current_cycle) - //remove just_spawned protection if no longer processing this cell - air_master.add_to_active(src, 0) - return igniting - -//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile -/obj/effect/hotspot - anchored = 1 - mouse_opacity = 0 - unacidable = 1//So you can't melt fire with acid. - icon = 'icons/effects/fire.dmi' - icon_state = "1" - layer = TURF_LAYER - luminosity = 3 - - var/volume = 125 - var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - var/just_spawned = 1 - var/bypassing = 0 - -/obj/effect/hotspot/New() - ..() - air_master.hotspots += src - perform_exposure() - -/obj/effect/hotspot/proc/perform_exposure() - var/turf/simulated/floor/location = loc - if(!istype(location)) return 0 - - if(volume > CELL_VOLUME*0.95) bypassing = 1 - else bypassing = 0 - - if(bypassing) - if(!just_spawned) - volume = location.air.fuel_burnt*FIRE_GROWTH_RATE - temperature = location.air.temperature - else - var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume) - affected.temperature = temperature - affected.react() - temperature = affected.temperature - volume = affected.fuel_burnt*FIRE_GROWTH_RATE - location.assume_air(affected) - - for(var/atom/item in loc) - if(item && item != src) // It's possible that the item is deleted in temperature_expose - item.fire_act(null, temperature, volume) - return 0 - - -/obj/effect/hotspot/process() - if(just_spawned) - just_spawned = 0 - return 0 - - var/turf/simulated/floor/location = loc - if(!istype(location)) - Kill() - return - - if(location.excited_group) - location.excited_group.reset_cooldowns() - - if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) - Kill() - return - - if(location.air.toxins < 0.5 || location.air.oxygen < 0.5) - Kill() - return - - perform_exposure() - - if(location.wet) location.wet = 0 - - if(bypassing) - icon_state = "3" - location.burn_tile() - - //Possible spread due to radiated heat - if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD) - var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE - for(var/direction in cardinal) - if(!(location.atmos_adjacent_turfs & direction)) - continue - var/turf/simulated/T = get_step(src, direction) - if(istype(T) && T.active_hotspot) - T.hotspot_expose(radiated_temperature, CELL_VOLUME/4) - - else - if(volume > CELL_VOLUME*0.4) - icon_state = "2" - else - icon_state = "1" - - if(temperature > location.max_fire_temperature_sustained) - location.max_fire_temperature_sustained = temperature - - if(location.heat_capacity && temperature > location.heat_capacity) - location.to_be_destroyed = 1 - /*if(prob(25)) - location.ReplaceWithSpace() - return 0*/ - return 1 - -// Garbage collect itself by nulling reference to it - -/obj/effect/hotspot/proc/Kill() - air_master.hotspots -= src - DestroyTurf() - garbage_collect() - -/obj/effect/hotspot/proc/garbage_collect() - if(istype(loc, /turf/simulated)) - var/turf/simulated/T = loc - if(T.active_hotspot == src) - T.active_hotspot = null - loc = null - -/obj/effect/hotspot/proc/DestroyTurf() - - if(istype(loc, /turf/simulated)) - var/turf/simulated/T = loc - if(T.to_be_destroyed) - var/chance_of_deletion - if (T.heat_capacity) //beware of division by zero - chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0 - else - chance_of_deletion = 100 - if(prob(chance_of_deletion)) - T.ChangeTurf(/turf/space) - else - T.to_be_destroyed = 0 - T.max_fire_temperature_sustained = 0 - -/obj/effect/hotspot/New() - ..() - dir = pick(cardinal) - air_update_turf() - return - -/obj/effect/hotspot/Crossed(mob/living/L) - ..() - if(isliving(L)) - L.fire_act() + +/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return null + + + +/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) + return + + +/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) + var/datum/gas_mixture/air_contents = return_air() + if(!air_contents) + return 0 + if(active_hotspot) + if(soh) + if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5) + if(active_hotspot.temperature < exposed_temperature) + active_hotspot.temperature = exposed_temperature + if(active_hotspot.volume < exposed_volume) + active_hotspot.volume = exposed_volume + return 1 + + var/igniting = 0 + + if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5) + igniting = 1 + + if(igniting) + if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5) + return 0 + + active_hotspot = new(src) + active_hotspot.temperature = exposed_temperature + active_hotspot.volume = exposed_volume + + active_hotspot.just_spawned = (current_cycle < air_master.current_cycle) + //remove just_spawned protection if no longer processing this cell + air_master.add_to_active(src, 0) + return igniting + +//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile +/obj/effect/hotspot + anchored = 1 + mouse_opacity = 0 + unacidable = 1//So you can't melt fire with acid. + icon = 'icons/effects/fire.dmi' + icon_state = "1" + layer = TURF_LAYER + luminosity = 3 + + var/volume = 125 + var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + var/just_spawned = 1 + var/bypassing = 0 + +/obj/effect/hotspot/New() + ..() + air_master.hotspots += src + perform_exposure() + +/obj/effect/hotspot/proc/perform_exposure() + var/turf/simulated/floor/location = loc + if(!istype(location)) return 0 + + if(volume > CELL_VOLUME*0.95) bypassing = 1 + else bypassing = 0 + + if(bypassing) + if(!just_spawned) + volume = location.air.fuel_burnt*FIRE_GROWTH_RATE + temperature = location.air.temperature + else + var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume) + affected.temperature = temperature + affected.react() + temperature = affected.temperature + volume = affected.fuel_burnt*FIRE_GROWTH_RATE + location.assume_air(affected) + + for(var/atom/item in loc) + if(item && item != src) // It's possible that the item is deleted in temperature_expose + item.fire_act(null, temperature, volume) + return 0 + + +/obj/effect/hotspot/process() + if(just_spawned) + just_spawned = 0 + return 0 + + var/turf/simulated/floor/location = loc + if(!istype(location)) + Kill() + return + + if(location.excited_group) + location.excited_group.reset_cooldowns() + + if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) + Kill() + return + + if(location.air.toxins < 0.5 || location.air.oxygen < 0.5) + Kill() + return + + perform_exposure() + + if(location.wet) location.wet = 0 + + if(bypassing) + icon_state = "3" + location.burn_tile() + + //Possible spread due to radiated heat + if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD) + var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE + for(var/direction in cardinal) + if(!(location.atmos_adjacent_turfs & direction)) + continue + var/turf/simulated/T = get_step(src, direction) + if(istype(T) && T.active_hotspot) + T.hotspot_expose(radiated_temperature, CELL_VOLUME/4) + + else + if(volume > CELL_VOLUME*0.4) + icon_state = "2" + else + icon_state = "1" + + if(temperature > location.max_fire_temperature_sustained) + location.max_fire_temperature_sustained = temperature + + if(location.heat_capacity && temperature > location.heat_capacity) + location.to_be_destroyed = 1 + /*if(prob(25)) + location.ReplaceWithSpace() + return 0*/ + return 1 + +// Garbage collect itself by nulling reference to it + +/obj/effect/hotspot/proc/Kill() + air_master.hotspots -= src + DestroyTurf() + garbage_collect() + +/obj/effect/hotspot/proc/garbage_collect() + if(istype(loc, /turf/simulated)) + var/turf/simulated/T = loc + if(T.active_hotspot == src) + T.active_hotspot = null + loc = null + +/obj/effect/hotspot/proc/DestroyTurf() + + if(istype(loc, /turf/simulated)) + var/turf/simulated/T = loc + if(T.to_be_destroyed) + var/chance_of_deletion + if (T.heat_capacity) //beware of division by zero + chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0 + else + chance_of_deletion = 100 + if(prob(chance_of_deletion)) + T.ChangeTurf(/turf/space) + else + T.to_be_destroyed = 0 + T.max_fire_temperature_sustained = 0 + +/obj/effect/hotspot/New() + ..() + dir = pick(cardinal) + air_update_turf() + return + +/obj/effect/hotspot/Crossed(mob/living/L) + ..() + if(isliving(L)) + L.fire_act() diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index 3a67701487f..0458a459d81 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -1,263 +1,263 @@ -var/kill_air = 0 - -var/global/datum/controller/air_system/air_master - -datum/controller/air_system - var/list/excited_groups = list() - var/list/active_turfs = list() - var/list/hotspots = list() - var/speed = 1 - - //Special functions lists - var/list/turf/simulated/active_super_conductivity = list() - var/list/turf/simulated/high_pressure_delta = list() - - var/current_cycle = 0 - - -/datum/controller/air_system/proc/setup() - set background = BACKGROUND_ENABLED - world << "\red \b Processing Geometry..." - sleep(1) - - var/start_time = world.timeofday - - setup_allturfs() - - global_activeturfs = active_turfs.len - - world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!" - -/datum/controller/air_system/proc/process() - if(kill_air) - return 1 - - if(speed > 1) - for(var/i=0,i 20) - EG.dismantle() - -/turf/proc/CanAtmosPass(var/turf/T) - if(!istype(T)) return 0 - var/R - if(blocks_air || T.blocks_air) - R = 1 - - for(var/obj/O in contents) - if(!O.CanAtmosPass(T)) - R = 1 - if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments - var/D = get_dir(src, T) - atmos_supeconductivity |= D - D = get_dir(T, src) - T.atmos_supeconductivity |= D - return 0 //no need to keep going, we got all we asked - - for(var/obj/O in T.contents) - if(!O.CanAtmosPass(src)) - R = 1 - if(O.BlockSuperconductivity()) - var/D = get_dir(src, T) - atmos_supeconductivity |= D - D = get_dir(T, src) - T.atmos_supeconductivity |= D - return 0 - - var/D = get_dir(src, T) - atmos_supeconductivity &= ~D - D = get_dir(T, src) - T.atmos_supeconductivity &= ~D - - if(!R) - return 1 - -atom/movable/proc/CanAtmosPass() - return 1 - -atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - return (!density || !height || air_group) - -turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) - if(!target) return 0 - - if(istype(mover)) // turf/Enter(...) will perform more advanced checks - return !density - - else // Now, doing more detailed checks for air movement and air group formation - if(target.blocks_air||blocks_air) - return 0 - - for(var/obj/obstacle in src) - if(!obstacle.CanPass(mover, target, height, air_group)) - return 0 - for(var/obj/obstacle in target) - if(!obstacle.CanPass(mover, src, height, air_group)) - return 0 - - return 1 - -/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm. - return 0 - -/turf/proc/CalculateAdjacentTurfs() - atmos_adjacent_turfs_amount = 0 - for(var/direction in cardinal) - var/turf/T = get_step(src, direction) - if(!istype(T)) - continue - var/counterdir = get_dir(T, src) - if(CanAtmosPass(T)) - atmos_adjacent_turfs_amount += 1 - atmos_adjacent_turfs |= direction - if(!(T.atmos_adjacent_turfs & counterdir)) - T.atmos_adjacent_turfs_amount += 1 - T.atmos_adjacent_turfs |= counterdir - else - atmos_adjacent_turfs &= ~direction - if(T.atmos_adjacent_turfs & counterdir) - T.atmos_adjacent_turfs_amount -= 1 - T.atmos_adjacent_turfs &= ~counterdir - -/atom/movable/proc/air_update_turf(var/command = 0) - if(!istype(loc,/turf) && command) - return - for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures - T.air_update_turf(command) - -/turf/proc/air_update_turf(var/command = 0) - if(command) - CalculateAdjacentTurfs() - if(air_master) - air_master.add_to_active(src,command) - -/atom/movable/proc/move_update_air(var/turf/T) - if(istype(T,/turf)) - T.air_update_turf(1) - air_update_turf(1) - -/atom/movable/proc/atmos_spawn_air(var/text, var/amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires - var/turf/simulated/T = get_turf(src) - if(!istype(T)) - return - T.atmos_spawn_air(text, amount) - -var/const/SPAWN_HEAT = 1 - -var/const/SPAWN_TOXINS = 4 -var/const/SPAWN_OXYGEN = 8 -var/const/SPAWN_CO2 = 16 -var/const/SPAWN_NITROGEN = 32 - -var/const/SPAWN_N2O = 64 - -var/const/SPAWN_AIR = 256 - -/turf/simulated/proc/atmos_spawn_air(var/flag, var/amount) - if(!text || !amount || !air) - return - - var/datum/gas_mixture/G = new - - if(flag & SPAWN_HEAT) - G.temperature += 1000 - - if(flag & SPAWN_TOXINS) - G.toxins += amount - if(flag & SPAWN_OXYGEN) - G.oxygen += amount - if(flag & SPAWN_CO2) - G.carbon_dioxide += amount - if(flag & SPAWN_NITROGEN) - G.nitrogen += amount - - if(flag & SPAWN_N2O) - var/datum/gas/sleeping_agent/T = new - T.moles += amount - G.trace_gases += T - - if(flag & SPAWN_AIR) - G.oxygen += MOLES_O2STANDARD * amount - G.nitrogen += MOLES_N2STANDARD * amount - - air.merge(G) +var/kill_air = 0 + +var/global/datum/controller/air_system/air_master + +datum/controller/air_system + var/list/excited_groups = list() + var/list/active_turfs = list() + var/list/hotspots = list() + var/speed = 1 + + //Special functions lists + var/list/turf/simulated/active_super_conductivity = list() + var/list/turf/simulated/high_pressure_delta = list() + + var/current_cycle = 0 + + +/datum/controller/air_system/proc/setup() + set background = BACKGROUND_ENABLED + world << "\red \b Processing Geometry..." + sleep(1) + + var/start_time = world.timeofday + + setup_allturfs() + + global_activeturfs = active_turfs.len + + world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!" + +/datum/controller/air_system/proc/process() + if(kill_air) + return 1 + + if(speed > 1) + for(var/i=0,i 20) + EG.dismantle() + +/turf/proc/CanAtmosPass(var/turf/T) + if(!istype(T)) return 0 + var/R + if(blocks_air || T.blocks_air) + R = 1 + + for(var/obj/O in contents) + if(!O.CanAtmosPass(T)) + R = 1 + if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments + var/D = get_dir(src, T) + atmos_supeconductivity |= D + D = get_dir(T, src) + T.atmos_supeconductivity |= D + return 0 //no need to keep going, we got all we asked + + for(var/obj/O in T.contents) + if(!O.CanAtmosPass(src)) + R = 1 + if(O.BlockSuperconductivity()) + var/D = get_dir(src, T) + atmos_supeconductivity |= D + D = get_dir(T, src) + T.atmos_supeconductivity |= D + return 0 + + var/D = get_dir(src, T) + atmos_supeconductivity &= ~D + D = get_dir(T, src) + T.atmos_supeconductivity &= ~D + + if(!R) + return 1 + +atom/movable/proc/CanAtmosPass() + return 1 + +atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) + return (!density || !height || air_group) + +turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) + if(!target) return 0 + + if(istype(mover)) // turf/Enter(...) will perform more advanced checks + return !density + + else // Now, doing more detailed checks for air movement and air group formation + if(target.blocks_air||blocks_air) + return 0 + + for(var/obj/obstacle in src) + if(!obstacle.CanPass(mover, target, height, air_group)) + return 0 + for(var/obj/obstacle in target) + if(!obstacle.CanPass(mover, src, height, air_group)) + return 0 + + return 1 + +/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm. + return 0 + +/turf/proc/CalculateAdjacentTurfs() + atmos_adjacent_turfs_amount = 0 + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + if(!istype(T)) + continue + var/counterdir = get_dir(T, src) + if(CanAtmosPass(T)) + atmos_adjacent_turfs_amount += 1 + atmos_adjacent_turfs |= direction + if(!(T.atmos_adjacent_turfs & counterdir)) + T.atmos_adjacent_turfs_amount += 1 + T.atmos_adjacent_turfs |= counterdir + else + atmos_adjacent_turfs &= ~direction + if(T.atmos_adjacent_turfs & counterdir) + T.atmos_adjacent_turfs_amount -= 1 + T.atmos_adjacent_turfs &= ~counterdir + +/atom/movable/proc/air_update_turf(var/command = 0) + if(!istype(loc,/turf) && command) + return + for(var/turf/T in locs) // used by double wide doors and other nonexistant multitile structures + T.air_update_turf(command) + +/turf/proc/air_update_turf(var/command = 0) + if(command) + CalculateAdjacentTurfs() + if(air_master) + air_master.add_to_active(src,command) + +/atom/movable/proc/move_update_air(var/turf/T) + if(istype(T,/turf)) + T.air_update_turf(1) + air_update_turf(1) + +/atom/movable/proc/atmos_spawn_air(var/text, var/amount) //because a lot of people loves to copy paste awful code lets just make a easy proc to spawn your plasma fires + var/turf/simulated/T = get_turf(src) + if(!istype(T)) + return + T.atmos_spawn_air(text, amount) + +var/const/SPAWN_HEAT = 1 + +var/const/SPAWN_TOXINS = 4 +var/const/SPAWN_OXYGEN = 8 +var/const/SPAWN_CO2 = 16 +var/const/SPAWN_NITROGEN = 32 + +var/const/SPAWN_N2O = 64 + +var/const/SPAWN_AIR = 256 + +/turf/simulated/proc/atmos_spawn_air(var/flag, var/amount) + if(!text || !amount || !air) + return + + var/datum/gas_mixture/G = new + + if(flag & SPAWN_HEAT) + G.temperature += 1000 + + if(flag & SPAWN_TOXINS) + G.toxins += amount + if(flag & SPAWN_OXYGEN) + G.oxygen += amount + if(flag & SPAWN_CO2) + G.carbon_dioxide += amount + if(flag & SPAWN_NITROGEN) + G.nitrogen += amount + + if(flag & SPAWN_N2O) + var/datum/gas/sleeping_agent/T = new + T.moles += amount + G.trace_gases += T + + if(flag & SPAWN_AIR) + G.oxygen += MOLES_O2STANDARD * amount + G.nitrogen += MOLES_N2STANDARD * amount + + air.merge(G) air_master.add_to_active(src, 0) \ No newline at end of file diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index 6ef7d790470..5b63966de76 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -1,464 +1,464 @@ - - -turf - var/pressure_difference = 0 - var/pressure_direction = 0 - var/atmos_adjacent_turfs = 0 - var/atmos_adjacent_turfs_amount = 0 - var/atmos_supeconductivity = 0 - -turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air - del(giver) - return 0 - -turf/return_air() - //Create gas mixture to hold data for passing - var/datum/gas_mixture/GM = new - - GM.oxygen = oxygen - GM.carbon_dioxide = carbon_dioxide - GM.nitrogen = nitrogen - GM.toxins = toxins - - GM.temperature = temperature - - return GM - -turf/remove_air(amount as num) - var/datum/gas_mixture/GM = new - - var/sum = oxygen + carbon_dioxide + nitrogen + toxins - if(sum>0) - GM.oxygen = (oxygen/sum)*amount - GM.carbon_dioxide = (carbon_dioxide/sum)*amount - GM.nitrogen = (nitrogen/sum)*amount - GM.toxins = (toxins/sum)*amount - - GM.temperature = temperature - - return GM - - -turf/simulated - var/datum/excited_group/excited_group - var/excited = 0 - var/recently_active = 0 - var/datum/gas_mixture/air - var/archived_cycle = 0 - var/current_cycle = 0 - - var/obj/effect/hotspot/active_hotspot - - var/temperature_archived //USED ONLY FOR SOLIDS - -turf/simulated/New() - ..() - - if(!blocks_air) - air = new - - air.oxygen = oxygen - air.carbon_dioxide = carbon_dioxide - air.nitrogen = nitrogen - air.toxins = toxins - - air.temperature = temperature - -turf/simulated/Del() - if(active_hotspot) - active_hotspot.garbage_collect() - ..() - -turf/simulated/assume_air(datum/gas_mixture/giver) - if(!giver) return 0 - var/datum/gas_mixture/receiver = air - if(istype(receiver)) - - air.merge(giver) - - if(air.check_tile_graphic()) - update_visuals(air) - - return 1 - - else return ..() - -turf/simulated/proc/copy_air_with_tile(turf/simulated/T) - if(istype(T) && T.air && air) - air.copy_from(T.air) - -turf/simulated/proc/copy_air(datum/gas_mixture/copy) - if(air && copy) - air.copy_from(copy) - -turf/simulated/return_air() - if(air) - return air - - else - return ..() - -turf/simulated/remove_air(amount as num) - if(air) - var/datum/gas_mixture/removed = null - - removed = air.remove(amount) - - if(air.check_tile_graphic()) - update_visuals(air) - - return removed - - else - return ..() - -turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) - var/delta_temperature = (temperature_archived - model.temperature) - if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) - - var/heat = conduction_coefficient*delta_temperature* \ - (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity)) - temperature -= heat/heat_capacity - -turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity) - - var/heat = conduction_coefficient*delta_temperature* \ - (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity)) - - temperature -= heat/heat_capacity - sharer.temperature += heat/sharer.heat_capacity - - - - - - - - -/turf/simulated/proc/process_cell() - - if(archived_cycle < air_master.current_cycle) //archive self if not already done - archive() - current_cycle = air_master.current_cycle - - var/remove = 1 //set by non simulated turfs who are sharing with this turf - - for(var/direction in cardinal) - if(!(atmos_adjacent_turfs & direction)) - continue - - var/turf/enemy_tile = get_step(src, direction) - - if(istype(enemy_tile,/turf/simulated)) - var/turf/simulated/enemy_simulated = enemy_tile - - if(current_cycle > enemy_simulated.current_cycle) - enemy_simulated.archive() - - /******************* GROUP HANDLING START *****************************************************************/ - - if(enemy_simulated.excited) - if(excited_group) - if(enemy_simulated.excited_group) - if(excited_group != enemy_simulated.excited_group) - excited_group.merge_groups(enemy_simulated.excited_group) //combine groups - share_air(enemy_simulated) //share - else - if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) - excited_group.add_turf(enemy_simulated) //add enemy to our group - share_air(enemy_simulated) //share - else - if(enemy_simulated.excited_group) - if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) - enemy_simulated.excited_group.add_turf(src) //join self to enemy group - share_air(enemy_simulated) //share - else - if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) - var/datum/excited_group/EG = new //generate new group - EG.add_turf(src) - EG.add_turf(enemy_simulated) - share_air(enemy_simulated) //share - else - if(!air.compare(enemy_simulated.air)) //compare if - air_master.add_to_active(enemy_simulated) //excite enemy - if(excited_group) - excited_group.add_turf(enemy_simulated) //add enemy to group - else - var/datum/excited_group/EG = new //generate new group - EG.add_turf(src) - EG.add_turf(enemy_simulated) - share_air(enemy_simulated) //share - - /******************* GROUP HANDLING FINISH *********************************************************************/ - - else - if(!air.check_turf(enemy_tile)) - var/difference = air.mimic(enemy_tile,,atmos_adjacent_turfs_amount) - if(difference) - if(difference > 0) - consider_pressure_difference(enemy_tile, difference) - else - enemy_tile.consider_pressure_difference(src, difference) - remove = 0 - if(excited_group) - last_share_check() - - air.react() - - if(air.check_tile_graphic()) - update_visuals(air) - - if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - hotspot_expose(air.temperature, CELL_VOLUME) - for(var/atom/movable/item in src) - item.temperature_expose(air, air.temperature, CELL_VOLUME) - temperature_expose(air, air.temperature, CELL_VOLUME) - - if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION) - if(consider_superconductivity(starting = 1)) - remove = 0 - - if(!excited_group && remove == 1) - air_master.remove_from_active(src) - - - -/turf/simulated/proc/archive() - if(air) //For open space like floors - air.archive() - temperature_archived = temperature - archived_cycle = air_master.current_cycle - -/turf/simulated/proc/update_visuals(datum/gas_mixture/model) - overlays.Cut() - var/siding_icon_state = return_siding_icon_state() - if(siding_icon_state) - overlays += image('icons/turf/floors.dmi',siding_icon_state) - switch(model.graphic) - if("plasma") - overlays.Add(plmaster) - if("sleeping_agent") - overlays.Add(slmaster) - -/turf/simulated/proc/share_air(var/turf/simulated/T) - if(T.current_cycle < current_cycle) - var/difference - difference = air.share(T.air, atmos_adjacent_turfs_amount) - if(difference) - if(difference > 0) - consider_pressure_difference(T, difference) - else - T.consider_pressure_difference(src, difference) - last_share_check() - -/turf/proc/consider_pressure_difference(var/turf/simulated/T, var/difference) - air_master.high_pressure_delta |= src - if(difference > pressure_difference) - pressure_direction = get_dir(src, T) - pressure_difference = difference - -/turf/simulated/proc/last_share_check() - if(air.last_share > MINIMUM_AIR_TO_SUSPEND) - excited_group.reset_cooldowns() - -/turf/proc/high_pressure_movements() - for(var/atom/movable/M in src) - M.experience_pressure_difference(pressure_difference, pressure_direction) - - - - -atom/movable/var/pressure_resistance = 5 -atom/movable/var/last_forced_movement = 0 - -atom/movable/proc/experience_pressure_difference(pressure_difference, direction) - if(last_forced_movement >= air_master.current_cycle) - return 0 - else if(!anchored) - if(pressure_difference > pressure_resistance) - last_forced_movement = air_master.current_cycle - spawn step(src, direction) - return 1 - - - - -/datum/excited_group - var/list/turf_list = list() - var/breakdown_cooldown = 0 - -/datum/excited_group/New() - if(air_master) - air_master.excited_groups += src - -/datum/excited_group/proc/add_turf(var/turf/simulated/T) - turf_list += T - T.excited_group = src - T.recently_active = 1 - reset_cooldowns() - -/datum/excited_group/proc/merge_groups(var/datum/excited_group/E) - if(turf_list.len > E.turf_list.len) - air_master.excited_groups -= E - for(var/turf/simulated/T in E.turf_list) - T.excited_group = src - turf_list += T - reset_cooldowns() - else - air_master.excited_groups -= src - for(var/turf/simulated/T in turf_list) - T.excited_group = E - E.turf_list += T - E.reset_cooldowns() - -/datum/excited_group/proc/reset_cooldowns() - breakdown_cooldown = 0 - -/datum/excited_group/proc/self_breakdown() - var/datum/gas_mixture/A = new - var/datum/gas/sleeping_agent/S = new - A.trace_gases += S - for(var/turf/simulated/T in turf_list) - A.oxygen += T.air.oxygen - A.carbon_dioxide+= T.air.carbon_dioxide - A.nitrogen += T.air.nitrogen - A.toxins += T.air.toxins - - if(T.air.trace_gases.len) - for(var/datum/gas/N in T.air.trace_gases) - S.moles += N.moles - - for(var/turf/simulated/T in turf_list) - T.air.oxygen = A.oxygen/turf_list.len - T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len - T.air.nitrogen = A.nitrogen/turf_list.len - T.air.toxins = A.toxins/turf_list.len - - if(S.moles > 0) - if(T.air.trace_gases.len) - for(var/datum/gas/G in T.air.trace_gases) - G.moles = S.moles/turf_list.len - else - var/datum/gas/sleeping_agent/G = new - G.moles = S.moles/turf_list.len - T.air.trace_gases += G - - if(T.air.check_tile_graphic()) - T.update_visuals(T.air) - - -/datum/excited_group/proc/dismantle() - for(var/turf/simulated/T in turf_list) - T.excited = 0 - T.recently_active = 0 - T.excited_group = null - air_master.active_turfs -= T - garbage_collect() - -/datum/excited_group/proc/garbage_collect() - for(var/turf/simulated/T in turf_list) - T.excited_group = null - turf_list.Cut() - air_master.excited_groups -= src - - - - - - - - - - -turf/simulated/proc/super_conduct() - var/conductivity_directions = 0 - if(blocks_air) - //Does not participate in air exchange, so will conduct heat across all four borders at this time - conductivity_directions = NORTH|SOUTH|EAST|WEST - - if(archived_cycle < air_master.current_cycle) - archive() - else - //Does particate in air exchange so only consider directions not considered during process_cell() - for(var/direction in cardinal) - if(!(atmos_adjacent_turfs & direction) && !(atmos_supeconductivity & direction)) - conductivity_directions += direction - - if(conductivity_directions>0) - //Conduct with tiles around me - for(var/direction in cardinal) - if(conductivity_directions&direction) - var/turf/neighbor = get_step(src,direction) - - if(!neighbor.thermal_conductivity) - continue - - if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange - var/turf/simulated/T = neighbor - - if(T.archived_cycle < air_master.current_cycle) - T.archive() - - if(T.air) - if(air) //Both tiles are open - air.temperature_share(T.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - else //Solid but neighbor is open - T.air.temperature_turf_share(src, T.thermal_conductivity) - air_master.add_to_active(T, 0) - else - if(air) //Open but neighbor is solid - air.temperature_turf_share(T, T.thermal_conductivity) - else //Both tiles are solid - share_temperature_mutual_solid(T, T.thermal_conductivity) - T.temperature_expose(null, T.temperature, null) - - T.consider_superconductivity() - - else - if(air) //Open - air.temperature_mimic(neighbor, neighbor.thermal_conductivity) - else - mimic_temperature_solid(neighbor, neighbor.thermal_conductivity) - - radiate_to_spess() - - //Conduct with air on my tile if I have it - if(air) - air.temperature_turf_share(src, thermal_conductivity) - - //Make sure still hot enough to continue conducting heat - if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) - air_master.active_super_conductivity -= src - return 0 - - else - if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) - air_master.active_super_conductivity -= src - return 0 - -turf/simulated/proc/consider_superconductivity(starting) - if(!thermal_conductivity) - return 0 - - if(air) - if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) - return 0 - if(air.heat_capacity() < M_CELL_WITH_RATIO) // Was: MOLES_CELLSTANDARD*0.1*0.05 Since there are no variables here we can make this a constant. - return 0 - else - if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) - return 0 - - air_master.active_super_conductivity |= src - return 1 - -turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space - if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out - var/delta_temperature = (temperature_archived - 2.7) //hardcoded space temperature - if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) - - var/heat = thermal_conductivity*delta_temperature* \ - (heat_capacity*700000/(heat_capacity+700000)) //700000 is the heat_capacity from a space turf, hardcoded here + + +turf + var/pressure_difference = 0 + var/pressure_direction = 0 + var/atmos_adjacent_turfs = 0 + var/atmos_adjacent_turfs_amount = 0 + var/atmos_supeconductivity = 0 + +turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air + del(giver) + return 0 + +turf/return_air() + //Create gas mixture to hold data for passing + var/datum/gas_mixture/GM = new + + GM.oxygen = oxygen + GM.carbon_dioxide = carbon_dioxide + GM.nitrogen = nitrogen + GM.toxins = toxins + + GM.temperature = temperature + + return GM + +turf/remove_air(amount as num) + var/datum/gas_mixture/GM = new + + var/sum = oxygen + carbon_dioxide + nitrogen + toxins + if(sum>0) + GM.oxygen = (oxygen/sum)*amount + GM.carbon_dioxide = (carbon_dioxide/sum)*amount + GM.nitrogen = (nitrogen/sum)*amount + GM.toxins = (toxins/sum)*amount + + GM.temperature = temperature + + return GM + + +turf/simulated + var/datum/excited_group/excited_group + var/excited = 0 + var/recently_active = 0 + var/datum/gas_mixture/air + var/archived_cycle = 0 + var/current_cycle = 0 + + var/obj/effect/hotspot/active_hotspot + + var/temperature_archived //USED ONLY FOR SOLIDS + +turf/simulated/New() + ..() + + if(!blocks_air) + air = new + + air.oxygen = oxygen + air.carbon_dioxide = carbon_dioxide + air.nitrogen = nitrogen + air.toxins = toxins + + air.temperature = temperature + +turf/simulated/Del() + if(active_hotspot) + active_hotspot.garbage_collect() + ..() + +turf/simulated/assume_air(datum/gas_mixture/giver) + if(!giver) return 0 + var/datum/gas_mixture/receiver = air + if(istype(receiver)) + + air.merge(giver) + + if(air.check_tile_graphic()) + update_visuals(air) + + return 1 + + else return ..() + +turf/simulated/proc/copy_air_with_tile(turf/simulated/T) + if(istype(T) && T.air && air) + air.copy_from(T.air) + +turf/simulated/proc/copy_air(datum/gas_mixture/copy) + if(air && copy) + air.copy_from(copy) + +turf/simulated/return_air() + if(air) + return air + + else + return ..() + +turf/simulated/remove_air(amount as num) + if(air) + var/datum/gas_mixture/removed = null + + removed = air.remove(amount) + + if(air.check_tile_graphic()) + update_visuals(air) + + return removed + + else + return ..() + +turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) + var/delta_temperature = (temperature_archived - model.temperature) + if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) + + var/heat = conduction_coefficient*delta_temperature* \ + (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity)) + temperature -= heat/heat_capacity + +turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity) + + var/heat = conduction_coefficient*delta_temperature* \ + (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity)) + + temperature -= heat/heat_capacity + sharer.temperature += heat/sharer.heat_capacity + + + + + + + + +/turf/simulated/proc/process_cell() + + if(archived_cycle < air_master.current_cycle) //archive self if not already done + archive() + current_cycle = air_master.current_cycle + + var/remove = 1 //set by non simulated turfs who are sharing with this turf + + for(var/direction in cardinal) + if(!(atmos_adjacent_turfs & direction)) + continue + + var/turf/enemy_tile = get_step(src, direction) + + if(istype(enemy_tile,/turf/simulated)) + var/turf/simulated/enemy_simulated = enemy_tile + + if(current_cycle > enemy_simulated.current_cycle) + enemy_simulated.archive() + + /******************* GROUP HANDLING START *****************************************************************/ + + if(enemy_simulated.excited) + if(excited_group) + if(enemy_simulated.excited_group) + if(excited_group != enemy_simulated.excited_group) + excited_group.merge_groups(enemy_simulated.excited_group) //combine groups + share_air(enemy_simulated) //share + else + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + excited_group.add_turf(enemy_simulated) //add enemy to our group + share_air(enemy_simulated) //share + else + if(enemy_simulated.excited_group) + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + enemy_simulated.excited_group.add_turf(src) //join self to enemy group + share_air(enemy_simulated) //share + else + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + var/datum/excited_group/EG = new //generate new group + EG.add_turf(src) + EG.add_turf(enemy_simulated) + share_air(enemy_simulated) //share + else + if(!air.compare(enemy_simulated.air)) //compare if + air_master.add_to_active(enemy_simulated) //excite enemy + if(excited_group) + excited_group.add_turf(enemy_simulated) //add enemy to group + else + var/datum/excited_group/EG = new //generate new group + EG.add_turf(src) + EG.add_turf(enemy_simulated) + share_air(enemy_simulated) //share + + /******************* GROUP HANDLING FINISH *********************************************************************/ + + else + if(!air.check_turf(enemy_tile)) + var/difference = air.mimic(enemy_tile,,atmos_adjacent_turfs_amount) + if(difference) + if(difference > 0) + consider_pressure_difference(enemy_tile, difference) + else + enemy_tile.consider_pressure_difference(src, difference) + remove = 0 + if(excited_group) + last_share_check() + + air.react() + + if(air.check_tile_graphic()) + update_visuals(air) + + if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + hotspot_expose(air.temperature, CELL_VOLUME) + for(var/atom/movable/item in src) + item.temperature_expose(air, air.temperature, CELL_VOLUME) + temperature_expose(air, air.temperature, CELL_VOLUME) + + if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION) + if(consider_superconductivity(starting = 1)) + remove = 0 + + if(!excited_group && remove == 1) + air_master.remove_from_active(src) + + + +/turf/simulated/proc/archive() + if(air) //For open space like floors + air.archive() + temperature_archived = temperature + archived_cycle = air_master.current_cycle + +/turf/simulated/proc/update_visuals(datum/gas_mixture/model) + overlays.Cut() + var/siding_icon_state = return_siding_icon_state() + if(siding_icon_state) + overlays += image('icons/turf/floors.dmi',siding_icon_state) + switch(model.graphic) + if("plasma") + overlays.Add(plmaster) + if("sleeping_agent") + overlays.Add(slmaster) + +/turf/simulated/proc/share_air(var/turf/simulated/T) + if(T.current_cycle < current_cycle) + var/difference + difference = air.share(T.air, atmos_adjacent_turfs_amount) + if(difference) + if(difference > 0) + consider_pressure_difference(T, difference) + else + T.consider_pressure_difference(src, difference) + last_share_check() + +/turf/proc/consider_pressure_difference(var/turf/simulated/T, var/difference) + air_master.high_pressure_delta |= src + if(difference > pressure_difference) + pressure_direction = get_dir(src, T) + pressure_difference = difference + +/turf/simulated/proc/last_share_check() + if(air.last_share > MINIMUM_AIR_TO_SUSPEND) + excited_group.reset_cooldowns() + +/turf/proc/high_pressure_movements() + for(var/atom/movable/M in src) + M.experience_pressure_difference(pressure_difference, pressure_direction) + + + + +atom/movable/var/pressure_resistance = 5 +atom/movable/var/last_forced_movement = 0 + +atom/movable/proc/experience_pressure_difference(pressure_difference, direction) + if(last_forced_movement >= air_master.current_cycle) + return 0 + else if(!anchored) + if(pressure_difference > pressure_resistance) + last_forced_movement = air_master.current_cycle + spawn step(src, direction) + return 1 + + + + +/datum/excited_group + var/list/turf_list = list() + var/breakdown_cooldown = 0 + +/datum/excited_group/New() + if(air_master) + air_master.excited_groups += src + +/datum/excited_group/proc/add_turf(var/turf/simulated/T) + turf_list += T + T.excited_group = src + T.recently_active = 1 + reset_cooldowns() + +/datum/excited_group/proc/merge_groups(var/datum/excited_group/E) + if(turf_list.len > E.turf_list.len) + air_master.excited_groups -= E + for(var/turf/simulated/T in E.turf_list) + T.excited_group = src + turf_list += T + reset_cooldowns() + else + air_master.excited_groups -= src + for(var/turf/simulated/T in turf_list) + T.excited_group = E + E.turf_list += T + E.reset_cooldowns() + +/datum/excited_group/proc/reset_cooldowns() + breakdown_cooldown = 0 + +/datum/excited_group/proc/self_breakdown() + var/datum/gas_mixture/A = new + var/datum/gas/sleeping_agent/S = new + A.trace_gases += S + for(var/turf/simulated/T in turf_list) + A.oxygen += T.air.oxygen + A.carbon_dioxide+= T.air.carbon_dioxide + A.nitrogen += T.air.nitrogen + A.toxins += T.air.toxins + + if(T.air.trace_gases.len) + for(var/datum/gas/N in T.air.trace_gases) + S.moles += N.moles + + for(var/turf/simulated/T in turf_list) + T.air.oxygen = A.oxygen/turf_list.len + T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len + T.air.nitrogen = A.nitrogen/turf_list.len + T.air.toxins = A.toxins/turf_list.len + + if(S.moles > 0) + if(T.air.trace_gases.len) + for(var/datum/gas/G in T.air.trace_gases) + G.moles = S.moles/turf_list.len + else + var/datum/gas/sleeping_agent/G = new + G.moles = S.moles/turf_list.len + T.air.trace_gases += G + + if(T.air.check_tile_graphic()) + T.update_visuals(T.air) + + +/datum/excited_group/proc/dismantle() + for(var/turf/simulated/T in turf_list) + T.excited = 0 + T.recently_active = 0 + T.excited_group = null + air_master.active_turfs -= T + garbage_collect() + +/datum/excited_group/proc/garbage_collect() + for(var/turf/simulated/T in turf_list) + T.excited_group = null + turf_list.Cut() + air_master.excited_groups -= src + + + + + + + + + + +turf/simulated/proc/super_conduct() + var/conductivity_directions = 0 + if(blocks_air) + //Does not participate in air exchange, so will conduct heat across all four borders at this time + conductivity_directions = NORTH|SOUTH|EAST|WEST + + if(archived_cycle < air_master.current_cycle) + archive() + else + //Does particate in air exchange so only consider directions not considered during process_cell() + for(var/direction in cardinal) + if(!(atmos_adjacent_turfs & direction) && !(atmos_supeconductivity & direction)) + conductivity_directions += direction + + if(conductivity_directions>0) + //Conduct with tiles around me + for(var/direction in cardinal) + if(conductivity_directions&direction) + var/turf/neighbor = get_step(src,direction) + + if(!neighbor.thermal_conductivity) + continue + + if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange + var/turf/simulated/T = neighbor + + if(T.archived_cycle < air_master.current_cycle) + T.archive() + + if(T.air) + if(air) //Both tiles are open + air.temperature_share(T.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) + else //Solid but neighbor is open + T.air.temperature_turf_share(src, T.thermal_conductivity) + air_master.add_to_active(T, 0) + else + if(air) //Open but neighbor is solid + air.temperature_turf_share(T, T.thermal_conductivity) + else //Both tiles are solid + share_temperature_mutual_solid(T, T.thermal_conductivity) + T.temperature_expose(null, T.temperature, null) + + T.consider_superconductivity() + + else + if(air) //Open + air.temperature_mimic(neighbor, neighbor.thermal_conductivity) + else + mimic_temperature_solid(neighbor, neighbor.thermal_conductivity) + + radiate_to_spess() + + //Conduct with air on my tile if I have it + if(air) + air.temperature_turf_share(src, thermal_conductivity) + + //Make sure still hot enough to continue conducting heat + if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) + air_master.active_super_conductivity -= src + return 0 + + else + if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) + air_master.active_super_conductivity -= src + return 0 + +turf/simulated/proc/consider_superconductivity(starting) + if(!thermal_conductivity) + return 0 + + if(air) + if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) + return 0 + if(air.heat_capacity() < M_CELL_WITH_RATIO) // Was: MOLES_CELLSTANDARD*0.1*0.05 Since there are no variables here we can make this a constant. + return 0 + else + if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) + return 0 + + air_master.active_super_conductivity |= src + return 1 + +turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space + if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out + var/delta_temperature = (temperature_archived - 2.7) //hardcoded space temperature + if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) + + var/heat = thermal_conductivity*delta_temperature* \ + (heat_capacity*700000/(heat_capacity+700000)) //700000 is the heat_capacity from a space turf, hardcoded here temperature -= heat/heat_capacity \ No newline at end of file diff --git a/code/WorkInProgress/carn/debug_pipenets.dm b/code/WorkInProgress/carn/debug_pipenets.dm index ee16e00860b..d617dfec1de 100644 --- a/code/WorkInProgress/carn/debug_pipenets.dm +++ b/code/WorkInProgress/carn/debug_pipenets.dm @@ -1,59 +1,59 @@ -/client/verb/pipenets_debug() - if(!holder) return - for(var/i=1,i<=pipe_networks.len,i++) -// src << "[copytext("\ref[powernets[i]]",8,12)]" - src << "[copytext("\ref[pipe_networks[i]]",8,12)]" - src << "[pipe_networks.len] total pipenets" - - -/client/verb/pipenet_overlays() - var/list/L = list() - for(var/obj/machinery/atmospherics/AT in view(mob)) - AT.maptext = null - L |= AT - for(var/datum/pipe_network/Network in pipe_networks) - for(var/obj/machinery/atmospherics/AT in Network.normal_members) - if(!(AT in L)) - continue - if(!AT.maptext) - AT.maptext = "[copytext("\ref[Network]",8,12)]" - else - world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" - for(var/datum/pipeline/PL in Network.line_members) - for(var/obj/machinery/atmospherics/AT in PL.members) - if(!(AT in L)) - continue - if(!AT.maptext) - AT.maptext = "[copytext("\ref[Network]",8,12)]" - else - world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" - for(var/obj/machinery/atmospherics/ATE in PL.edges) - if(!(ATE in L)) - continue - if(!ATE.maptext) - ATE.maptext = "[copytext("\ref[Network]",8,12)]" - else - world << "DUPLICATE: [ATE.name] net#[copytext("\ref[Network]",8,12)])" - -/client/verb/follow_pipenet(var/netref as null|anything in get_refs(pipe_networks)) - var/datum/pipe_network/Network = locate(netref) - if(!Network) - src << "Unable to locate [netref]" - return - for(var/obj/machinery/atmospherics/AT in world) - if(AT) - animate(AT, alpha = 255, time = 0) - for(var/obj/machinery/atmospherics/AT in Network.normal_members) - if(AT) - animate(AT, alpha = 0, time = 1, loop = -1) - animate(alpha = 255, time = 1) - for(var/datum/pipeline/PL in Network.line_members) - for(var/obj/machinery/atmospherics/AT in PL.members) - if(AT) - animate(AT, alpha = 0, time = 1, loop = -1) - animate(alpha = 255, time = 1) - -/proc/get_refs(var/list/L) - . = list() - for(var/everything in L) +/client/verb/pipenets_debug() + if(!holder) return + for(var/i=1,i<=pipe_networks.len,i++) +// src << "[copytext("\ref[powernets[i]]",8,12)]" + src << "[copytext("\ref[pipe_networks[i]]",8,12)]" + src << "[pipe_networks.len] total pipenets" + + +/client/verb/pipenet_overlays() + var/list/L = list() + for(var/obj/machinery/atmospherics/AT in view(mob)) + AT.maptext = null + L |= AT + for(var/datum/pipe_network/Network in pipe_networks) + for(var/obj/machinery/atmospherics/AT in Network.normal_members) + if(!(AT in L)) + continue + if(!AT.maptext) + AT.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" + for(var/datum/pipeline/PL in Network.line_members) + for(var/obj/machinery/atmospherics/AT in PL.members) + if(!(AT in L)) + continue + if(!AT.maptext) + AT.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [AT.name] net#[copytext("\ref[Network]",8,12)])" + for(var/obj/machinery/atmospherics/ATE in PL.edges) + if(!(ATE in L)) + continue + if(!ATE.maptext) + ATE.maptext = "[copytext("\ref[Network]",8,12)]" + else + world << "DUPLICATE: [ATE.name] net#[copytext("\ref[Network]",8,12)])" + +/client/verb/follow_pipenet(var/netref as null|anything in get_refs(pipe_networks)) + var/datum/pipe_network/Network = locate(netref) + if(!Network) + src << "Unable to locate [netref]" + return + for(var/obj/machinery/atmospherics/AT in world) + if(AT) + animate(AT, alpha = 255, time = 0) + for(var/obj/machinery/atmospherics/AT in Network.normal_members) + if(AT) + animate(AT, alpha = 0, time = 1, loop = -1) + animate(alpha = 255, time = 1) + for(var/datum/pipeline/PL in Network.line_members) + for(var/obj/machinery/atmospherics/AT in PL.members) + if(AT) + animate(AT, alpha = 0, time = 1, loop = -1) + animate(alpha = 255, time = 1) + +/proc/get_refs(var/list/L) + . = list() + for(var/everything in L) . += "\ref[everything]" \ No newline at end of file diff --git a/code/__DEFINES/_readme.dm b/code/__DEFINES/_readme.dm index 42ad52286fe..85a5dfe7e7c 100644 --- a/code/__DEFINES/_readme.dm +++ b/code/__DEFINES/_readme.dm @@ -1,14 +1,14 @@ -/* - This folder is full of #define statements. They are similar to constants, - but must come before any code that references them, and they do not take up - memory the way constants do. - - The values in this folder are NOT options. They are not for hosts to play with. - Some of the values are arbitrary and only need to be different from similar constants; - for example, the genetic mutation numbers in genetics.dm mean nothing, but MUST be distinct. - - It is wise not to touch them unless you understand what they do, where they're used, - and most importantly, - how to undo your changes if you screw it up. - - Sayu +/* + This folder is full of #define statements. They are similar to constants, + but must come before any code that references them, and they do not take up + memory the way constants do. + + The values in this folder are NOT options. They are not for hosts to play with. + Some of the values are arbitrary and only need to be different from similar constants; + for example, the genetic mutation numbers in genetics.dm mean nothing, but MUST be distinct. + + It is wise not to touch them unless you understand what they do, where they're used, + and most importantly, + how to undo your changes if you screw it up. + - Sayu */ \ No newline at end of file diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index c43a558444e..65017becff3 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -1,37 +1,37 @@ -//A set of constants used to determine which type of mute an admin wishes to apply: -//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) -//Therefore there needs to be a gap between the flags for the automute flags -#define MUTE_IC 1 -#define MUTE_OOC 2 -#define MUTE_PRAY 4 -#define MUTE_ADMINHELP 8 -#define MUTE_DEADCHAT 16 -#define MUTE_ALL 31 - -//Some constants for DB_Ban -#define BANTYPE_PERMA 1 -#define BANTYPE_TEMP 2 -#define BANTYPE_JOB_PERMA 3 -#define BANTYPE_JOB_TEMP 4 -#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. -#define BANTYPE_APPEARANCE 6 -#define BANTYPE_ADMIN_PERMA 7 -#define BANTYPE_ADMIN_TEMP 8 - -//Please don't edit these values without speaking to Errorage first ~Carn -//Admin Permissions -#define R_BUILDMODE 1 -#define R_ADMIN 2 -#define R_BAN 4 -#define R_FUN 8 -#define R_SERVER 16 -#define R_DEBUG 32 -#define R_POSSESS 64 -#define R_PERMISSIONS 128 -#define R_STEALTH 256 -#define R_REJUVINATE 512 -#define R_VAREDIT 1024 -#define R_SOUNDS 2048 -#define R_SPAWN 4096 - -#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. +//A set of constants used to determine which type of mute an admin wishes to apply: +//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) +//Therefore there needs to be a gap between the flags for the automute flags +#define MUTE_IC 1 +#define MUTE_OOC 2 +#define MUTE_PRAY 4 +#define MUTE_ADMINHELP 8 +#define MUTE_DEADCHAT 16 +#define MUTE_ALL 31 + +//Some constants for DB_Ban +#define BANTYPE_PERMA 1 +#define BANTYPE_TEMP 2 +#define BANTYPE_JOB_PERMA 3 +#define BANTYPE_JOB_TEMP 4 +#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. +#define BANTYPE_APPEARANCE 6 +#define BANTYPE_ADMIN_PERMA 7 +#define BANTYPE_ADMIN_TEMP 8 + +//Please don't edit these values without speaking to Errorage first ~Carn +//Admin Permissions +#define R_BUILDMODE 1 +#define R_ADMIN 2 +#define R_BAN 4 +#define R_FUN 8 +#define R_SERVER 16 +#define R_DEBUG 32 +#define R_POSSESS 64 +#define R_PERMISSIONS 128 +#define R_STEALTH 256 +#define R_REJUVINATE 512 +#define R_VAREDIT 1024 +#define R_SOUNDS 2048 +#define R_SPAWN 4096 + +#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 2f8b588ec2a..818f0ccc1a9 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -1,109 +1,109 @@ -#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) -#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) - -#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC -#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) -#define O2STANDARD 0.21 -#define N2STANDARD 0.79 -#define MOLES_O2STANDARD (MOLES_CELLSTANDARD*O2STANDARD) // O2 standard value (21%) -#define MOLES_N2STANDARD (MOLES_CELLSTANDARD*N2STANDARD) // N2 standard value (79%) - -#define GAS_O2 (1 << 0) -#define GAS_N2 (1 << 1) -#define GAS_PL (1 << 2) -#define GAS_CO2 (1 << 3) -#define GAS_N2O (1 << 4) - -//stuff you should probably leave well alone! -//ATMOS -#define CELL_VOLUME 2500 //liters in a cell -#define BREATH_VOLUME 0.5 //liters in a normal breath -#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile -#define HUMAN_NEEDED_OXYGEN (MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16) //Amount of air needed before pass out/suffocation commences -#define NORMPIPERATE 30 //pipe-insulation rate divisor -#define HEATPIPERATE 8 //heat-exch pipe insulation -#define FLOWFRAC 0.99 //fraction of gas transfered per process -#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking -#define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere -#define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) //Boom 3x3 base explosion -#define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) //+1 for each SCALE kPa aboe threshold -#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 //Minimum ratio of air that must move to/from a tile to suspend group processing -#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended -#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Either this must be active -#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously) -#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012 -#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 //Minimum temperature difference before group processing is suspended -#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 //Minimum temperature difference before the gas temperatures are just set to be equal -#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10 -#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200 -#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4 -#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0 -#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0 -#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.2 //a hack to partly simulate radiative heat -#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4 -#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now - //Must be between 0 and 1. Values closer to 1 equalize temperature faster - //Should not exceed 0.4 else strange heat flow occur -#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C -#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C -#define FIRE_SPREAD_RADIOSITY_SCALE 0.85 -#define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile -#define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile -#define FIRE_GROWTH_RATE 40000 //For small fires -#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C //Resistance to fire damage -#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Fire damage - //Plasma fire properties -#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C -#define PLASMA_UPPER_TEMPERATURE 1370+T0C -#define PLASMA_MINIMUM_OXYGEN_NEEDED 2 -#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30 -#define PLASMA_OXYGEN_FULLBURN 10 -#define MIN_PLASMA_DAMAGE 1 -#define MAX_PLASMA_DAMAGE 10 -#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible - -// Pressure limits. -#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define WARNING_HIGH_PRESSURE 325 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) -#define WARNING_LOW_PRESSURE 50 //This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) -#define HAZARD_LOW_PRESSURE 20 //This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) - -#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. -#define BODYTEMP_AUTORECOVERY_DIVISOR 12 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define BODYTEMP_AUTORECOVERY_MINIMUM 10 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50. -#define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. -#define BODYTEMP_HEAT_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. -#define BODYTEMP_COOLING_MAX 30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area. -#define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, when in a hot area. - -#define BODYTEMP_HEAT_DAMAGE_LIMIT 360.15 // The limit the human body can take before it starts taking damage from heat. -#define BODYTEMP_COLD_DAMAGE_LIMIT 260.15 // The limit the human body can take before it starts taking damage from coldness. - -#define SPACE_HELM_MIN_TEMP_PROTECT 2.0 //what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0. -#define SPACE_HELM_MAX_TEMP_PROTECT 1500 //Thermal insulation works both ways /Malkevin -#define SPACE_SUIT_MIN_TEMP_PROTECT 2.0 //what min_cold_protection_temperature is set to for space-suit quality jumpsuits or suits. MUST NOT BE 0. -#define SPACE_SUIT_MAX_TEMP_PROTECT 1500 - -#define FIRE_SUIT_MIN_TEMP_PROTECT 60 //Cold protection for firesuits -#define FIRE_SUIT_MAX_TEMP_PROTECT 30000 //what max_heat_protection_temperature is set to for firesuit quality suits. MUST NOT BE 0. -#define FIRE_HELM_MIN_TEMP_PROTECT 60 //Cold protection for fire helmets -#define FIRE_HELM_MAX_TEMP_PROTECT 30000 //for fire helmet quality items (red and white hardhats) - -#define HELMET_MIN_TEMP_PROTECT 160 //For normal helmets -#define HELMET_MAX_TEMP_PROTECT 600 //For normal helmets -#define ARMOR_MIN_TEMP_PROTECT 160 //For armor -#define ARMOR_MAX_TEMP_PROTECT 600 //For armor - -#define GLOVES_MIN_TEMP_PROTECT 2.0 //For some gloves (black and) -#define GLOVES_MAX_TEMP_PROTECT 1500 //For some gloves -#define SHOES_MIN_TEMP_PROTECT 2.0 //For gloves -#define SHOES_MAX_TEMP_PROTECT 1500 //For gloves - - -#define PRESSURE_DAMAGE_COEFFICIENT 4 //The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE -#define MAX_HIGH_PRESSURE_DAMAGE 4 //This used to be 20... I got this much random rage for some retarded decision by polymorph?! Polymorph now lies in a pool of blood with a katana jammed in his spleen. ~Errorage --PS: The katana did less than 20 damage to him :( -#define LOW_PRESSURE_DAMAGE 2 //The amounb of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value). - -#define PRESSURE_SUIT_REDUCTION_COEFFICIENT 0.8 //This is how much (percentual) a suit with the flag STOPSPRESSUREDMAGE reduces pressure. -#define PRESSURE_HEAD_REDUCTION_COEFFICIENT 0.4 //This is how much (percentual) a helmet/hat with the flag STOPSPRESSUREDMAGE reduces pressure. - +#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) +#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) + +#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC +#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) +#define O2STANDARD 0.21 +#define N2STANDARD 0.79 +#define MOLES_O2STANDARD (MOLES_CELLSTANDARD*O2STANDARD) // O2 standard value (21%) +#define MOLES_N2STANDARD (MOLES_CELLSTANDARD*N2STANDARD) // N2 standard value (79%) + +#define GAS_O2 (1 << 0) +#define GAS_N2 (1 << 1) +#define GAS_PL (1 << 2) +#define GAS_CO2 (1 << 3) +#define GAS_N2O (1 << 4) + +//stuff you should probably leave well alone! +//ATMOS +#define CELL_VOLUME 2500 //liters in a cell +#define BREATH_VOLUME 0.5 //liters in a normal breath +#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile +#define HUMAN_NEEDED_OXYGEN (MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16) //Amount of air needed before pass out/suffocation commences +#define NORMPIPERATE 30 //pipe-insulation rate divisor +#define HEATPIPERATE 8 //heat-exch pipe insulation +#define FLOWFRAC 0.99 //fraction of gas transfered per process +#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking +#define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere +#define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) //Boom 3x3 base explosion +#define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) //+1 for each SCALE kPa aboe threshold +#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 //Minimum ratio of air that must move to/from a tile to suspend group processing +#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended +#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Either this must be active +#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously) +#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012 +#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 //Minimum temperature difference before group processing is suspended +#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 //Minimum temperature difference before the gas temperatures are just set to be equal +#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10 +#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200 +#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4 +#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0 +#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0 +#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.2 //a hack to partly simulate radiative heat +#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4 +#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now + //Must be between 0 and 1. Values closer to 1 equalize temperature faster + //Should not exceed 0.4 else strange heat flow occur +#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C +#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C +#define FIRE_SPREAD_RADIOSITY_SCALE 0.85 +#define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile +#define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile +#define FIRE_GROWTH_RATE 40000 //For small fires +#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C //Resistance to fire damage +#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Fire damage + //Plasma fire properties +#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C +#define PLASMA_UPPER_TEMPERATURE 1370+T0C +#define PLASMA_MINIMUM_OXYGEN_NEEDED 2 +#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30 +#define PLASMA_OXYGEN_FULLBURN 10 +#define MIN_PLASMA_DAMAGE 1 +#define MAX_PLASMA_DAMAGE 10 +#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible + +// Pressure limits. +#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) +#define WARNING_HIGH_PRESSURE 325 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) +#define WARNING_LOW_PRESSURE 50 //This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) +#define HAZARD_LOW_PRESSURE 20 //This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) + +#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. +#define BODYTEMP_AUTORECOVERY_DIVISOR 12 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. +#define BODYTEMP_AUTORECOVERY_MINIMUM 10 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50. +#define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. +#define BODYTEMP_HEAT_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. +#define BODYTEMP_COOLING_MAX 30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area. +#define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, when in a hot area. + +#define BODYTEMP_HEAT_DAMAGE_LIMIT 360.15 // The limit the human body can take before it starts taking damage from heat. +#define BODYTEMP_COLD_DAMAGE_LIMIT 260.15 // The limit the human body can take before it starts taking damage from coldness. + +#define SPACE_HELM_MIN_TEMP_PROTECT 2.0 //what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0. +#define SPACE_HELM_MAX_TEMP_PROTECT 1500 //Thermal insulation works both ways /Malkevin +#define SPACE_SUIT_MIN_TEMP_PROTECT 2.0 //what min_cold_protection_temperature is set to for space-suit quality jumpsuits or suits. MUST NOT BE 0. +#define SPACE_SUIT_MAX_TEMP_PROTECT 1500 + +#define FIRE_SUIT_MIN_TEMP_PROTECT 60 //Cold protection for firesuits +#define FIRE_SUIT_MAX_TEMP_PROTECT 30000 //what max_heat_protection_temperature is set to for firesuit quality suits. MUST NOT BE 0. +#define FIRE_HELM_MIN_TEMP_PROTECT 60 //Cold protection for fire helmets +#define FIRE_HELM_MAX_TEMP_PROTECT 30000 //for fire helmet quality items (red and white hardhats) + +#define HELMET_MIN_TEMP_PROTECT 160 //For normal helmets +#define HELMET_MAX_TEMP_PROTECT 600 //For normal helmets +#define ARMOR_MIN_TEMP_PROTECT 160 //For armor +#define ARMOR_MAX_TEMP_PROTECT 600 //For armor + +#define GLOVES_MIN_TEMP_PROTECT 2.0 //For some gloves (black and) +#define GLOVES_MAX_TEMP_PROTECT 1500 //For some gloves +#define SHOES_MIN_TEMP_PROTECT 2.0 //For gloves +#define SHOES_MAX_TEMP_PROTECT 1500 //For gloves + + +#define PRESSURE_DAMAGE_COEFFICIENT 4 //The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE +#define MAX_HIGH_PRESSURE_DAMAGE 4 //This used to be 20... I got this much random rage for some retarded decision by polymorph?! Polymorph now lies in a pool of blood with a katana jammed in his spleen. ~Errorage --PS: The katana did less than 20 damage to him :( +#define LOW_PRESSURE_DAMAGE 2 //The amounb of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value). + +#define PRESSURE_SUIT_REDUCTION_COEFFICIENT 0.8 //This is how much (percentual) a suit with the flag STOPSPRESSUREDMAGE reduces pressure. +#define PRESSURE_HEAD_REDUCTION_COEFFICIENT 0.4 //This is how much (percentual) a helmet/hat with the flag STOPSPRESSUREDMAGE reduces pressure. + diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index 726cfa90873..c11a9acb068 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -1,82 +1,82 @@ -//ITEM INVENTORY SLOT BITMASKS -#define SLOT_OCLOTHING 1 -#define SLOT_ICLOTHING 2 -#define SLOT_GLOVES 4 -#define SLOT_EYES 8 -#define SLOT_EARS 16 -#define SLOT_MASK 32 -#define SLOT_HEAD 64 -#define SLOT_FEET 128 -#define SLOT_ID 256 -#define SLOT_BELT 512 -#define SLOT_BACK 1024 -#define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets. -#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets. - -//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. -#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!! - -#define HIDEMASK 1 //APPLIES ONLY TO HELMETS/MASKS!! -#define HIDEEARS 2 //APPLIES ONLY TO HELMETS/MASKS!! (ears means headsets and such) -#define HIDEEYES 4 //APPLIES ONLY TO HELMETS/MASKS!! (eyes means glasses) -#define HIDEFACE 8 //APPLIES ONLY TO HELMETS/MASKS!! Dictates whether we appear as unknown. - -//slots -#define slot_back 1 -#define slot_wear_mask 2 -#define slot_handcuffed 3 -#define slot_l_hand 4 -#define slot_r_hand 5 -#define slot_belt 6 -#define slot_wear_id 7 -#define slot_ears 8 -#define slot_glasses 9 -#define slot_gloves 10 -#define slot_head 11 -#define slot_shoes 12 -#define slot_wear_suit 13 -#define slot_w_uniform 14 -#define slot_l_store 15 -#define slot_r_store 16 -#define slot_s_store 17 -#define slot_in_backpack 18 -#define slot_legcuffed 19 - -//Cant seem to find a mob bitflags area other than the powers one - -// bitflags for clothing parts - also used for limbs -#define HEAD 1 -#define CHEST 2 -#define GROIN 4 -#define LEG_LEFT 8 -#define LEG_RIGHT 16 -#define LEGS 24 -#define FOOT_LEFT 32 -#define FOOT_RIGHT 64 -#define FEET 96 -#define ARM_LEFT 128 -#define ARM_RIGHT 256 -#define ARMS 384 -#define HAND_LEFT 512 -#define HAND_RIGHT 1024 -#define HANDS 1536 -#define FULL_BODY 2047 - -// bitflags for the percentual amount of protection a piece of clothing which covers the body part offers. -// Used with human/proc/get_heat_protection() and human/proc/get_cold_protection() -// The values here should add up to 1. -// Hands and feet have 2.5%, arms and legs 7.5%, each of the torso parts has 15% and the head has 30% -#define THERMAL_PROTECTION_HEAD 0.3 -#define THERMAL_PROTECTION_CHEST 0.15 -#define THERMAL_PROTECTION_GROIN 0.15 -#define THERMAL_PROTECTION_LEG_LEFT 0.075 -#define THERMAL_PROTECTION_LEG_RIGHT 0.075 -#define THERMAL_PROTECTION_FOOT_LEFT 0.025 -#define THERMAL_PROTECTION_FOOT_RIGHT 0.025 -#define THERMAL_PROTECTION_ARM_LEFT 0.075 -#define THERMAL_PROTECTION_ARM_RIGHT 0.075 -#define THERMAL_PROTECTION_HAND_LEFT 0.025 -#define THERMAL_PROTECTION_HAND_RIGHT 0.025 +//ITEM INVENTORY SLOT BITMASKS +#define SLOT_OCLOTHING 1 +#define SLOT_ICLOTHING 2 +#define SLOT_GLOVES 4 +#define SLOT_EYES 8 +#define SLOT_EARS 16 +#define SLOT_MASK 32 +#define SLOT_HEAD 64 +#define SLOT_FEET 128 +#define SLOT_ID 256 +#define SLOT_BELT 512 +#define SLOT_BACK 1024 +#define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets. +#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets. + +//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. +#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!! + +#define HIDEMASK 1 //APPLIES ONLY TO HELMETS/MASKS!! +#define HIDEEARS 2 //APPLIES ONLY TO HELMETS/MASKS!! (ears means headsets and such) +#define HIDEEYES 4 //APPLIES ONLY TO HELMETS/MASKS!! (eyes means glasses) +#define HIDEFACE 8 //APPLIES ONLY TO HELMETS/MASKS!! Dictates whether we appear as unknown. + +//slots +#define slot_back 1 +#define slot_wear_mask 2 +#define slot_handcuffed 3 +#define slot_l_hand 4 +#define slot_r_hand 5 +#define slot_belt 6 +#define slot_wear_id 7 +#define slot_ears 8 +#define slot_glasses 9 +#define slot_gloves 10 +#define slot_head 11 +#define slot_shoes 12 +#define slot_wear_suit 13 +#define slot_w_uniform 14 +#define slot_l_store 15 +#define slot_r_store 16 +#define slot_s_store 17 +#define slot_in_backpack 18 +#define slot_legcuffed 19 + +//Cant seem to find a mob bitflags area other than the powers one + +// bitflags for clothing parts - also used for limbs +#define HEAD 1 +#define CHEST 2 +#define GROIN 4 +#define LEG_LEFT 8 +#define LEG_RIGHT 16 +#define LEGS 24 +#define FOOT_LEFT 32 +#define FOOT_RIGHT 64 +#define FEET 96 +#define ARM_LEFT 128 +#define ARM_RIGHT 256 +#define ARMS 384 +#define HAND_LEFT 512 +#define HAND_RIGHT 1024 +#define HANDS 1536 +#define FULL_BODY 2047 + +// bitflags for the percentual amount of protection a piece of clothing which covers the body part offers. +// Used with human/proc/get_heat_protection() and human/proc/get_cold_protection() +// The values here should add up to 1. +// Hands and feet have 2.5%, arms and legs 7.5%, each of the torso parts has 15% and the head has 30% +#define THERMAL_PROTECTION_HEAD 0.3 +#define THERMAL_PROTECTION_CHEST 0.15 +#define THERMAL_PROTECTION_GROIN 0.15 +#define THERMAL_PROTECTION_LEG_LEFT 0.075 +#define THERMAL_PROTECTION_LEG_RIGHT 0.075 +#define THERMAL_PROTECTION_FOOT_LEFT 0.025 +#define THERMAL_PROTECTION_FOOT_RIGHT 0.025 +#define THERMAL_PROTECTION_ARM_LEFT 0.075 +#define THERMAL_PROTECTION_ARM_RIGHT 0.075 +#define THERMAL_PROTECTION_HAND_LEFT 0.025 +#define THERMAL_PROTECTION_HAND_RIGHT 0.025 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 0ed277b791d..02a09faf559 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -1,47 +1,47 @@ -//Damage things //TODO: merge these down to reduce on defines -//Way to waste perfectly good damagetype names (BRUTE) on this... If you were really worried about case sensitivity, you could have just used lowertext(damagetype) in the proc... -#define BRUTE "brute" -#define BURN "fire" -#define TOX "tox" -#define OXY "oxy" -#define CLONE "clone" -#define STAMINA "stamina" - -#define STUN "stun" -#define WEAKEN "weaken" -#define PARALYZE "paralize" -#define IRRADIATE "irradiate" -#define STUTTER "stutter" -#define EYE_BLUR "eye_blur" -#define DROWSY "drowsy" - -//I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches -#define BRUTELOSS 1 -#define FIRELOSS 2 -#define TOXLOSS 4 -#define OXYLOSS 8 - -//Bitflags defining which status effects could be or are inflicted on a mob -#define CANSTUN 1 -#define CANWEAKEN 2 -#define CANPARALYSE 4 -#define CANPUSH 8 -#define GODMODE 4096 -#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath -#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system -#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. - - -//Grab levels -#define GRAB_PASSIVE 1 -#define GRAB_AGGRESSIVE 2 -#define GRAB_NECK 3 -#define GRAB_UPGRADING 4 -#define GRAB_KILL 5 - -#define HOSTILE_STANCE_IDLE 1 -//#define HOSTILE_STANCE_ALERT 2 //Was only used by bears -#define HOSTILE_STANCE_ATTACK 3 -#define HOSTILE_STANCE_ATTACKING 4 -//#define HOSTILE_STANCE_TIRED 5 //Was also only used by bears - +//Damage things //TODO: merge these down to reduce on defines +//Way to waste perfectly good damagetype names (BRUTE) on this... If you were really worried about case sensitivity, you could have just used lowertext(damagetype) in the proc... +#define BRUTE "brute" +#define BURN "fire" +#define TOX "tox" +#define OXY "oxy" +#define CLONE "clone" +#define STAMINA "stamina" + +#define STUN "stun" +#define WEAKEN "weaken" +#define PARALYZE "paralize" +#define IRRADIATE "irradiate" +#define STUTTER "stutter" +#define EYE_BLUR "eye_blur" +#define DROWSY "drowsy" + +//I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches +#define BRUTELOSS 1 +#define FIRELOSS 2 +#define TOXLOSS 4 +#define OXYLOSS 8 + +//Bitflags defining which status effects could be or are inflicted on a mob +#define CANSTUN 1 +#define CANWEAKEN 2 +#define CANPARALYSE 4 +#define CANPUSH 8 +#define GODMODE 4096 +#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath +#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system +#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. + + +//Grab levels +#define GRAB_PASSIVE 1 +#define GRAB_AGGRESSIVE 2 +#define GRAB_NECK 3 +#define GRAB_UPGRADING 4 +#define GRAB_KILL 5 + +#define HOSTILE_STANCE_IDLE 1 +//#define HOSTILE_STANCE_ALERT 2 //Was only used by bears +#define HOSTILE_STANCE_ATTACK 3 +#define HOSTILE_STANCE_ATTACKING 4 +//#define HOSTILE_STANCE_TIRED 5 //Was also only used by bears + diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 2a0c0a8c003..528caa875aa 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -1,49 +1,49 @@ -/* - These defines are specific to the atom/flags bitmask -*/ -//FLAGS BITMASK -#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere -//To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. - -#define NODROP 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. -#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define MASKINTERNALS 8 // mask allows internals -//#define SUITSPACE 8 // suit protects against space -#define USEDELAY 16 // For adding extra delay to heavy items, not currently used -#define NOSHIELD 32 // weapon not affected by shield -#define CONDUCT 64 // conducts electricity (metal etc.) -#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way -#define FPRINT 256 // takes a fingerprint -#define ON_BORDER 512 // item has priority to check when entering or leaving - - -#define GLASSESCOVERSEYES 1024 -#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags -#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes -#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head -#define HEADCOVERSMOUTH 2048 - -#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc (NOTE: flag shared with THICKMATERIAL for external suits and helmet) - -#define OPENCONTAINER 4096 // is an open container for chemistry purposes - -// BLOCK_GAS_SMOKE_EFFECT only used in masks at the moment. -#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with THICKMATERIAL) -#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) - -#define NOREACT 16384 //Reagents dont' react inside this container. - -#define BLOCKHAIR 32768 // temporarily removes the user's hair icon - -//turf-only flags -#define NOJAUNT 1 - -/* - These defines are used specifically with the atom/pass_flags bitmask - the atom/checkpass() proc uses them (tables will call movable atom checkpass(PASSTABLE) for example) -*/ -//flags for pass_flags -#define PASSTABLE 1 -#define PASSGLASS 2 -#define PASSGRILLE 4 +/* + These defines are specific to the atom/flags bitmask +*/ +//FLAGS BITMASK +#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere +//To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. + +#define NODROP 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. +#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() +#define MASKINTERNALS 8 // mask allows internals +//#define SUITSPACE 8 // suit protects against space +#define USEDELAY 16 // For adding extra delay to heavy items, not currently used +#define NOSHIELD 32 // weapon not affected by shield +#define CONDUCT 64 // conducts electricity (metal etc.) +#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way +#define FPRINT 256 // takes a fingerprint +#define ON_BORDER 512 // item has priority to check when entering or leaving + + +#define GLASSESCOVERSEYES 1024 +#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags +#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes +#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head +#define HEADCOVERSMOUTH 2048 + +#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc (NOTE: flag shared with THICKMATERIAL for external suits and helmet) + +#define OPENCONTAINER 4096 // is an open container for chemistry purposes + +// BLOCK_GAS_SMOKE_EFFECT only used in masks at the moment. +#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with THICKMATERIAL) +#define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) + +#define NOREACT 16384 //Reagents dont' react inside this container. + +#define BLOCKHAIR 32768 // temporarily removes the user's hair icon + +//turf-only flags +#define NOJAUNT 1 + +/* + These defines are used specifically with the atom/pass_flags bitmask + the atom/checkpass() proc uses them (tables will call movable atom checkpass(PASSTABLE) for example) +*/ +//flags for pass_flags +#define PASSTABLE 1 +#define PASSGLASS 2 +#define PASSGRILLE 4 #define PASSBLOB 8 \ No newline at end of file diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index cee214b576f..64458a74709 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -1,83 +1,83 @@ - -//bitflags for mutations - // Extra powers: -#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM (1<<11) // supersonic screaming (25%) -#define EXPLOSIVE (1<<12) // exploding on-demand (15%) -#define REGENERATION (1<<13) // superhuman regeneration (30%) -#define REPROCESSOR (1<<14) // eat anything (50%) -#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%) -#define PHASING (1<<16) // ability to phase through walls (40%) -#define SHIELD (1<<17) // shielding from all projectile attacks (30%) -#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%) - - -// String identifiers for associative list lookup -// mob/var/list/mutations - - // Generic mutations: -#define TK 1 -#define COLD_RESISTANCE 2 -#define XRAY 3 -#define HULK 4 -#define CLUMSY 5 -#define FAT 6 -#define HUSK 7 -#define NOCLONE 8 - - - // Extra powers: -#define LASER 9 // harm intent - click anywhere to shoot lasers from eyes -#define HEAL 10 // healing people with hands -#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM 12 // supersonic screaming (25%) -#define EXPLOSIVE 13 // exploding on-demand (15%) -#define REGENERATION 14 // superhuman regeneration (30%) -#define REPROCESSOR 15 // eat anything (50%) -#define SHAPESHIFTING 16 // take on the appearance of anything (40%) -#define PHASING 17 // ability to phase through walls (40%) -#define SHIELD 18 // shielding from all projectile attacks (30%) -#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY 20 // ability to shoot electric attacks (15%) - -//disabilities -#define NEARSIGHTED 1 -#define EPILEPSY 2 -#define COUGHING 4 -#define TOURETTES 8 -#define NERVOUS 16 - -//sdisabilities -#define BLIND 1 -#define MUTE 2 -#define DEAF 4 - -//DNA - Because fuck you and your magic numbers being all over the codebase. -#define DNA_BLOCK_SIZE 3 - -#define DNA_UNI_IDENTITY_BLOCKS 7 -#define DNA_HAIR_COLOR_BLOCK 1 -#define DNA_FACIAL_HAIR_COLOR_BLOCK 2 -#define DNA_SKIN_TONE_BLOCK 3 -#define DNA_EYE_COLOR_BLOCK 4 -#define DNA_GENDER_BLOCK 5 -#define DNA_FACIAL_HAIR_STYLE_BLOCK 6 -#define DNA_HAIR_STYLE_BLOCK 7 - -#define DNA_STRUC_ENZYMES_BLOCKS 14 -#define DNA_UNIQUE_ENZYMES_LEN 32 - -//Transformation proc stuff -#define TR_KEEPITEMS 1 -#define TR_KEEPVIRUS 2 -#define TR_KEEPDAMAGE 4 -#define TR_HASHNAME 8 // hashing names (e.g. monkey(e34f)) (only in monkeyize) -#define TR_KEEPIMPLANTS 16 -#define TR_KEEPSE 32 // changelings shouldn't edit the DNA's SE when turning into a monkey -#define TR_DEFAULTMSG 64 -#define TR_KEEPSRC 128 - -//Organ stuff, It's here because "Genetics" is the most relevant file for organs -#define ORGAN_ORGANIC 1 + +//bitflags for mutations + // Extra powers: +#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%) +#define SCREAM (1<<11) // supersonic screaming (25%) +#define EXPLOSIVE (1<<12) // exploding on-demand (15%) +#define REGENERATION (1<<13) // superhuman regeneration (30%) +#define REPROCESSOR (1<<14) // eat anything (50%) +#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%) +#define PHASING (1<<16) // ability to phase through walls (40%) +#define SHIELD (1<<17) // shielding from all projectile attacks (30%) +#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) +#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%) + + +// String identifiers for associative list lookup +// mob/var/list/mutations + + // Generic mutations: +#define TK 1 +#define COLD_RESISTANCE 2 +#define XRAY 3 +#define HULK 4 +#define CLUMSY 5 +#define FAT 6 +#define HUSK 7 +#define NOCLONE 8 + + + // Extra powers: +#define LASER 9 // harm intent - click anywhere to shoot lasers from eyes +#define HEAL 10 // healing people with hands +#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%) +#define SCREAM 12 // supersonic screaming (25%) +#define EXPLOSIVE 13 // exploding on-demand (15%) +#define REGENERATION 14 // superhuman regeneration (30%) +#define REPROCESSOR 15 // eat anything (50%) +#define SHAPESHIFTING 16 // take on the appearance of anything (40%) +#define PHASING 17 // ability to phase through walls (40%) +#define SHIELD 18 // shielding from all projectile attacks (30%) +#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) +#define ELECTRICITY 20 // ability to shoot electric attacks (15%) + +//disabilities +#define NEARSIGHTED 1 +#define EPILEPSY 2 +#define COUGHING 4 +#define TOURETTES 8 +#define NERVOUS 16 + +//sdisabilities +#define BLIND 1 +#define MUTE 2 +#define DEAF 4 + +//DNA - Because fuck you and your magic numbers being all over the codebase. +#define DNA_BLOCK_SIZE 3 + +#define DNA_UNI_IDENTITY_BLOCKS 7 +#define DNA_HAIR_COLOR_BLOCK 1 +#define DNA_FACIAL_HAIR_COLOR_BLOCK 2 +#define DNA_SKIN_TONE_BLOCK 3 +#define DNA_EYE_COLOR_BLOCK 4 +#define DNA_GENDER_BLOCK 5 +#define DNA_FACIAL_HAIR_STYLE_BLOCK 6 +#define DNA_HAIR_STYLE_BLOCK 7 + +#define DNA_STRUC_ENZYMES_BLOCKS 14 +#define DNA_UNIQUE_ENZYMES_LEN 32 + +//Transformation proc stuff +#define TR_KEEPITEMS 1 +#define TR_KEEPVIRUS 2 +#define TR_KEEPDAMAGE 4 +#define TR_HASHNAME 8 // hashing names (e.g. monkey(e34f)) (only in monkeyize) +#define TR_KEEPIMPLANTS 16 +#define TR_KEEPSE 32 // changelings shouldn't edit the DNA's SE when turning into a monkey +#define TR_DEFAULTMSG 64 +#define TR_KEEPSRC 128 + +//Organ stuff, It's here because "Genetics" is the most relevant file for organs +#define ORGAN_ORGANIC 1 #define ORGAN_ROBOTIC 2 \ No newline at end of file diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index f66a8d7d7c9..939e1e6e3ee 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -1,13 +1,13 @@ -// channel numbers for power -#define EQUIP 1 -#define LIGHT 2 -#define ENVIRON 3 -#define TOTAL 4 //for total power used only - - -//bitflags for door switches. -#define OPEN 1 -#define IDSCAN 2 -#define BOLTS 4 -#define SHOCK 8 -#define SAFE 16 +// channel numbers for power +#define EQUIP 1 +#define LIGHT 2 +#define ENVIRON 3 +#define TOTAL 4 //for total power used only + + +//bitflags for door switches. +#define OPEN 1 +#define IDSCAN 2 +#define BOLTS 4 +#define SHOCK 8 +#define SAFE 16 diff --git a/code/__DEFINES/math.dm b/code/__DEFINES/math.dm index aec3029ab10..0f11b3d9eea 100644 --- a/code/__DEFINES/math.dm +++ b/code/__DEFINES/math.dm @@ -1,11 +1,11 @@ -#define PI 3.1415 -#define SPEED_OF_LIGHT 3e8 //not exact but hey! -#define SPEED_OF_LIGHT_SQ 9e+16 -#define INFINITY 1e31 //closer then enough - -//atmos -#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) -#define ONE_ATMOSPHERE 101.325 //kPa -#define T0C 273.15 // 0degC -#define T20C 293.15 // 20degC -#define TCMB 2.7 // -270.3degC +#define PI 3.1415 +#define SPEED_OF_LIGHT 3e8 //not exact but hey! +#define SPEED_OF_LIGHT_SQ 9e+16 +#define INFINITY 1e31 //closer then enough + +//atmos +#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) +#define ONE_ATMOSPHERE 101.325 //kPa +#define T0C 273.15 // 0degC +#define T20C 293.15 // 20degC +#define TCMB 2.7 // -270.3degC diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 4a52da1dfaf..62a0fb4710c 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -1,29 +1,29 @@ -#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day - -//Security levels -#define SEC_LEVEL_GREEN 0 -#define SEC_LEVEL_BLUE 1 -#define SEC_LEVEL_RED 2 -#define SEC_LEVEL_DELTA 3 - -//some arbitrary defines to be used by self-pruning global lists. (see master_controller) -#define PROCESS_KILL 26 //Used to trigger removal from a processing list - -#define MANIFEST_ERROR_NAME 1 -#define MANIFEST_ERROR_COUNT 2 -#define MANIFEST_ERROR_ITEM 4 - -#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level - - - -//HUD styles. Please ensure HUD_VERSIONS is the same as the maximum index. Index order defines how they are cycled in F12. -#define HUD_STYLE_STANDARD 1 -#define HUD_STYLE_REDUCED 2 -#define HUD_STYLE_NOHUD 3 - - -#define HUD_VERSIONS 3 //used in show_hud() -//1 = standard hud -//2 = reduced hud (just hands and intent switcher) -//3 = no hud (for screenshots) +#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day + +//Security levels +#define SEC_LEVEL_GREEN 0 +#define SEC_LEVEL_BLUE 1 +#define SEC_LEVEL_RED 2 +#define SEC_LEVEL_DELTA 3 + +//some arbitrary defines to be used by self-pruning global lists. (see master_controller) +#define PROCESS_KILL 26 //Used to trigger removal from a processing list + +#define MANIFEST_ERROR_NAME 1 +#define MANIFEST_ERROR_COUNT 2 +#define MANIFEST_ERROR_ITEM 4 + +#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level + + + +//HUD styles. Please ensure HUD_VERSIONS is the same as the maximum index. Index order defines how they are cycled in F12. +#define HUD_STYLE_STANDARD 1 +#define HUD_STYLE_REDUCED 2 +#define HUD_STYLE_NOHUD 3 + + +#define HUD_VERSIONS 3 //used in show_hud() +//1 = standard hud +//2 = reduced hud (just hands and intent switcher) +//3 = no hud (for screenshots) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 455dfebc30c..d1ae438525c 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -1,27 +1,27 @@ - -//Preference toggles -#define SOUND_ADMINHELP 1 -#define SOUND_MIDI 2 -#define SOUND_AMBIENCE 4 -#define SOUND_LOBBY 8 -#define CHAT_OOC 16 -#define CHAT_DEAD 32 -#define CHAT_GHOSTEARS 64 -#define CHAT_GHOSTSIGHT 128 -#define CHAT_PRAYER 256 -#define CHAT_RADIO 512 -#define MEMBER_PUBLIC 1024 - -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC) - -#define BE_TRAITOR 1 -#define BE_OPERATIVE 2 -#define BE_CHANGELING 4 -#define BE_WIZARD 8 -#define BE_MALF 16 -#define BE_REV 32 -#define BE_ALIEN 64 -#define BE_PAI 128 -#define BE_CULTIST 256 -#define BE_BLOB 512 -#define BE_NINJA 1024 + +//Preference toggles +#define SOUND_ADMINHELP 1 +#define SOUND_MIDI 2 +#define SOUND_AMBIENCE 4 +#define SOUND_LOBBY 8 +#define CHAT_OOC 16 +#define CHAT_DEAD 32 +#define CHAT_GHOSTEARS 64 +#define CHAT_GHOSTSIGHT 128 +#define CHAT_PRAYER 256 +#define CHAT_RADIO 512 +#define MEMBER_PUBLIC 1024 + +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC) + +#define BE_TRAITOR 1 +#define BE_OPERATIVE 2 +#define BE_CHANGELING 4 +#define BE_WIZARD 8 +#define BE_MALF 16 +#define BE_REV 32 +#define BE_ALIEN 64 +#define BE_PAI 128 +#define BE_CULTIST 256 +#define BE_BLOB 512 +#define BE_NINJA 1024 diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm index 902a49b422c..6d8865816df 100644 --- a/code/__DEFINES/sight.dm +++ b/code/__DEFINES/sight.dm @@ -1,32 +1,32 @@ - -#define SEE_INVISIBLE_MINIMUM 5 - -#define SEE_INVISIBLE_OBSERVER_NOLIGHTING 15 - -#define INVISIBILITY_LIGHTING 20 - -#define SEE_INVISIBLE_LIVING 25 - -#define SEE_INVISIBLE_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. -#define INVISIBILITY_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. - -#define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. -#define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. - -#define INVISIBILITY_OBSERVER 60 -#define SEE_INVISIBLE_OBSERVER 60 - -#define INVISIBILITY_MAXIMUM 100 - -#define BORGMESON 1 -#define BORGTHERM 2 -#define BORGXRAY 4 - -// for secHUDs and medHUDs and variants. The number is the location of the image on the list hud_list of humans. -#define HEALTH_HUD 1 // dead, alive, sick, health status -#define STATUS_HUD 2 // a simple line rounding the mob's number health -#define ID_HUD 3 // the job asigned to your ID -#define WANTED_HUD 4 // wanted, released, parroled, security status -#define IMPLOYAL_HUD 5 // loyality implant -#define IMPCHEM_HUD 6 // chemical implant -#define IMPTRACK_HUD 7 // tracking implant + +#define SEE_INVISIBLE_MINIMUM 5 + +#define SEE_INVISIBLE_OBSERVER_NOLIGHTING 15 + +#define INVISIBILITY_LIGHTING 20 + +#define SEE_INVISIBLE_LIVING 25 + +#define SEE_INVISIBLE_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. +#define INVISIBILITY_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. + +#define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. +#define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. + +#define INVISIBILITY_OBSERVER 60 +#define SEE_INVISIBLE_OBSERVER 60 + +#define INVISIBILITY_MAXIMUM 100 + +#define BORGMESON 1 +#define BORGTHERM 2 +#define BORGXRAY 4 + +// for secHUDs and medHUDs and variants. The number is the location of the image on the list hud_list of humans. +#define HEALTH_HUD 1 // dead, alive, sick, health status +#define STATUS_HUD 2 // a simple line rounding the mob's number health +#define ID_HUD 3 // the job asigned to your ID +#define WANTED_HUD 4 // wanted, released, parroled, security status +#define IMPLOYAL_HUD 5 // loyality implant +#define IMPCHEM_HUD 6 // chemical implant +#define IMPTRACK_HUD 7 // tracking implant diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index f3114a18245..816da605d36 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -1,15 +1,15 @@ -/* - Used with the various stat variables (mob, machines) -*/ - -//mob/var/stat things -#define CONSCIOUS 0 -#define UNCONSCIOUS 1 -#define DEAD 2 - -// bitflags for machine stat variable -#define BROKEN 1 -#define NOPOWER 2 -#define POWEROFF 4 // tbd -#define MAINT 8 // under maintaince -#define EMPED 16 // temporary broken by EMP pulse +/* + Used with the various stat variables (mob, machines) +*/ + +//mob/var/stat things +#define CONSCIOUS 0 +#define UNCONSCIOUS 1 +#define DEAD 2 + +// bitflags for machine stat variable +#define BROKEN 1 +#define NOPOWER 2 +#define POWEROFF 4 // tbd +#define MAINT 8 // under maintaince +#define EMPED 16 // temporary broken by EMP pulse diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 4914323883c..04e05b29ff1 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -1,389 +1,389 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/proc/get_area(O) - var/atom/location = O - var/i - for(i=1, i<=20, i++) - if(isarea(location)) - return location - else if (istype(location)) - location = location.loc - else - return null - return 0 - -/proc/get_area_master(O) - var/area/A = get_area(O) - if(A && A.master) - A = A.master - return A - -/proc/get_area_name(N) //get area by its name - for(var/area/A in world) - if(A.name == N) - return A - return 0 - -/proc/in_range(source, user) - if(get_dist(source, user) <= 1) - return 1 - - return 0 //not in range and not telekinetic - -// Like view but bypasses luminosity check - -/proc/hear(var/range, var/atom/source) - - var/lum = source.luminosity - source.luminosity = 6 - - var/list/heard = view(range, source) - source.luminosity = lum - - return heard - -/proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) - var/area/our_area = get_area_master(the_area) - for(var/C in living_mob_list) - if(!istype(C, check_type)) - continue - if(C == must_be_alone) - continue - if(our_area == get_area_master(C)) - return 0 - return 1 - - -//Magic constants obtained by using linear regression on right-angled triangles of sides 0=dy) return (k1*dx) + (k2*dy) //No sqrt or powers :) - else return (k2*dx) + (k1*dy) -#undef k1 -#undef k2 - -/proc/circlerange(center=usr,radius=3) - - var/turf/centerturf = get_turf(center) - var/list/turfs = new/list() - var/rsq = radius * (radius+0.5) - - for(var/atom/T in range(radius, centerturf)) - var/dx = T.x - centerturf.x - var/dy = T.y - centerturf.y - if(dx*dx + dy*dy <= rsq) - turfs += T - - //turfs += centerturf - return turfs - -/proc/circleview(center=usr,radius=3) - - var/turf/centerturf = get_turf(center) - var/list/atoms = new/list() - var/rsq = radius * (radius+0.5) - - for(var/atom/A in view(radius, centerturf)) - var/dx = A.x - centerturf.x - var/dy = A.y - centerturf.y - if(dx*dx + dy*dy <= rsq) - atoms += A - - //turfs += centerturf - return atoms - -/proc/get_dist_euclidian(atom/Loc1 as turf|mob|obj,atom/Loc2 as turf|mob|obj) - var/dx = Loc1.x - Loc2.x - var/dy = Loc1.y - Loc2.y - - var/dist = sqrt(dx**2 + dy**2) - - return dist - -/proc/circlerangeturfs(center=usr,radius=3) - - var/turf/centerturf = get_turf(center) - var/list/turfs = new/list() - var/rsq = radius * (radius+0.5) - - for(var/turf/T in range(radius, centerturf)) - var/dx = T.x - centerturf.x - var/dy = T.y - centerturf.y - if(dx*dx + dy*dy <= rsq) - turfs += T - return turfs - -/proc/circleviewturfs(center=usr,radius=3) //Is there even a diffrence between this proc and circlerangeturfs()? - - var/turf/centerturf = get_turf(center) - var/list/turfs = new/list() - var/rsq = radius * (radius+0.5) - - for(var/turf/T in view(radius, centerturf)) - var/dx = T.x - centerturf.x - var/dy = T.y - centerturf.y - if(dx*dx + dy*dy <= rsq) - turfs += T - return turfs - - - -//var/debug_mob = 0 - -// Better recursive loop, technically sort of not actually recursive cause that shit is retarded, enjoy. -//No need for a recursive limit either - - -proc/recursive_mob_check(var/atom/O,var/client_check=1,var/sight_check=1,var/include_radio=1) - - var/list/processing_list = list(O) - var/list/processed_list = list() - var/list/found_mobs = list() - - while(processing_list.len) - - var/atom/A = processing_list[1] - var/passed = 0 - - if(ismob(A)) - var/mob/A_tmp = A - passed=1 - - if(client_check && !A_tmp.client) - passed=0 - - if(sight_check && !isInSight(A_tmp, O)) - passed=0 - - else if(include_radio && istype(A, /obj/item/device/radio)) - passed=1 - - if(sight_check && !isInSight(A, O)) - passed=0 - - if(passed) - found_mobs |= A - - for(var/atom/B in A) - if(!(B in processed_list)) - processing_list |= B - - processing_list -= A - processed_list |= A - - return found_mobs - - -proc/get_mobs_in_view(var/R, var/atom/source) - // Returns a list of mobs in range of R from source. Used in radio and say code. - - var/turf/T = get_turf(source) - var/list/hear = list() - - if(!T) - return hear - - var/list/range = hear(R, T) - - for(var/atom/movable/A in range) - hear |= recursive_mob_check(A, 1, 0, 1) - - return hear - - - -/proc/get_mobs_in_radio_ranges(var/list/obj/item/device/radio/radios) - - set background = BACKGROUND_ENABLED - - . = list() - // Returns a list of mobs who can hear any of the radios given in @radios - var/list/speaker_coverage = list() - for(var/i = 1; i <= radios.len; i++) - var/obj/item/device/radio/R = radios[i] - if(R) - var/turf/speaker = get_turf(R) - if(speaker) - for(var/turf/T in hear(R.canhear_range,speaker)) - speaker_coverage[T] = T - - - // Try to find all the players who can hear the message - for(var/i = 1; i <= player_list.len; i++) - var/mob/M = player_list[i] - if(M) - var/turf/ear = get_turf(M) - if(ear) - if(speaker_coverage[ear]) - . |= M - return . - -#define SIGN(X) ((X<0)?-1:1) - -proc - inLineOfSight(X1,Y1,X2,Y2,Z=1,PX1=16.5,PY1=16.5,PX2=16.5,PY2=16.5) - var/turf/T - if(X1==X2) - if(Y1==Y2) - return 1 //Light cannot be blocked on same tile - else - var/s = SIGN(Y2-Y1) - Y1+=s - while(Y1!=Y2) - T=locate(X1,Y1,Z) - if(T.opacity) - return 0 - Y1+=s - else - var/m=(32*(Y2-Y1)+(PY2-PY1))/(32*(X2-X1)+(PX2-PX1)) - var/b=(Y1+PY1/32-0.015625)-m*(X1+PX1/32-0.015625) //In tiles - var/signX = SIGN(X2-X1) - var/signY = SIGN(Y2-Y1) - if(X1 abs (dx)) //slope is above 1:1 (move horizontally in a tie) - if(dy > 0) - return get_step(start, SOUTH) - else - return get_step(start, NORTH) - else - if(dx > 0) - return get_step(start, WEST) - else - return get_step(start, EAST) - -/proc/try_move_adjacent(atom/movable/AM) - var/turf/T = get_turf(AM) - for(var/direction in cardinal) - if(AM.Move(get_step(T, direction))) - break - -/proc/get_mob_by_key(var/key) - for(var/mob/M in mob_list) - if(M.ckey == lowertext(key)) - return M - return null - -// Will return a list of active candidates. It increases the buffer 5 times until it finds a candidate which is active within the buffer. - -/proc/get_candidates(be_special_flag=0, afk_bracket=3000) - var/list/candidates = list() - // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) - while(!candidates.len && afk_bracket < 6000) - for(var/mob/dead/observer/G in player_list) - if(G.client != null) - if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) - if(!G.client.is_afk(afk_bracket) && (G.client.prefs.be_special & be_special_flag)) - candidates += G.client - afk_bracket += 600 // Add a minute to the bracket, for every attempt - return candidates - -/proc/ScreenText(obj/O, maptext="", screen_loc="CENTER-7,CENTER-7", maptext_height=480, maptext_width=480) - if(!isobj(O)) O = new /obj/screen/text() - O.maptext = maptext - O.maptext_height = maptext_height - O.maptext_width = maptext_width - O.screen_loc = screen_loc - return O - -/proc/Show2Group4Delay(obj/O, list/group, delay=0) - if(!isobj(O)) return - if(!group) group = clients - for(var/client/C in group) - C.screen += O - if(delay) - spawn(delay) - for(var/client/C in group) - C.screen -= O - -/proc/flick_overlay(image/I, list/show_to, duration) - for(var/client/C in show_to) - C.images += I - sleep(duration) - for(var/client/C in show_to) - C.images -= I - -/proc/get_active_player_count() - // Get active players who are playing in the round - var/active_players = 0 - for(var/i = 1; i <= player_list.len; i++) - var/mob/M = player_list[i] - if(M && M.client) - if(istype(M, /mob/new_player)) // exclude people in the lobby - continue - else if(isobserver(M)) // Ghosts are fine if they were playing once (didn't start as observers) - var/mob/dead/observer/O = M - if(O.started_as_observer) // Exclude people who started as observers - continue - active_players++ - return active_players - -/datum/projectile_data - var/src_x - var/src_y - var/time - var/distance - var/power_x - var/power_y - var/dest_x - var/dest_y - -/datum/projectile_data/New(var/src_x, var/src_y, var/time, var/distance, \ - var/power_x, var/power_y, var/dest_x, var/dest_y) - src.src_x = src_x - src.src_y = src_y - src.time = time - src.distance = distance - src.power_x = power_x - src.power_y = power_y - src.dest_x = dest_x - src.dest_y = dest_y - -/proc/projectile_trajectory(var/src_x, var/src_y, var/rotation, var/angle, var/power) - - // returns the destination (Vx,y) that a projectile shot at [src_x], [src_y], with an angle of [angle], - // rotated at [rotation] and with the power of [power] - // Thanks to VistaPOWA for this function - - var/power_x = power * cos(angle) - var/power_y = power * sin(angle) - var/time = 2* power_y / 10 //10 = g - - var/distance = time * power_x - - var/dest_x = src_x + distance*sin(rotation); - var/dest_y = src_y + distance*cos(rotation); - - return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y) +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 + +/proc/get_area(O) + var/atom/location = O + var/i + for(i=1, i<=20, i++) + if(isarea(location)) + return location + else if (istype(location)) + location = location.loc + else + return null + return 0 + +/proc/get_area_master(O) + var/area/A = get_area(O) + if(A && A.master) + A = A.master + return A + +/proc/get_area_name(N) //get area by its name + for(var/area/A in world) + if(A.name == N) + return A + return 0 + +/proc/in_range(source, user) + if(get_dist(source, user) <= 1) + return 1 + + return 0 //not in range and not telekinetic + +// Like view but bypasses luminosity check + +/proc/hear(var/range, var/atom/source) + + var/lum = source.luminosity + source.luminosity = 6 + + var/list/heard = view(range, source) + source.luminosity = lum + + return heard + +/proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) + var/area/our_area = get_area_master(the_area) + for(var/C in living_mob_list) + if(!istype(C, check_type)) + continue + if(C == must_be_alone) + continue + if(our_area == get_area_master(C)) + return 0 + return 1 + + +//Magic constants obtained by using linear regression on right-angled triangles of sides 0=dy) return (k1*dx) + (k2*dy) //No sqrt or powers :) + else return (k2*dx) + (k1*dy) +#undef k1 +#undef k2 + +/proc/circlerange(center=usr,radius=3) + + var/turf/centerturf = get_turf(center) + var/list/turfs = new/list() + var/rsq = radius * (radius+0.5) + + for(var/atom/T in range(radius, centerturf)) + var/dx = T.x - centerturf.x + var/dy = T.y - centerturf.y + if(dx*dx + dy*dy <= rsq) + turfs += T + + //turfs += centerturf + return turfs + +/proc/circleview(center=usr,radius=3) + + var/turf/centerturf = get_turf(center) + var/list/atoms = new/list() + var/rsq = radius * (radius+0.5) + + for(var/atom/A in view(radius, centerturf)) + var/dx = A.x - centerturf.x + var/dy = A.y - centerturf.y + if(dx*dx + dy*dy <= rsq) + atoms += A + + //turfs += centerturf + return atoms + +/proc/get_dist_euclidian(atom/Loc1 as turf|mob|obj,atom/Loc2 as turf|mob|obj) + var/dx = Loc1.x - Loc2.x + var/dy = Loc1.y - Loc2.y + + var/dist = sqrt(dx**2 + dy**2) + + return dist + +/proc/circlerangeturfs(center=usr,radius=3) + + var/turf/centerturf = get_turf(center) + var/list/turfs = new/list() + var/rsq = radius * (radius+0.5) + + for(var/turf/T in range(radius, centerturf)) + var/dx = T.x - centerturf.x + var/dy = T.y - centerturf.y + if(dx*dx + dy*dy <= rsq) + turfs += T + return turfs + +/proc/circleviewturfs(center=usr,radius=3) //Is there even a diffrence between this proc and circlerangeturfs()? + + var/turf/centerturf = get_turf(center) + var/list/turfs = new/list() + var/rsq = radius * (radius+0.5) + + for(var/turf/T in view(radius, centerturf)) + var/dx = T.x - centerturf.x + var/dy = T.y - centerturf.y + if(dx*dx + dy*dy <= rsq) + turfs += T + return turfs + + + +//var/debug_mob = 0 + +// Better recursive loop, technically sort of not actually recursive cause that shit is retarded, enjoy. +//No need for a recursive limit either + + +proc/recursive_mob_check(var/atom/O,var/client_check=1,var/sight_check=1,var/include_radio=1) + + var/list/processing_list = list(O) + var/list/processed_list = list() + var/list/found_mobs = list() + + while(processing_list.len) + + var/atom/A = processing_list[1] + var/passed = 0 + + if(ismob(A)) + var/mob/A_tmp = A + passed=1 + + if(client_check && !A_tmp.client) + passed=0 + + if(sight_check && !isInSight(A_tmp, O)) + passed=0 + + else if(include_radio && istype(A, /obj/item/device/radio)) + passed=1 + + if(sight_check && !isInSight(A, O)) + passed=0 + + if(passed) + found_mobs |= A + + for(var/atom/B in A) + if(!(B in processed_list)) + processing_list |= B + + processing_list -= A + processed_list |= A + + return found_mobs + + +proc/get_mobs_in_view(var/R, var/atom/source) + // Returns a list of mobs in range of R from source. Used in radio and say code. + + var/turf/T = get_turf(source) + var/list/hear = list() + + if(!T) + return hear + + var/list/range = hear(R, T) + + for(var/atom/movable/A in range) + hear |= recursive_mob_check(A, 1, 0, 1) + + return hear + + + +/proc/get_mobs_in_radio_ranges(var/list/obj/item/device/radio/radios) + + set background = BACKGROUND_ENABLED + + . = list() + // Returns a list of mobs who can hear any of the radios given in @radios + var/list/speaker_coverage = list() + for(var/i = 1; i <= radios.len; i++) + var/obj/item/device/radio/R = radios[i] + if(R) + var/turf/speaker = get_turf(R) + if(speaker) + for(var/turf/T in hear(R.canhear_range,speaker)) + speaker_coverage[T] = T + + + // Try to find all the players who can hear the message + for(var/i = 1; i <= player_list.len; i++) + var/mob/M = player_list[i] + if(M) + var/turf/ear = get_turf(M) + if(ear) + if(speaker_coverage[ear]) + . |= M + return . + +#define SIGN(X) ((X<0)?-1:1) + +proc + inLineOfSight(X1,Y1,X2,Y2,Z=1,PX1=16.5,PY1=16.5,PX2=16.5,PY2=16.5) + var/turf/T + if(X1==X2) + if(Y1==Y2) + return 1 //Light cannot be blocked on same tile + else + var/s = SIGN(Y2-Y1) + Y1+=s + while(Y1!=Y2) + T=locate(X1,Y1,Z) + if(T.opacity) + return 0 + Y1+=s + else + var/m=(32*(Y2-Y1)+(PY2-PY1))/(32*(X2-X1)+(PX2-PX1)) + var/b=(Y1+PY1/32-0.015625)-m*(X1+PX1/32-0.015625) //In tiles + var/signX = SIGN(X2-X1) + var/signY = SIGN(Y2-Y1) + if(X1 abs (dx)) //slope is above 1:1 (move horizontally in a tie) + if(dy > 0) + return get_step(start, SOUTH) + else + return get_step(start, NORTH) + else + if(dx > 0) + return get_step(start, WEST) + else + return get_step(start, EAST) + +/proc/try_move_adjacent(atom/movable/AM) + var/turf/T = get_turf(AM) + for(var/direction in cardinal) + if(AM.Move(get_step(T, direction))) + break + +/proc/get_mob_by_key(var/key) + for(var/mob/M in mob_list) + if(M.ckey == lowertext(key)) + return M + return null + +// Will return a list of active candidates. It increases the buffer 5 times until it finds a candidate which is active within the buffer. + +/proc/get_candidates(be_special_flag=0, afk_bracket=3000) + var/list/candidates = list() + // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) + while(!candidates.len && afk_bracket < 6000) + for(var/mob/dead/observer/G in player_list) + if(G.client != null) + if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) + if(!G.client.is_afk(afk_bracket) && (G.client.prefs.be_special & be_special_flag)) + candidates += G.client + afk_bracket += 600 // Add a minute to the bracket, for every attempt + return candidates + +/proc/ScreenText(obj/O, maptext="", screen_loc="CENTER-7,CENTER-7", maptext_height=480, maptext_width=480) + if(!isobj(O)) O = new /obj/screen/text() + O.maptext = maptext + O.maptext_height = maptext_height + O.maptext_width = maptext_width + O.screen_loc = screen_loc + return O + +/proc/Show2Group4Delay(obj/O, list/group, delay=0) + if(!isobj(O)) return + if(!group) group = clients + for(var/client/C in group) + C.screen += O + if(delay) + spawn(delay) + for(var/client/C in group) + C.screen -= O + +/proc/flick_overlay(image/I, list/show_to, duration) + for(var/client/C in show_to) + C.images += I + sleep(duration) + for(var/client/C in show_to) + C.images -= I + +/proc/get_active_player_count() + // Get active players who are playing in the round + var/active_players = 0 + for(var/i = 1; i <= player_list.len; i++) + var/mob/M = player_list[i] + if(M && M.client) + if(istype(M, /mob/new_player)) // exclude people in the lobby + continue + else if(isobserver(M)) // Ghosts are fine if they were playing once (didn't start as observers) + var/mob/dead/observer/O = M + if(O.started_as_observer) // Exclude people who started as observers + continue + active_players++ + return active_players + +/datum/projectile_data + var/src_x + var/src_y + var/time + var/distance + var/power_x + var/power_y + var/dest_x + var/dest_y + +/datum/projectile_data/New(var/src_x, var/src_y, var/time, var/distance, \ + var/power_x, var/power_y, var/dest_x, var/dest_y) + src.src_x = src_x + src.src_y = src_y + src.time = time + src.distance = distance + src.power_x = power_x + src.power_y = power_y + src.dest_x = dest_x + src.dest_y = dest_y + +/proc/projectile_trajectory(var/src_x, var/src_y, var/rotation, var/angle, var/power) + + // returns the destination (Vx,y) that a projectile shot at [src_x], [src_y], with an angle of [angle], + // rotated at [rotation] and with the power of [power] + // Thanks to VistaPOWA for this function + + var/power_x = power * cos(angle) + var/power_y = power * sin(angle) + var/time = 2* power_y / 10 //10 = g + + var/distance = time * power_x + + var/dest_x = src_x + distance*sin(rotation); + var/dest_y = src_y + distance*cos(rotation); + + return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y) diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 5f8cf47bec5..9a308d3f9c7 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -1,3 +1,3 @@ -/matrix/proc/TurnTo(old_angle, new_angle) - . = new_angle - old_angle - Turn(.) //BYOND handles cases such as -270, 360, 540 etc. DOES NOT HANDLE 180 TURNS WELL, THEY TWEEN AND LOOK LIKE SHIT +/matrix/proc/TurnTo(old_angle, new_angle) + . = new_angle - old_angle + Turn(.) //BYOND handles cases such as -270, 360, 540 etc. DOES NOT HANDLE 180 TURNS WELL, THEY TWEEN AND LOOK LIKE SHIT diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 6b6b2b84c8f..65565da4d7e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1290,4 +1290,4 @@ proc/check_target_facings(mob/living/initator, mob/living/target) if(initator.dir + 4 == target.dir || initator.dir - 4 == target.dir) //mobs are facing each other return 2 if(initator.dir + 2 == target.dir || initator.dir - 2 == target.dir || initator.dir + 6 == target.dir || initator.dir - 6 == target.dir) //Initating mob is looking at the target, while the target mob is looking in a direction perpendicular to the 1st - return 3 + return 3 diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index ce5c939ffa6..58c6dd7913c 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -1,44 +1,44 @@ -var/datum/configuration/config = null - -var/host = null -var/join_motd = null -var/station_name = null -var/game_version = "/tg/ Station 13" -var/changelog_hash = "" - -var/ooc_allowed = 1 // used with admin verbs to disable ooc - not a config option apparently -var/dooc_allowed = 1 -var/abandon_allowed = 1 -var/enter_allowed = 1 -var/guests_allowed = 1 -var/shuttle_frozen = 0 -var/shuttle_left = 0 -var/tinted_weldhelh = 1 - - -// Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. -// Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit. -var/Debug = 0 // global debug switch -var/Debug2 = 0 - - -//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage -var/MAX_EX_DEVESTATION_RANGE = 3 -var/MAX_EX_HEAVY_RANGE = 7 -var/MAX_EX_LIGHT_RANGE = 14 -var/MAX_EX_FLASH_RANGE = 14 -var/MAX_EX_FLAME_RANGE = 14 - -var/list/be_special_flags = list( - "Traitor" = BE_TRAITOR, - "Operative" = BE_OPERATIVE, - "Changeling" = BE_CHANGELING, - "Wizard" = BE_WIZARD, - "Malf AI" = BE_MALF, - "Revolutionary" = BE_REV, - "Alien Lifeform" = BE_ALIEN, - "pAI" = BE_PAI, - "Cultist" = BE_CULTIST, - "Blob" = BE_BLOB, - "Ninja" = BE_NINJA - ) +var/datum/configuration/config = null + +var/host = null +var/join_motd = null +var/station_name = null +var/game_version = "/tg/ Station 13" +var/changelog_hash = "" + +var/ooc_allowed = 1 // used with admin verbs to disable ooc - not a config option apparently +var/dooc_allowed = 1 +var/abandon_allowed = 1 +var/enter_allowed = 1 +var/guests_allowed = 1 +var/shuttle_frozen = 0 +var/shuttle_left = 0 +var/tinted_weldhelh = 1 + + +// Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. +// Debug2 is used in conjunction with a lot of admin verbs and therefore is actually legit. +var/Debug = 0 // global debug switch +var/Debug2 = 0 + + +//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage +var/MAX_EX_DEVESTATION_RANGE = 3 +var/MAX_EX_HEAVY_RANGE = 7 +var/MAX_EX_LIGHT_RANGE = 14 +var/MAX_EX_FLASH_RANGE = 14 +var/MAX_EX_FLAME_RANGE = 14 + +var/list/be_special_flags = list( + "Traitor" = BE_TRAITOR, + "Operative" = BE_OPERATIVE, + "Changeling" = BE_CHANGELING, + "Wizard" = BE_WIZARD, + "Malf AI" = BE_MALF, + "Revolutionary" = BE_REV, + "Alien Lifeform" = BE_ALIEN, + "pAI" = BE_PAI, + "Cultist" = BE_CULTIST, + "Blob" = BE_BLOB, + "Ninja" = BE_NINJA + ) diff --git a/code/_globalvars/database.dm b/code/_globalvars/database.dm index 5d3427534f2..30fcdd5b135 100644 --- a/code/_globalvars/database.dm +++ b/code/_globalvars/database.dm @@ -1,11 +1,11 @@ - // MySQL configuration - -var/sqladdress = "localhost" -var/sqlport = "3306" -var/sqlfdbkdb = "test" -var/sqlfdbklogin = "root" -var/sqlfdbkpass = "" - -//Database connections -//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). -var/DBConnection/dbcon = new() //Feedback database (New database) + // MySQL configuration + +var/sqladdress = "localhost" +var/sqlport = "3306" +var/sqlfdbkdb = "test" +var/sqlfdbklogin = "root" +var/sqlfdbkpass = "" + +//Database connections +//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). +var/DBConnection/dbcon = new() //Feedback database (New database) diff --git a/code/_globalvars/game_modes.dm b/code/_globalvars/game_modes.dm index a6b94dc92b4..519987d8880 100644 --- a/code/_globalvars/game_modes.dm +++ b/code/_globalvars/game_modes.dm @@ -1,6 +1,6 @@ -var/going = 1.0 // ticker pregame countdown -var/master_mode = "traitor"//"extended" -var/secret_force_mode = "secret" // if this is anything but "secret", the secret rotation will forceably choose this mode - -var/wavesecret = 0 // meteor mode, delays wave progression, terrible name -var/datum/station_state/start_state = null // Used in blob mode +var/going = 1.0 // ticker pregame countdown +var/master_mode = "traitor"//"extended" +var/secret_force_mode = "secret" // if this is anything but "secret", the secret rotation will forceably choose this mode + +var/wavesecret = 0 // meteor mode, delays wave progression, terrible name +var/datum/station_state/start_state = null // Used in blob mode diff --git a/code/_globalvars/genetics.dm b/code/_globalvars/genetics.dm index 7aa5c2f54f7..7ff714de5f9 100644 --- a/code/_globalvars/genetics.dm +++ b/code/_globalvars/genetics.dm @@ -1,25 +1,25 @@ - ////////////// -var/NEARSIGHTEDBLOCK = 0 -var/EPILEPSYBLOCK = 0 -var/COUGHBLOCK = 0 -var/TOURETTESBLOCK = 0 -var/NERVOUSBLOCK = 0 -var/BLINDBLOCK = 0 -var/DEAFBLOCK = 0 -var/HULKBLOCK = 0 -var/TELEBLOCK = 0 -var/FIREBLOCK = 0 -var/XRAYBLOCK = 0 -var/CLUMSYBLOCK = 0 -var/STRANGEBLOCK = 0 -var/RACEBLOCK = 0 - -var/list/bad_se_blocks -var/list/good_se_blocks -var/list/op_se_blocks - -var/NULLED_SE -var/NULLED_UI - -var/list/global_mutations = list() // list of hidden mutation things - + ////////////// +var/NEARSIGHTEDBLOCK = 0 +var/EPILEPSYBLOCK = 0 +var/COUGHBLOCK = 0 +var/TOURETTESBLOCK = 0 +var/NERVOUSBLOCK = 0 +var/BLINDBLOCK = 0 +var/DEAFBLOCK = 0 +var/HULKBLOCK = 0 +var/TELEBLOCK = 0 +var/FIREBLOCK = 0 +var/XRAYBLOCK = 0 +var/CLUMSYBLOCK = 0 +var/STRANGEBLOCK = 0 +var/RACEBLOCK = 0 + +var/list/bad_se_blocks +var/list/good_se_blocks +var/list/op_se_blocks + +var/NULLED_SE +var/NULLED_UI + +var/list/global_mutations = list() // list of hidden mutation things + diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 268f3279ed2..1002d954bcf 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -1,32 +1,32 @@ -//Preferences stuff - //Hairstyles -var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name -var/global/list/hair_styles_male_list = list() //stores only hair names -var/global/list/hair_styles_female_list = list() //stores only hair names -var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name -var/global/list/facial_hair_styles_male_list = list() //stores only hair names -var/global/list/facial_hair_styles_female_list = list() //stores only hair names - //Underwear -var/global/list/underwear_all = list() //stores /datum/sprite_accessory/underwear indexed by name -var/global/list/underwear_m = list() //stores only underwear name -var/global/list/underwear_f = list() //stores only underwear name - //Backpacks -var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel") - //Female Uniforms -var/global/list/female_uniform_icons = list() - - //radical shit -var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") - -var/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg','sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') - - -// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to -// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages -// tagged for the Cargo Bay. -var/list/TAGGERLOCATIONS = list("Disposals", - "Cargo Bay", "QM Office", "Engineering", "CE Office", - "Atmospherics", "Security", "HoS Office", "Medbay", - "CMO Office", "Chemistry", "Research", "RD Office", - "Robotics", "HoP Office", "Library", "Chapel", "Theatre", - "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics") +//Preferences stuff + //Hairstyles +var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name +var/global/list/hair_styles_male_list = list() //stores only hair names +var/global/list/hair_styles_female_list = list() //stores only hair names +var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name +var/global/list/facial_hair_styles_male_list = list() //stores only hair names +var/global/list/facial_hair_styles_female_list = list() //stores only hair names + //Underwear +var/global/list/underwear_all = list() //stores /datum/sprite_accessory/underwear indexed by name +var/global/list/underwear_m = list() //stores only underwear name +var/global/list/underwear_f = list() //stores only underwear name + //Backpacks +var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel") + //Female Uniforms +var/global/list/female_uniform_icons = list() + + //radical shit +var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") + +var/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg','sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') + + +// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to +// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages +// tagged for the Cargo Bay. +var/list/TAGGERLOCATIONS = list("Disposals", + "Cargo Bay", "QM Office", "Engineering", "CE Office", + "Atmospherics", "Security", "HoS Office", "Medbay", + "CMO Office", "Chemistry", "Research", "RD Office", + "Robotics", "HoP Office", "Library", "Chapel", "Theatre", + "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics") diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 9c3cc3b2877..9a746a952f6 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -1,43 +1,43 @@ - -var/list/cardinal = list( NORTH, SOUTH, EAST, WEST ) -var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - - -//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. -//(Exceptions: extended, sandbox and nuke) -Errorage -//Was list("3" = 30, "4" = 70). -//Spacing should be a reliable method of getting rid of a body -- Urist. -//Go away Urist, I'm restoring this to the longer list. ~Errorage -var/list/accessable_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" = 60) - -var/global/list/global_map = null - //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels. - //Resulting sector map looks like - //|_1_|_4_| - //|_5_|_3_| - // - //1 - SS13 - //4 - Derelict - //3 - AI satellite - //5 - empty space - -var/list/landmarks_list = list() //list of all landmarks created - -var/list/monkeystart = list() -var/list/wizardstart = list() -var/list/newplayer_start = list() -var/list/latejoin = list() -var/list/prisonwarp = list() //prisoners go to these -var/list/holdingfacility = list() //captured people go here -var/list/xeno_spawn = list()//Aliens spawn at these. -var/list/tdome1 = list() -var/list/tdome2 = list() -var/list/tdomeobserve = list() -var/list/tdomeadmin = list() -var/list/prisonsecuritywarp = list() //prison security goes to these -var/list/prisonwarped = list() //list of players already warped -var/list/blobstart = list() -var/list/global_activeturfs - - //away missions -var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to + +var/list/cardinal = list( NORTH, SOUTH, EAST, WEST ) +var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) + + +//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. +//(Exceptions: extended, sandbox and nuke) -Errorage +//Was list("3" = 30, "4" = 70). +//Spacing should be a reliable method of getting rid of a body -- Urist. +//Go away Urist, I'm restoring this to the longer list. ~Errorage +var/list/accessable_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" = 60) + +var/global/list/global_map = null + //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels. + //Resulting sector map looks like + //|_1_|_4_| + //|_5_|_3_| + // + //1 - SS13 + //4 - Derelict + //3 - AI satellite + //5 - empty space + +var/list/landmarks_list = list() //list of all landmarks created + +var/list/monkeystart = list() +var/list/wizardstart = list() +var/list/newplayer_start = list() +var/list/latejoin = list() +var/list/prisonwarp = list() //prisoners go to these +var/list/holdingfacility = list() //captured people go here +var/list/xeno_spawn = list()//Aliens spawn at these. +var/list/tdome1 = list() +var/list/tdome2 = list() +var/list/tdomeobserve = list() +var/list/tdomeadmin = list() +var/list/prisonsecuritywarp = list() //prison security goes to these +var/list/prisonwarped = list() //list of players already warped +var/list/blobstart = list() +var/list/global_activeturfs + + //away missions +var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 85db25af125..59d9d14950d 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -1,12 +1,12 @@ -var/list/clients = list() //list of all clients -var/list/admins = list() //list of all clients whom are admins -var/list/directory = list() //list of all ckeys with associated client - -//Since it didn't really belong in any other category, I'm putting this here -//This is for procs to replace all the goddamn 'in world's that are chilling around the code - -var/global/list/player_list = list() //List of all mobs **with clients attached**. Excludes /mob/new_player -var/global/list/mob_list = list() //List of all mobs, including clientless -var/global/list/living_mob_list = list() //List of all alive mobs, including clientless. Excludes /mob/new_player -var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player -var/global/list/joined_player_list = list() //List of all clients that have joined the game at round-start or as a latejoin. +var/list/clients = list() //list of all clients +var/list/admins = list() //list of all clients whom are admins +var/list/directory = list() //list of all ckeys with associated client + +//Since it didn't really belong in any other category, I'm putting this here +//This is for procs to replace all the goddamn 'in world's that are chilling around the code + +var/global/list/player_list = list() //List of all mobs **with clients attached**. Excludes /mob/new_player +var/global/list/mob_list = list() //List of all mobs, including clientless +var/global/list/living_mob_list = list() //List of all alive mobs, including clientless. Excludes /mob/new_player +var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player +var/global/list/joined_player_list = list() //List of all clients that have joined the game at round-start or as a latejoin. diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index ab35dbb0e78..ab101d76c6e 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -1,16 +1,16 @@ -var/list/ai_names = file2list("config/names/ai.txt") -var/list/wizard_first = file2list("config/names/wizardfirst.txt") -var/list/wizard_second = file2list("config/names/wizardsecond.txt") -var/list/ninja_titles = file2list("config/names/ninjatitle.txt") -var/list/ninja_names = file2list("config/names/ninjaname.txt") -var/list/commando_names = file2list("config/names/death_commando.txt") -var/list/first_names_male = file2list("config/names/first_male.txt") -var/list/first_names_female = file2list("config/names/first_female.txt") -var/list/last_names = file2list("config/names/last.txt") -var/list/clown_names = file2list("config/names/clown.txt") - - -var/list/verbs = file2list("config/names/verbs.txt") -var/list/adjectives = file2list("config/names/adjectives.txt") -//loaded on startup because of " +var/list/ai_names = file2list("config/names/ai.txt") +var/list/wizard_first = file2list("config/names/wizardfirst.txt") +var/list/wizard_second = file2list("config/names/wizardsecond.txt") +var/list/ninja_titles = file2list("config/names/ninjatitle.txt") +var/list/ninja_names = file2list("config/names/ninjaname.txt") +var/list/commando_names = file2list("config/names/death_commando.txt") +var/list/first_names_male = file2list("config/names/first_male.txt") +var/list/first_names_female = file2list("config/names/first_female.txt") +var/list/last_names = file2list("config/names/last.txt") +var/list/clown_names = file2list("config/names/clown.txt") + + +var/list/verbs = file2list("config/names/verbs.txt") +var/list/adjectives = file2list("config/names/adjectives.txt") +//loaded on startup because of " //would include in rsc if ' was used \ No newline at end of file diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 70dd5089d56..32866b771ce 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -1,14 +1,14 @@ -var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time -var/global/list/portals = list() //for use by portals -var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking. -var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none. - -//items that ask to be called every cycle -var/global/list/machines = list() -var/global/list/processing_objects = list() -var/global/list/active_diseases = list() - -var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions -var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff -var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. +var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time +var/global/list/portals = list() //for use by portals +var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking. +var/global/list/shuttle_caller_list = list() //list of all communication consoles and AIs, for automatic shuttle calls when there are none. + +//items that ask to be called every cycle +var/global/list/machines = list() +var/global/list/processing_objects = list() +var/global/list/active_diseases = list() + +var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions +var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff +var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. var/global/list/table_recipes = list() //list of all table craft recipes \ No newline at end of file diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 1d275045b48..81617cdc417 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -1,13 +1,13 @@ -var/diary = null -var/diaryofmeanpeople = null -var/href_logfile = null - -var/list/bombers = list( ) -var/list/admin_log = list ( ) -var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" -var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was - -var/list/combatlog = list() -var/list/IClog = list() -var/list/OOClog = list() -var/list/adminlog = list() +var/diary = null +var/diaryofmeanpeople = null +var/href_logfile = null + +var/list/bombers = list( ) +var/list/admin_log = list ( ) +var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" +var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was + +var/list/combatlog = list() +var/list/IClog = list() +var/list/OOClog = list() +var/list/adminlog = list() diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 0f13c6f4f7c..6a6de9d49e0 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -1,14 +1,14 @@ -var/global/obj/effect/overlay/plmaster = null // atmospheric overlay for plasma -var/global/obj/effect/overlay/slmaster = null // atmospheric overlay for sleeping gas -var/admin_notice = "" // Admin notice that all clients see when joining the server - - -// nanomanager, the manager for Nano UIs -var/datum/nanomanager/nanomanager = new() - -var/timezoneOffset = 0 // The difference betwen midnight (of the host computer) and 0 world.ticks. - - // For FTP requests. (i.e. downloading runtime logs.) - // However it'd be ok to use for accessing attack logs and such too, which are even laggier. -var/fileaccess_timer = 0 - +var/global/obj/effect/overlay/plmaster = null // atmospheric overlay for plasma +var/global/obj/effect/overlay/slmaster = null // atmospheric overlay for sleeping gas +var/admin_notice = "" // Admin notice that all clients see when joining the server + + +// nanomanager, the manager for Nano UIs +var/datum/nanomanager/nanomanager = new() + +var/timezoneOffset = 0 // The difference betwen midnight (of the host computer) and 0 world.ticks. + + // For FTP requests. (i.e. downloading runtime logs.) + // However it'd be ok to use for accessing attack logs and such too, which are even laggier. +var/fileaccess_timer = 0 + diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index e3c82de1885..9be8b3a3518 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,14 +1,14 @@ -var/global/obj/effect/datacore/data_core = null -//var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event -//Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del() - -var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) -var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) -var/datum/sun/sun = null -var/list/powernets = list() - -// this is not strictly unused although the whole modules datum thing is unused -// To remove this you need to remove that -var/datum/moduletypes/mods = new() - +var/global/obj/effect/datacore/data_core = null +//var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event +//Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del() + +var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) +var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) +var/datum/sun/sun = null +var/list/powernets = list() + +// this is not strictly unused although the whole modules datum thing is unused +// To remove this you need to remove that +var/datum/moduletypes/mods = new() + var/map_name = "Unknown" //The name of the map that is loaded. Assigned in world/New() \ No newline at end of file diff --git a/code/_globalvars/unused.dm b/code/_globalvars/unused.dm index 0a316c97f7a..69d78b82785 100644 --- a/code/_globalvars/unused.dm +++ b/code/_globalvars/unused.dm @@ -1,37 +1,37 @@ -var/dna_ident = 1 // unused global variable -var/shuttle_z = 2 //unused, was written to by a shuttle landmark -var/list/reg_dna = list( ) // unused, was written to when making unique DNA - - /////////////// old events system global variables -var/eventchance = 3 //% per 5 mins -var/event = 0 -var/hadevent = 0 -var/blobevent = 0 - /////////////// -var/skipupdate = 0 -var/list/jobMax = list() -var/forceblob = 0 -var/shuttlecoming = 0 -var/datum/debug/debugobj - -var/list/liftable_structures = list( - /obj/machinery/autolathe, - /obj/machinery/constructable_frame, - /obj/machinery/hydroponics, - /obj/machinery/computer, - /obj/structure/optable, - /obj/structure/dispenser, - /obj/machinery/gibber, - /obj/machinery/microwave, - /obj/machinery/vending, - /obj/machinery/seed_extractor, - /obj/machinery/space_heater, - /obj/machinery/recharge_station, - /obj/machinery/flasher, - /obj/structure/stool, - /obj/structure/closet, - /obj/machinery/photocopier, - /obj/structure/filingcabinet, - /obj/structure/reagent_dispensers, - /obj/machinery/portable_atmospherics/canister +var/dna_ident = 1 // unused global variable +var/shuttle_z = 2 //unused, was written to by a shuttle landmark +var/list/reg_dna = list( ) // unused, was written to when making unique DNA + + /////////////// old events system global variables +var/eventchance = 3 //% per 5 mins +var/event = 0 +var/hadevent = 0 +var/blobevent = 0 + /////////////// +var/skipupdate = 0 +var/list/jobMax = list() +var/forceblob = 0 +var/shuttlecoming = 0 +var/datum/debug/debugobj + +var/list/liftable_structures = list( + /obj/machinery/autolathe, + /obj/machinery/constructable_frame, + /obj/machinery/hydroponics, + /obj/machinery/computer, + /obj/structure/optable, + /obj/structure/dispenser, + /obj/machinery/gibber, + /obj/machinery/microwave, + /obj/machinery/vending, + /obj/machinery/seed_extractor, + /obj/machinery/space_heater, + /obj/machinery/recharge_station, + /obj/machinery/flasher, + /obj/structure/stool, + /obj/structure/closet, + /obj/machinery/photocopier, + /obj/structure/filingcabinet, + /obj/structure/reagent_dispensers, + /obj/machinery/portable_atmospherics/canister ) \ No newline at end of file diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index c02737400ba..773dd61be8b 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -1,124 +1,124 @@ -/* - Adjacency proc for determining touch range - - This is mostly to determine if a user can enter a square for the purposes of touching something. - Examples include reaching a square diagonally or reaching something on the other side of a glass window. - - This is calculated by looking for border items, or in the case of clicking diagonally from yourself, dense items. - This proc will NOT notice if you are trying to attack a window on the other side of a dense object in its turf. There is a window helper for that. - - Note that in all cases the neighbor is handled simply; this is usually the user's mob, in which case it is up to you - to check that the mob is not inside of something -*/ -/atom/proc/Adjacent(var/atom/neighbor) // basic inheritance, unused - return 0 - -// Not a sane use of the function and (for now) indicative of an error elsewhere -/area/Adjacent(var/atom/neighbor) - CRASH("Call to /area/Adjacent(), unimplemented proc") - - -/* - Adjacency (to turf): - * If you are in the same turf, always true - * If you are vertically/horizontally adjacent, ensure there are no border objects - * If you are diagonally adjacent, ensure you can pass through at least one of the mutually adjacent square. - * Passing through in this case ignores anything with the throwpass flag, such as tables, racks, and morgue trays. -*/ -/turf/Adjacent(var/atom/neighbor, var/atom/target = null) - var/turf/T0 = get_turf(neighbor) - if(T0 == src) - return 1 - if(get_dist(src,T0) > 1) - return 0 - - if(T0.x == x || T0.y == y) - // Check for border blockages - return T0.ClickCross(get_dir(T0,src), border_only = 1) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target) - - // Not orthagonal - var/in_dir = get_dir(neighbor,src) // eg. northwest (1+8) - var/d1 = in_dir&(in_dir-1) // eg west (1+8)&(8) = 8 - var/d2 = in_dir - d1 // eg north (1+8) - 8 = 1 - - for(var/d in list(d1,d2)) - if(!T0.ClickCross(d, border_only = 1)) - continue // could not leave T0 in that direction - - var/turf/T1 = get_step(T0,d) - if(!T1 || T1.density || !T1.ClickCross(get_dir(T1,T0) & get_dir(T1,src), border_only = 0)) - continue // couldn't enter or couldn't leave T1 - - if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target)) - continue // could not enter src - - return 1 // we don't care about our own density - return 0 - -/* - Adjacency (to anything else): - * Must be on a turf - * In the case of a multiple-tile object, all valid locations are checked for adjacency. - - Note: Multiple-tile objects are created when the bound_width and bound_height are creater than the tile size. - This is not used in stock /tg/station currently. -*/ -/atom/movable/Adjacent(var/atom/neighbor) - if(neighbor == loc) return 1 - if(!isturf(loc)) return 0 - for(var/turf/T in locs) - if(isnull(T)) continue - if(T.Adjacent(neighbor,src)) return 1 - return 0 - -// This is necessary for storage items not on your person. -/obj/item/Adjacent(var/atom/neighbor, var/recurse = 1) - if(neighbor == loc) return 1 - if(istype(loc,/obj/item)) - if(recurse > 0) - return loc.Adjacent(neighbor,recurse - 1) - return 0 - return ..() -/* - Special case: This allows you to reach a door when it is visally on top of, - but technically behind, a fire door - - You could try to rewrite this to be faster, but I'm not sure anything would be. - This can be safely removed if border firedoors are ever moved to be on top of doors - so they can be interacted with without opening the door. -*/ -/obj/machinery/door/Adjacent(var/atom/neighbor) - var/obj/machinery/door/firedoor/border_only/BOD = locate() in loc - if(BOD) - BOD.throwpass = 1 // allow click to pass - . = ..() - BOD.throwpass = 0 - return . - return ..() - - -/* - This checks if you there is uninterrupted airspace between that turf and this one. - This is defined as any dense ON_BORDER object, or any dense object without throwpass. - The border_only flag allows you to not objects (for source and destination squares) -*/ -/turf/proc/ClickCross(var/target_dir, var/border_only, var/target_atom = null) - for(var/obj/O in src) - if( !O.density || O == target_atom || O.throwpass) continue // throwpass is used for anything you can click through - - if( O.flags&ON_BORDER) // windows have throwpass but are on border, check them first - if( O.dir & target_dir || O.dir&(O.dir-1) ) // full tile windows are just diagonals mechanically - return 0 - - else if( !border_only ) // dense, not on border, cannot pass over - return 0 - return 1 -/* - Aside: throwpass does not do what I thought it did originally, and is only used for checking whether or not - a thrown object should stop after already successfully entering a square. Currently the throw code involved - only seems to affect hitting mobs, because the checks performed against objects are already performed when - entering or leaving the square. Since throwpass isn't used on mobs, but only on objects, it is effectively - useless. Throwpass may later need to be removed and replaced with a passcheck (bitfield on movable atom passflags). - - Since I don't want to complicate the click code rework by messing with unrelated systems it won't be changed here. +/* + Adjacency proc for determining touch range + + This is mostly to determine if a user can enter a square for the purposes of touching something. + Examples include reaching a square diagonally or reaching something on the other side of a glass window. + + This is calculated by looking for border items, or in the case of clicking diagonally from yourself, dense items. + This proc will NOT notice if you are trying to attack a window on the other side of a dense object in its turf. There is a window helper for that. + + Note that in all cases the neighbor is handled simply; this is usually the user's mob, in which case it is up to you + to check that the mob is not inside of something +*/ +/atom/proc/Adjacent(var/atom/neighbor) // basic inheritance, unused + return 0 + +// Not a sane use of the function and (for now) indicative of an error elsewhere +/area/Adjacent(var/atom/neighbor) + CRASH("Call to /area/Adjacent(), unimplemented proc") + + +/* + Adjacency (to turf): + * If you are in the same turf, always true + * If you are vertically/horizontally adjacent, ensure there are no border objects + * If you are diagonally adjacent, ensure you can pass through at least one of the mutually adjacent square. + * Passing through in this case ignores anything with the throwpass flag, such as tables, racks, and morgue trays. +*/ +/turf/Adjacent(var/atom/neighbor, var/atom/target = null) + var/turf/T0 = get_turf(neighbor) + if(T0 == src) + return 1 + if(get_dist(src,T0) > 1) + return 0 + + if(T0.x == x || T0.y == y) + // Check for border blockages + return T0.ClickCross(get_dir(T0,src), border_only = 1) && src.ClickCross(get_dir(src,T0), border_only = 1, target_atom = target) + + // Not orthagonal + var/in_dir = get_dir(neighbor,src) // eg. northwest (1+8) + var/d1 = in_dir&(in_dir-1) // eg west (1+8)&(8) = 8 + var/d2 = in_dir - d1 // eg north (1+8) - 8 = 1 + + for(var/d in list(d1,d2)) + if(!T0.ClickCross(d, border_only = 1)) + continue // could not leave T0 in that direction + + var/turf/T1 = get_step(T0,d) + if(!T1 || T1.density || !T1.ClickCross(get_dir(T1,T0) & get_dir(T1,src), border_only = 0)) + continue // couldn't enter or couldn't leave T1 + + if(!src.ClickCross(get_dir(src,T1), border_only = 1, target_atom = target)) + continue // could not enter src + + return 1 // we don't care about our own density + return 0 + +/* + Adjacency (to anything else): + * Must be on a turf + * In the case of a multiple-tile object, all valid locations are checked for adjacency. + + Note: Multiple-tile objects are created when the bound_width and bound_height are creater than the tile size. + This is not used in stock /tg/station currently. +*/ +/atom/movable/Adjacent(var/atom/neighbor) + if(neighbor == loc) return 1 + if(!isturf(loc)) return 0 + for(var/turf/T in locs) + if(isnull(T)) continue + if(T.Adjacent(neighbor,src)) return 1 + return 0 + +// This is necessary for storage items not on your person. +/obj/item/Adjacent(var/atom/neighbor, var/recurse = 1) + if(neighbor == loc) return 1 + if(istype(loc,/obj/item)) + if(recurse > 0) + return loc.Adjacent(neighbor,recurse - 1) + return 0 + return ..() +/* + Special case: This allows you to reach a door when it is visally on top of, + but technically behind, a fire door + + You could try to rewrite this to be faster, but I'm not sure anything would be. + This can be safely removed if border firedoors are ever moved to be on top of doors + so they can be interacted with without opening the door. +*/ +/obj/machinery/door/Adjacent(var/atom/neighbor) + var/obj/machinery/door/firedoor/border_only/BOD = locate() in loc + if(BOD) + BOD.throwpass = 1 // allow click to pass + . = ..() + BOD.throwpass = 0 + return . + return ..() + + +/* + This checks if you there is uninterrupted airspace between that turf and this one. + This is defined as any dense ON_BORDER object, or any dense object without throwpass. + The border_only flag allows you to not objects (for source and destination squares) +*/ +/turf/proc/ClickCross(var/target_dir, var/border_only, var/target_atom = null) + for(var/obj/O in src) + if( !O.density || O == target_atom || O.throwpass) continue // throwpass is used for anything you can click through + + if( O.flags&ON_BORDER) // windows have throwpass but are on border, check them first + if( O.dir & target_dir || O.dir&(O.dir-1) ) // full tile windows are just diagonals mechanically + return 0 + + else if( !border_only ) // dense, not on border, cannot pass over + return 0 + return 1 +/* + Aside: throwpass does not do what I thought it did originally, and is only used for checking whether or not + a thrown object should stop after already successfully entering a square. Currently the throw code involved + only seems to affect hitting mobs, because the checks performed against objects are already performed when + entering or leaving the square. Since throwpass isn't used on mobs, but only on objects, it is effectively + useless. Throwpass may later need to be removed and replaced with a passcheck (bitfield on movable atom passflags). + + Since I don't want to complicate the click code rework by messing with unrelated systems it won't be changed here. */ \ No newline at end of file diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 7667b7fcd3d..9eb65089e18 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -1,142 +1,142 @@ -/* - AI ClickOn() - - Note currently ai restrained() returns 0 in all cases, - therefore restrained code has been removed - - The AI can double click to move the camera (this was already true but is cleaner), - or double click a mob to track them. - - Note that AI have no need for the adjacency proc, and so this proc is a lot cleaner. -*/ -/mob/living/silicon/ai/DblClickOn(var/atom/A, params) - if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked - build_click(src, client.buildmode, params, A) - return - - if(control_disabled || stat) return - next_move = world.time + 9 - - if(ismob(A)) - ai_actual_track(A) - else - A.move_camera_by_click() - - -/mob/living/silicon/ai/ClickOn(var/atom/A, params) - if(world.time <= next_click) - return - next_click = world.time + 1 - - if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked - build_click(src, client.buildmode, params, A) - return - - if(control_disabled || stat) - return - - var/list/modifiers = params2list(params) - if(modifiers["middle"]) - MiddleClickOn(A) - return - if(modifiers["shift"]) - ShiftClickOn(A) - return - if(modifiers["alt"]) // alt and alt-gr (rightalt) - AltClickOn(A) - return - if(modifiers["ctrl"]) - CtrlClickOn(A) - return - - if(world.time <= next_move) - return - next_move = world.time + 9 - - if(aicamera.in_camera_mode) - aicamera.camera_mode_off() - aicamera.captureimage(A, usr) - return - - /* - AI restrained() currently does nothing - if(restrained()) - RestrainedClickOn(A) - else - */ - A.attack_ai(src) - -/* - AI has no need for the UnarmedAttack() and RangedAttack() procs, - because the AI code is not generic; attack_ai() is used instead. - The below is only really for safety, or you can alter the way - it functions and re-insert it above. -*/ -/mob/living/silicon/ai/UnarmedAttack(atom/A) - A.attack_ai(src) -/mob/living/silicon/ai/RangedAttack(atom/A) - A.attack_ai(src) - -/atom/proc/attack_ai(mob/user as mob) - return - -/* - Since the AI handles shift, ctrl, and alt-click differently - than anything else in the game, atoms have separate procs - for AI shift, ctrl, and alt clicking. -*/ -/mob/living/silicon/ai/ShiftClickOn(var/atom/A) - A.AIShiftClick(src) -/mob/living/silicon/ai/CtrlClickOn(var/atom/A) - A.AICtrlClick(src) -/mob/living/silicon/ai/AltClickOn(var/atom/A) - A.AIAltClick(src) - -/* - The following criminally helpful code is just the previous code cleaned up; - I have no idea why it was in atoms.dm instead of respective files. -*/ - -/atom/proc/AIShiftClick() - return - -/obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! - if(density) - Topic("aiEnable=7", list("aiEnable"="7"), 1) // 1 meaning no window (consistency!) - else - Topic("aiDisable=7", list("aiDisable"="7"), 1) - return - - -/atom/proc/AICtrlClick() - return - -/obj/machinery/door/airlock/AICtrlClick() // Bolts doors - if(locked) - Topic("aiEnable=4", list("aiEnable"="4"), 1)// 1 meaning no window (consistency!) - else - Topic("aiDisable=4", list("aiDisable"="4"), 1) - -/obj/machinery/power/apc/AICtrlClick() // turns off/on APCs. - toggle_breaker() - - -/atom/proc/AIAltClick(var/mob/living/silicon/ai/user) - AltClick(user) - return - -/obj/machinery/door/airlock/AIAltClick() // Eletrifies doors. - if(!secondsElectrified) - // permenant shock - Topic("aiEnable=6", list("aiEnable"="6"), 1) // 1 meaning no window (consistency!) - else - // disable/6 is not in Topic; disable/5 disables both temporary and permenant shock - Topic("aiDisable=5", list("aiDisable"="5"), 1) - return - -// -// Override TurfAdjacent for AltClicking -// - -/mob/living/silicon/ai/TurfAdjacent(var/turf/T) +/* + AI ClickOn() + + Note currently ai restrained() returns 0 in all cases, + therefore restrained code has been removed + + The AI can double click to move the camera (this was already true but is cleaner), + or double click a mob to track them. + + Note that AI have no need for the adjacency proc, and so this proc is a lot cleaner. +*/ +/mob/living/silicon/ai/DblClickOn(var/atom/A, params) + if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked + build_click(src, client.buildmode, params, A) + return + + if(control_disabled || stat) return + next_move = world.time + 9 + + if(ismob(A)) + ai_actual_track(A) + else + A.move_camera_by_click() + + +/mob/living/silicon/ai/ClickOn(var/atom/A, params) + if(world.time <= next_click) + return + next_click = world.time + 1 + + if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked + build_click(src, client.buildmode, params, A) + return + + if(control_disabled || stat) + return + + var/list/modifiers = params2list(params) + if(modifiers["middle"]) + MiddleClickOn(A) + return + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) // alt and alt-gr (rightalt) + AltClickOn(A) + return + if(modifiers["ctrl"]) + CtrlClickOn(A) + return + + if(world.time <= next_move) + return + next_move = world.time + 9 + + if(aicamera.in_camera_mode) + aicamera.camera_mode_off() + aicamera.captureimage(A, usr) + return + + /* + AI restrained() currently does nothing + if(restrained()) + RestrainedClickOn(A) + else + */ + A.attack_ai(src) + +/* + AI has no need for the UnarmedAttack() and RangedAttack() procs, + because the AI code is not generic; attack_ai() is used instead. + The below is only really for safety, or you can alter the way + it functions and re-insert it above. +*/ +/mob/living/silicon/ai/UnarmedAttack(atom/A) + A.attack_ai(src) +/mob/living/silicon/ai/RangedAttack(atom/A) + A.attack_ai(src) + +/atom/proc/attack_ai(mob/user as mob) + return + +/* + Since the AI handles shift, ctrl, and alt-click differently + than anything else in the game, atoms have separate procs + for AI shift, ctrl, and alt clicking. +*/ +/mob/living/silicon/ai/ShiftClickOn(var/atom/A) + A.AIShiftClick(src) +/mob/living/silicon/ai/CtrlClickOn(var/atom/A) + A.AICtrlClick(src) +/mob/living/silicon/ai/AltClickOn(var/atom/A) + A.AIAltClick(src) + +/* + The following criminally helpful code is just the previous code cleaned up; + I have no idea why it was in atoms.dm instead of respective files. +*/ + +/atom/proc/AIShiftClick() + return + +/obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! + if(density) + Topic("aiEnable=7", list("aiEnable"="7"), 1) // 1 meaning no window (consistency!) + else + Topic("aiDisable=7", list("aiDisable"="7"), 1) + return + + +/atom/proc/AICtrlClick() + return + +/obj/machinery/door/airlock/AICtrlClick() // Bolts doors + if(locked) + Topic("aiEnable=4", list("aiEnable"="4"), 1)// 1 meaning no window (consistency!) + else + Topic("aiDisable=4", list("aiDisable"="4"), 1) + +/obj/machinery/power/apc/AICtrlClick() // turns off/on APCs. + toggle_breaker() + + +/atom/proc/AIAltClick(var/mob/living/silicon/ai/user) + AltClick(user) + return + +/obj/machinery/door/airlock/AIAltClick() // Eletrifies doors. + if(!secondsElectrified) + // permenant shock + Topic("aiEnable=6", list("aiEnable"="6"), 1) // 1 meaning no window (consistency!) + else + // disable/6 is not in Topic; disable/5 disables both temporary and permenant shock + Topic("aiDisable=5", list("aiDisable"="5"), 1) + return + +// +// Override TurfAdjacent for AltClicking +// + +/mob/living/silicon/ai/TurfAdjacent(var/turf/T) return (cameranet && cameranet.checkTurfVis(T)) \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 9ba8c35dc34..8dedc4bbcd5 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -1,315 +1,315 @@ -/* - Click code cleanup - ~Sayu -*/ - -// 1 decisecond click delay (above and beyond mob/next_move) -/mob/var/next_click = 0 - -/* - Before anything else, defer these calls to a per-mobtype handler. This allows us to - remove istype() spaghetti code, but requires the addition of other handler procs to simplify it. - - Alternately, you could hardcode every mob's variation in a flat ClickOn() proc; however, - that's a lot of code duplication and is hard to maintain. - - Note that this proc can be overridden, and is in the case of screen objects. -*/ -/atom/Click(location,control,params) - usr.ClickOn(src, params) -/atom/DblClick(location,control,params) - usr.DblClickOn(src,params) - -/* - Standard mob ClickOn() - Handles exceptions: Buildmode, middle click, modified clicks, mech actions - - After that, mostly just check your state, check whether you're holding an item, - check whether you're adjacent to the target, then pass off the click to whoever - is recieving it. - The most common are: - * mob/UnarmedAttack(atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves - * atom/attackby(item,user) - used only when adjacent - * item/afterattack(atom,user,adjacent,params) - used both ranged and adjacent - * mob/RangedAttack(atom,params) - used only ranged, only used for tk and laser eyes but could be changed -*/ -/mob/proc/ClickOn( var/atom/A, var/params ) - if(world.time <= next_click) - return - next_click = world.time + 1 - - if(client.buildmode) - build_click(src, client.buildmode, params, A) - return - - var/list/modifiers = params2list(params) - if(modifiers["middle"]) - MiddleClickOn(A) - return - if(modifiers["shift"]) - ShiftClickOn(A) - return - if(modifiers["alt"]) // alt and alt-gr (rightalt) - AltClickOn(A) - return - if(modifiers["ctrl"]) - CtrlClickOn(A) - return - - if(stat || paralysis || stunned || weakened) - return - - face_atom(A) - - if(next_move > world.time) // in the year 2000... - return - - if(istype(loc,/obj/mecha)) - if(!locate(/turf) in list(A,A.loc)) // Prevents inventory from being drilled - return - var/obj/mecha/M = loc - return M.click_action(A,src) - - if(restrained()) - next_move = world.time + 10 //Doing shit in cuffs shall be vey slow - RestrainedClickOn(A) - return - - if(in_throw_mode) - throw_item(A) - return - - var/obj/item/W = get_active_hand() - - - if(W == A) - next_move = world.time + 6 - if(W.flags&USEDELAY) - next_move += 5 - W.attack_self(src) - if(hand) - update_inv_l_hand(0) - else - update_inv_r_hand(0) - - return - - // operate two levels deep here (item in backpack in src; NOT item in box in backpack in src) - if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents)) - // faster access to objects already on you - if(A in contents) - next_move = world.time + 6 // on your person - else - next_move = world.time + 8 // in a box/bag or in your square - - // No adjacency needed - if(W) - if(W.flags&USEDELAY) - next_move += 5 - - var/resolved = A.attackby(W,src) - if(!resolved && A && W) - W.afterattack(A,src,1,params) // 1 indicates adjacency - else - UnarmedAttack(A) - return - - if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that - return - - // Allows you to click on a box's contents, if that box is on the ground, but no deeper than that - if(isturf(A) || isturf(A.loc) || (A.loc && isturf(A.loc.loc))) - next_move = world.time + 10 - if(A.Adjacent(src)) // see adjacent.dm - if(W) - if(W.flags&USEDELAY) - next_move += 5 - if(W.preattack(A,src,1,params)) //Weapon attack override,return 1 to exit - return - // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) - var/resolved = A.attackby(W,src) - if(!resolved && A && W) - W.afterattack(A,src,1,params) // 1: clicking something Adjacent - else - UnarmedAttack(A, 1) - return - else // non-adjacent click - if(W) - if(W.preattack(A,src,0,params)) //Weapon attack override,return 1 to exit - return - W.afterattack(A,src,0,params) // 0: not Adjacent - else - RangedAttack(A, params) - - return - -// Default behavior: ignore double clicks, consider them normal clicks instead -/mob/proc/DblClickOn(var/atom/A, var/params) - ClickOn(A,params) - - -/* - Translates into attack_hand, etc. - - Note: proximity_flag here is used to distinguish between normal usage (flag=1), - and usage when clicking on things telekinetically (flag=0). This proc will - not be called at ranged except with telekinesis. - - proximity_flag is not currently passed to attack_hand, and is instead used - in human click code to allow glove touches only at melee range. -*/ -/mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag) - return - -/* - Ranged unarmed attack: - - This currently is just a default for all mobs, involving - laser eyes and telekinesis. You could easily add exceptions - for things like ranged glove touches, spitting alien acid/neurotoxin, - animals lunging, etc. -*/ -/mob/proc/RangedAttack(var/atom/A, var/params) - if(!mutations.len) return - if((LASER in mutations) && a_intent == "harm") - LaserEyes(A) // moved into a proc below - else if(TK in mutations) - switch(get_dist(src,A)) - if(0) - ; - if(1 to 5) // not adjacent may mean blocked by window - next_move += 2 - if(5 to 7) - next_move += 5 - if(8 to tk_maxrange) - next_move += 10 - else - return - A.attack_tk(src) -/* - Restrained ClickOn - - Used when you are handcuffed and click things. - Not currently used by anything but could easily be. -*/ -/mob/proc/RestrainedClickOn(var/atom/A) - return - -/* - Middle click - Only used for swapping hands -*/ -/mob/proc/MiddleClickOn(var/atom/A) - return -/mob/living/carbon/MiddleClickOn(var/atom/A) - swap_hand() - -// In case of use break glass -/* -/atom/proc/MiddleClick(var/mob/M as mob) - return -*/ - -/* - Shift click - For most mobs, examine. - This is overridden in ai.dm -*/ -/mob/proc/ShiftClickOn(var/atom/A) - A.ShiftClick(src) - return -/atom/proc/ShiftClick(var/mob/user) - if(user.client && user.client.eye == user) - examine() - user.face_atom(src) - return - -/* - Ctrl click - For most objects, pull -*/ -/mob/proc/CtrlClickOn(var/atom/A) - A.CtrlClick(src) - return -/atom/proc/CtrlClick(var/mob/user) - return - -/atom/movable/CtrlClick(var/mob/user) - if(Adjacent(user)) - user.start_pulling(src) - -/* - Alt click - Unused except for AI -*/ -/mob/proc/AltClickOn(var/atom/A) - A.AltClick(src) - return - -/atom/proc/AltClick(var/mob/user) - var/turf/T = get_turf(src) - if(T && user.TurfAdjacent(T)) - if(user.listed_turf == T) - user.listed_turf = null - else - user.listed_turf = T - user.client.statpanel = T.name - return - -/mob/proc/TurfAdjacent(var/turf/T) - return T.Adjacent(src) - -/* - Misc helpers - - Laser Eyes: as the name implies, handles this since nothing else does currently - face_atom: turns the mob towards what you clicked on -*/ -/mob/proc/LaserEyes(atom/A) - return - -/mob/living/LaserEyes(atom/A) - next_move = world.time + 6 - var/turf/T = get_turf(src) - var/turf/U = get_turf(A) - - var/obj/item/projectile/beam/LE = new /obj/item/projectile/beam( loc ) - LE.icon = 'icons/effects/genetics.dmi' - LE.icon_state = "eyelasers" - playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) - - LE.firer = src - LE.def_zone = get_organ_target() - LE.original = A - LE.current = T - LE.yo = U.y - T.y - LE.xo = U.x - T.x - spawn( 1 ) - LE.process() - -/mob/living/carbon/human/LaserEyes() - if(nutrition>0) - ..() - nutrition = max(nutrition - rand(1,5),0) - handle_regular_hud_updates() - else - src << "\red You're out of energy! You need food!" - -// Simple helper to face what you clicked on, in case it should be needed in more than one place -/mob/proc/face_atom(var/atom/A) - if( buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y ) return - var/dx = A.x - x - var/dy = A.y - y - if(!dx && !dy) // Wall items are graphically shifted but on the floor - if(A.pixel_y > 16) dir = NORTH - else if(A.pixel_y < -16)dir = SOUTH - else if(A.pixel_x > 16) dir = EAST - else if(A.pixel_x < -16)dir = WEST - return - - if(abs(dx) < abs(dy)) - if(dy > 0) dir = NORTH - else dir = SOUTH - else - if(dx > 0) dir = EAST - else dir = WEST +/* + Click code cleanup + ~Sayu +*/ + +// 1 decisecond click delay (above and beyond mob/next_move) +/mob/var/next_click = 0 + +/* + Before anything else, defer these calls to a per-mobtype handler. This allows us to + remove istype() spaghetti code, but requires the addition of other handler procs to simplify it. + + Alternately, you could hardcode every mob's variation in a flat ClickOn() proc; however, + that's a lot of code duplication and is hard to maintain. + + Note that this proc can be overridden, and is in the case of screen objects. +*/ +/atom/Click(location,control,params) + usr.ClickOn(src, params) +/atom/DblClick(location,control,params) + usr.DblClickOn(src,params) + +/* + Standard mob ClickOn() + Handles exceptions: Buildmode, middle click, modified clicks, mech actions + + After that, mostly just check your state, check whether you're holding an item, + check whether you're adjacent to the target, then pass off the click to whoever + is recieving it. + The most common are: + * mob/UnarmedAttack(atom,adjacent) - used here only when adjacent, with no item in hand; in the case of humans, checks gloves + * atom/attackby(item,user) - used only when adjacent + * item/afterattack(atom,user,adjacent,params) - used both ranged and adjacent + * mob/RangedAttack(atom,params) - used only ranged, only used for tk and laser eyes but could be changed +*/ +/mob/proc/ClickOn( var/atom/A, var/params ) + if(world.time <= next_click) + return + next_click = world.time + 1 + + if(client.buildmode) + build_click(src, client.buildmode, params, A) + return + + var/list/modifiers = params2list(params) + if(modifiers["middle"]) + MiddleClickOn(A) + return + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) // alt and alt-gr (rightalt) + AltClickOn(A) + return + if(modifiers["ctrl"]) + CtrlClickOn(A) + return + + if(stat || paralysis || stunned || weakened) + return + + face_atom(A) + + if(next_move > world.time) // in the year 2000... + return + + if(istype(loc,/obj/mecha)) + if(!locate(/turf) in list(A,A.loc)) // Prevents inventory from being drilled + return + var/obj/mecha/M = loc + return M.click_action(A,src) + + if(restrained()) + next_move = world.time + 10 //Doing shit in cuffs shall be vey slow + RestrainedClickOn(A) + return + + if(in_throw_mode) + throw_item(A) + return + + var/obj/item/W = get_active_hand() + + + if(W == A) + next_move = world.time + 6 + if(W.flags&USEDELAY) + next_move += 5 + W.attack_self(src) + if(hand) + update_inv_l_hand(0) + else + update_inv_r_hand(0) + + return + + // operate two levels deep here (item in backpack in src; NOT item in box in backpack in src) + if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents)) + // faster access to objects already on you + if(A in contents) + next_move = world.time + 6 // on your person + else + next_move = world.time + 8 // in a box/bag or in your square + + // No adjacency needed + if(W) + if(W.flags&USEDELAY) + next_move += 5 + + var/resolved = A.attackby(W,src) + if(!resolved && A && W) + W.afterattack(A,src,1,params) // 1 indicates adjacency + else + UnarmedAttack(A) + return + + if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that + return + + // Allows you to click on a box's contents, if that box is on the ground, but no deeper than that + if(isturf(A) || isturf(A.loc) || (A.loc && isturf(A.loc.loc))) + next_move = world.time + 10 + if(A.Adjacent(src)) // see adjacent.dm + if(W) + if(W.flags&USEDELAY) + next_move += 5 + if(W.preattack(A,src,1,params)) //Weapon attack override,return 1 to exit + return + // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) + var/resolved = A.attackby(W,src) + if(!resolved && A && W) + W.afterattack(A,src,1,params) // 1: clicking something Adjacent + else + UnarmedAttack(A, 1) + return + else // non-adjacent click + if(W) + if(W.preattack(A,src,0,params)) //Weapon attack override,return 1 to exit + return + W.afterattack(A,src,0,params) // 0: not Adjacent + else + RangedAttack(A, params) + + return + +// Default behavior: ignore double clicks, consider them normal clicks instead +/mob/proc/DblClickOn(var/atom/A, var/params) + ClickOn(A,params) + + +/* + Translates into attack_hand, etc. + + Note: proximity_flag here is used to distinguish between normal usage (flag=1), + and usage when clicking on things telekinetically (flag=0). This proc will + not be called at ranged except with telekinesis. + + proximity_flag is not currently passed to attack_hand, and is instead used + in human click code to allow glove touches only at melee range. +*/ +/mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag) + return + +/* + Ranged unarmed attack: + + This currently is just a default for all mobs, involving + laser eyes and telekinesis. You could easily add exceptions + for things like ranged glove touches, spitting alien acid/neurotoxin, + animals lunging, etc. +*/ +/mob/proc/RangedAttack(var/atom/A, var/params) + if(!mutations.len) return + if((LASER in mutations) && a_intent == "harm") + LaserEyes(A) // moved into a proc below + else if(TK in mutations) + switch(get_dist(src,A)) + if(0) + ; + if(1 to 5) // not adjacent may mean blocked by window + next_move += 2 + if(5 to 7) + next_move += 5 + if(8 to tk_maxrange) + next_move += 10 + else + return + A.attack_tk(src) +/* + Restrained ClickOn + + Used when you are handcuffed and click things. + Not currently used by anything but could easily be. +*/ +/mob/proc/RestrainedClickOn(var/atom/A) + return + +/* + Middle click + Only used for swapping hands +*/ +/mob/proc/MiddleClickOn(var/atom/A) + return +/mob/living/carbon/MiddleClickOn(var/atom/A) + swap_hand() + +// In case of use break glass +/* +/atom/proc/MiddleClick(var/mob/M as mob) + return +*/ + +/* + Shift click + For most mobs, examine. + This is overridden in ai.dm +*/ +/mob/proc/ShiftClickOn(var/atom/A) + A.ShiftClick(src) + return +/atom/proc/ShiftClick(var/mob/user) + if(user.client && user.client.eye == user) + examine() + user.face_atom(src) + return + +/* + Ctrl click + For most objects, pull +*/ +/mob/proc/CtrlClickOn(var/atom/A) + A.CtrlClick(src) + return +/atom/proc/CtrlClick(var/mob/user) + return + +/atom/movable/CtrlClick(var/mob/user) + if(Adjacent(user)) + user.start_pulling(src) + +/* + Alt click + Unused except for AI +*/ +/mob/proc/AltClickOn(var/atom/A) + A.AltClick(src) + return + +/atom/proc/AltClick(var/mob/user) + var/turf/T = get_turf(src) + if(T && user.TurfAdjacent(T)) + if(user.listed_turf == T) + user.listed_turf = null + else + user.listed_turf = T + user.client.statpanel = T.name + return + +/mob/proc/TurfAdjacent(var/turf/T) + return T.Adjacent(src) + +/* + Misc helpers + + Laser Eyes: as the name implies, handles this since nothing else does currently + face_atom: turns the mob towards what you clicked on +*/ +/mob/proc/LaserEyes(atom/A) + return + +/mob/living/LaserEyes(atom/A) + next_move = world.time + 6 + var/turf/T = get_turf(src) + var/turf/U = get_turf(A) + + var/obj/item/projectile/beam/LE = new /obj/item/projectile/beam( loc ) + LE.icon = 'icons/effects/genetics.dmi' + LE.icon_state = "eyelasers" + playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) + + LE.firer = src + LE.def_zone = get_organ_target() + LE.original = A + LE.current = T + LE.yo = U.y - T.y + LE.xo = U.x - T.x + spawn( 1 ) + LE.process() + +/mob/living/carbon/human/LaserEyes() + if(nutrition>0) + ..() + nutrition = max(nutrition - rand(1,5),0) + handle_regular_hud_updates() + else + src << "\red You're out of energy! You need food!" + +// Simple helper to face what you clicked on, in case it should be needed in more than one place +/mob/proc/face_atom(var/atom/A) + if( buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y ) return + var/dx = A.x - x + var/dy = A.y - y + if(!dx && !dy) // Wall items are graphically shifted but on the floor + if(A.pixel_y > 16) dir = NORTH + else if(A.pixel_y < -16)dir = SOUTH + else if(A.pixel_x > 16) dir = EAST + else if(A.pixel_x < -16)dir = WEST + return + + if(abs(dx) < abs(dy)) + if(dy > 0) dir = NORTH + else dir = SOUTH + else + if(dx > 0) dir = EAST + else dir = WEST diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index fa1e49a860c..14291469c77 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -1,118 +1,118 @@ -/* - Cyborg ClickOn() - - Cyborgs have no range restriction on attack_robot(), because it is basically an AI click. - However, they do have a range restriction on item use, so they cannot do without the - adjacency code. -*/ - -/mob/living/silicon/robot/ClickOn(var/atom/A, var/params) - if(world.time <= next_click) - return - next_click = world.time + 1 - - if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked - build_click(src, client.buildmode, params, A) - return - - if(stat || lockcharge || weakened || stunned || paralysis) - return - - var/list/modifiers = params2list(params) - if(modifiers["middle"]) - MiddleClickOn(A) - return - if(modifiers["shift"]) - ShiftClickOn(A) - return - if(modifiers["alt"]) // alt and alt-gr (rightalt) - AltClickOn(A) - return - if(modifiers["ctrl"]) - CtrlClickOn(A) - return - - if(next_move >= world.time) - return - - face_atom(A) // change direction to face what you clicked on - - /* - cyborg restrained() currently does nothing - if(restrained()) - RestrainedClickOn(A) - return - */ - - var/obj/item/W = get_active_hand() - - // Cyborgs have no range-checking unless there is item use - if(!W) - A.attack_robot(src) - return - - // buckled cannot prevent machine interlinking but stops arm movement - if( buckled ) - return - - if(W == A) - next_move = world.time + 8 - if(W.flags&USEDELAY) - next_move += 5 - - W.attack_self(src) - return - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) - if(A == loc || (A in loc) || (A in contents)) - // No adjacency checks - next_move = world.time + 8 - if(W.flags&USEDELAY) - next_move += 5 - - var/resolved = A.attackby(W,src) - if(!resolved && A && W) - W.afterattack(A,src,1,params) - return - - if(!isturf(loc)) - return - - // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) - if(isturf(A) || isturf(A.loc)) - if(A.Adjacent(src)) // see adjacent.dm - next_move = world.time + 10 - if(W.flags&USEDELAY) - next_move += 5 - - var/resolved = A.attackby(W, src) - if(!resolved && A && W) - W.afterattack(A, src, 1, params) - return - else - next_move = world.time + 10 - W.afterattack(A, src, 0, params) - return - return - -//Middle click cycles through selected modules. -/mob/living/silicon/robot/MiddleClickOn(var/atom/A) - cycle_modules() - return - -/* - As with AI, these are not used in click code, - because the code for robots is specific, not generic. - - If you would like to add advanced features to robot - clicks, you can do so here, but you will have to - change attack_robot() above to the proper function -*/ -/mob/living/silicon/robot/UnarmedAttack(atom/A) - A.attack_robot(src) -/mob/living/silicon/robot/RangedAttack(atom/A) - A.attack_robot(src) - -/atom/proc/attack_robot(mob/user as mob) - attack_ai(user) - return +/* + Cyborg ClickOn() + + Cyborgs have no range restriction on attack_robot(), because it is basically an AI click. + However, they do have a range restriction on item use, so they cannot do without the + adjacency code. +*/ + +/mob/living/silicon/robot/ClickOn(var/atom/A, var/params) + if(world.time <= next_click) + return + next_click = world.time + 1 + + if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked + build_click(src, client.buildmode, params, A) + return + + if(stat || lockcharge || weakened || stunned || paralysis) + return + + var/list/modifiers = params2list(params) + if(modifiers["middle"]) + MiddleClickOn(A) + return + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) // alt and alt-gr (rightalt) + AltClickOn(A) + return + if(modifiers["ctrl"]) + CtrlClickOn(A) + return + + if(next_move >= world.time) + return + + face_atom(A) // change direction to face what you clicked on + + /* + cyborg restrained() currently does nothing + if(restrained()) + RestrainedClickOn(A) + return + */ + + var/obj/item/W = get_active_hand() + + // Cyborgs have no range-checking unless there is item use + if(!W) + A.attack_robot(src) + return + + // buckled cannot prevent machine interlinking but stops arm movement + if( buckled ) + return + + if(W == A) + next_move = world.time + 8 + if(W.flags&USEDELAY) + next_move += 5 + + W.attack_self(src) + return + + // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) + if(A == loc || (A in loc) || (A in contents)) + // No adjacency checks + next_move = world.time + 8 + if(W.flags&USEDELAY) + next_move += 5 + + var/resolved = A.attackby(W,src) + if(!resolved && A && W) + W.afterattack(A,src,1,params) + return + + if(!isturf(loc)) + return + + // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) + if(isturf(A) || isturf(A.loc)) + if(A.Adjacent(src)) // see adjacent.dm + next_move = world.time + 10 + if(W.flags&USEDELAY) + next_move += 5 + + var/resolved = A.attackby(W, src) + if(!resolved && A && W) + W.afterattack(A, src, 1, params) + return + else + next_move = world.time + 10 + W.afterattack(A, src, 0, params) + return + return + +//Middle click cycles through selected modules. +/mob/living/silicon/robot/MiddleClickOn(var/atom/A) + cycle_modules() + return + +/* + As with AI, these are not used in click code, + because the code for robots is specific, not generic. + + If you would like to add advanced features to robot + clicks, you can do so here, but you will have to + change attack_robot() above to the proper function +*/ +/mob/living/silicon/robot/UnarmedAttack(atom/A) + A.attack_robot(src) +/mob/living/silicon/robot/RangedAttack(atom/A) + A.attack_robot(src) + +/atom/proc/attack_robot(mob/user as mob) + attack_ai(user) + return diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 0743127371e..ccd6ccaf7f2 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -1,17 +1,17 @@ -/* - MouseDrop: - - Called on the atom you're dragging. In a lot of circumstances we want to use the - recieving object instead, so that's the default action. This allows you to drag - almost anything into a trash can. -*/ -/atom/MouseDrop(atom/over) - if(!usr || !over) return - if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows - - over.MouseDrop_T(src,usr) - return - -// recieve a mousedrop -/atom/proc/MouseDrop_T(atom/dropping, mob/user) - return +/* + MouseDrop: + + Called on the atom you're dragging. In a lot of circumstances we want to use the + recieving object instead, so that's the default action. This allows you to drag + almost anything into a trash can. +*/ +/atom/MouseDrop(atom/over) + if(!usr || !over) return + if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows + + over.MouseDrop_T(src,usr) + return + +// recieve a mousedrop +/atom/proc/MouseDrop_T(atom/dropping, mob/user) + return diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index e0948d46eb1..342eeba8d36 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -1,105 +1,105 @@ -/* - These defines specificy screen locations. For more information, see the byond documentation on the screen_loc var. - - The short version: - - Everything is encoded as strings because apparently that's how Byond rolls. - - "1,1" is the bottom left square of the user's screen. This aligns perfectly with the turf grid. - "1:2,3:4" is the square (1,3) with pixel offsets (+2, +4); slightly right and slightly above the turf grid. - Pixel offsets are used so you don't perfectly hide the turf under them, that would be crappy. - - In addition, the keywords NORTH, SOUTH, EAST, WEST and CENTER can be used to represent their respective - screen borders. NORTH-1, for example, is the row just below the upper edge. Useful if you want your - UI to scale with screen size. - - The size of the user's screen is defined by client.view (indirectly by world.view), in our case "15x15". - Therefore, the top right corner (except during admin shenanigans) is at "15,15" -*/ - -//Upper left action buttons, displayed when you pick up an item that has this enabled. -#define ui_action_slot1 "WEST :6, NORTH-1:26" -#define ui_action_slot2 "WEST+1:8, NORTH-1:26" -#define ui_action_slot3 "WEST+2:10,NORTH-1:26" -#define ui_action_slot4 "WEST+3:12,NORTH-1:26" -#define ui_action_slot5 "WEST+4:14,NORTH-1:26" - -//Lower left, persistant menu -#define ui_inventory "WEST:6,SOUTH:5" - -//Middle left indicators -#define ui_lingchemdisplay "WEST:6,CENTER-1:15" -#define ui_lingstingdisplay "WEST:6,CENTER-3:11" - -//Lower center, persistant menu -#define ui_sstore1 "CENTER-5:10,SOUTH:5" -#define ui_id "CENTER-4:12,SOUTH:5" -#define ui_belt "CENTER-3:14,SOUTH:5" -#define ui_back "CENTER-2:14,SOUTH:5" -#define ui_rhand "CENTER:-16,SOUTH:5" -#define ui_lhand "CENTER: 16,SOUTH:5" -#define ui_equip "CENTER:-16,SOUTH+1:5" -#define ui_swaphand1 "CENTER:-16,SOUTH+1:5" -#define ui_swaphand2 "CENTER: 16,SOUTH+1:5" -#define ui_storage1 "CENTER+1:18,SOUTH:5" -#define ui_storage2 "CENTER+2:20,SOUTH:5" - -#define ui_inv1 "CENTER-2:16,SOUTH:5" //borgs -#define ui_inv2 "CENTER-1 :16,SOUTH:5" //borgs -#define ui_inv3 "CENTER :16,SOUTH:5" //borgs -#define ui_borg_module "CENTER+1:16,SOUTH:5" -#define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs - -#define ui_monkey_mask "CENTER-3:14,SOUTH:5" //monkey -#define ui_monkey_back "CENTER-2:15,SOUTH:5" //monkey - -#define ui_alien_storage_l "CENTER-2:14,SOUTH:5"//alien -#define ui_alien_storage_r "CENTER+1:18,SOUTH:5"//alien - -//Lower right, persistant menu -#define ui_drop_throw "EAST-1:28,SOUTH+1:7" -#define ui_pull_resist "EAST-2:26,SOUTH+1:7" -#define ui_movi "EAST-2:26,SOUTH:5" -#define ui_acti "EAST-3:24,SOUTH:5" -#define ui_zonesel "EAST-1:28,SOUTH:5" -#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) - -#define ui_borg_pull "EAST-2:26,SOUTH+1:7" -#define ui_borg_radio "EAST-1:28,SOUTH+1:7" -#define ui_borg_intents "EAST-2:26,SOUTH:5" - -//Upper-middle right (damage indicators) -#define ui_toxin "EAST-1:28,CENTER+5:27" -#define ui_fire "EAST-1:28,CENTER+4:25" -#define ui_oxygen "EAST-1:28,CENTER+3:23" -#define ui_pressure "EAST-1:28,CENTER+2:21" - -#define ui_alien_toxin "EAST-1:28,CENTER+5:25" -#define ui_alien_fire "EAST-1:28,CENTER+4:25" -#define ui_alien_oxygen "EAST-1:28,CENTER+3:25" - -//Middle right (status indicators) -#define ui_nutrition "EAST-1:28,CENTER-3:11" -#define ui_temp "EAST-1:28,CENTER-2:13" -#define ui_health "EAST-1:28,CENTER-1:15" -#define ui_internal "EAST-1:28,CENTER:17" - -//borgs and aliens -#define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. -#define ui_alien_health "EAST-1:28,CENTER-1:15" //aliens have the health display where humans have the pressure damage indicator. -#define ui_alienplasmadisplay "EAST-1:28,CENTER-2:15" - -//Pop-up inventory -#define ui_shoes "WEST+1:8,SOUTH:5" - -#define ui_iclothing "WEST:6,SOUTH+1:7" -#define ui_oclothing "WEST+1:8,SOUTH+1:7" -#define ui_gloves "WEST+2:10,SOUTH+1:7" - -#define ui_glasses "WEST:6,SOUTH+2:9" -#define ui_mask "WEST+1:8,SOUTH+2:9" -#define ui_ears "WEST+2:10,SOUTH+2:9" - -#define ui_head "WEST+1:8,SOUTH+3:11" - - +/* + These defines specificy screen locations. For more information, see the byond documentation on the screen_loc var. + + The short version: + + Everything is encoded as strings because apparently that's how Byond rolls. + + "1,1" is the bottom left square of the user's screen. This aligns perfectly with the turf grid. + "1:2,3:4" is the square (1,3) with pixel offsets (+2, +4); slightly right and slightly above the turf grid. + Pixel offsets are used so you don't perfectly hide the turf under them, that would be crappy. + + In addition, the keywords NORTH, SOUTH, EAST, WEST and CENTER can be used to represent their respective + screen borders. NORTH-1, for example, is the row just below the upper edge. Useful if you want your + UI to scale with screen size. + + The size of the user's screen is defined by client.view (indirectly by world.view), in our case "15x15". + Therefore, the top right corner (except during admin shenanigans) is at "15,15" +*/ + +//Upper left action buttons, displayed when you pick up an item that has this enabled. +#define ui_action_slot1 "WEST :6, NORTH-1:26" +#define ui_action_slot2 "WEST+1:8, NORTH-1:26" +#define ui_action_slot3 "WEST+2:10,NORTH-1:26" +#define ui_action_slot4 "WEST+3:12,NORTH-1:26" +#define ui_action_slot5 "WEST+4:14,NORTH-1:26" + +//Lower left, persistant menu +#define ui_inventory "WEST:6,SOUTH:5" + +//Middle left indicators +#define ui_lingchemdisplay "WEST:6,CENTER-1:15" +#define ui_lingstingdisplay "WEST:6,CENTER-3:11" + +//Lower center, persistant menu +#define ui_sstore1 "CENTER-5:10,SOUTH:5" +#define ui_id "CENTER-4:12,SOUTH:5" +#define ui_belt "CENTER-3:14,SOUTH:5" +#define ui_back "CENTER-2:14,SOUTH:5" +#define ui_rhand "CENTER:-16,SOUTH:5" +#define ui_lhand "CENTER: 16,SOUTH:5" +#define ui_equip "CENTER:-16,SOUTH+1:5" +#define ui_swaphand1 "CENTER:-16,SOUTH+1:5" +#define ui_swaphand2 "CENTER: 16,SOUTH+1:5" +#define ui_storage1 "CENTER+1:18,SOUTH:5" +#define ui_storage2 "CENTER+2:20,SOUTH:5" + +#define ui_inv1 "CENTER-2:16,SOUTH:5" //borgs +#define ui_inv2 "CENTER-1 :16,SOUTH:5" //borgs +#define ui_inv3 "CENTER :16,SOUTH:5" //borgs +#define ui_borg_module "CENTER+1:16,SOUTH:5" +#define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs + +#define ui_monkey_mask "CENTER-3:14,SOUTH:5" //monkey +#define ui_monkey_back "CENTER-2:15,SOUTH:5" //monkey + +#define ui_alien_storage_l "CENTER-2:14,SOUTH:5"//alien +#define ui_alien_storage_r "CENTER+1:18,SOUTH:5"//alien + +//Lower right, persistant menu +#define ui_drop_throw "EAST-1:28,SOUTH+1:7" +#define ui_pull_resist "EAST-2:26,SOUTH+1:7" +#define ui_movi "EAST-2:26,SOUTH:5" +#define ui_acti "EAST-3:24,SOUTH:5" +#define ui_zonesel "EAST-1:28,SOUTH:5" +#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) + +#define ui_borg_pull "EAST-2:26,SOUTH+1:7" +#define ui_borg_radio "EAST-1:28,SOUTH+1:7" +#define ui_borg_intents "EAST-2:26,SOUTH:5" + +//Upper-middle right (damage indicators) +#define ui_toxin "EAST-1:28,CENTER+5:27" +#define ui_fire "EAST-1:28,CENTER+4:25" +#define ui_oxygen "EAST-1:28,CENTER+3:23" +#define ui_pressure "EAST-1:28,CENTER+2:21" + +#define ui_alien_toxin "EAST-1:28,CENTER+5:25" +#define ui_alien_fire "EAST-1:28,CENTER+4:25" +#define ui_alien_oxygen "EAST-1:28,CENTER+3:25" + +//Middle right (status indicators) +#define ui_nutrition "EAST-1:28,CENTER-3:11" +#define ui_temp "EAST-1:28,CENTER-2:13" +#define ui_health "EAST-1:28,CENTER-1:15" +#define ui_internal "EAST-1:28,CENTER:17" + +//borgs and aliens +#define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. +#define ui_alien_health "EAST-1:28,CENTER-1:15" //aliens have the health display where humans have the pressure damage indicator. +#define ui_alienplasmadisplay "EAST-1:28,CENTER-2:15" + +//Pop-up inventory +#define ui_shoes "WEST+1:8,SOUTH:5" + +#define ui_iclothing "WEST:6,SOUTH+1:7" +#define ui_oclothing "WEST+1:8,SOUTH+1:7" +#define ui_gloves "WEST+2:10,SOUTH+1:7" + +#define ui_glasses "WEST:6,SOUTH+2:9" +#define ui_mask "WEST+1:8,SOUTH+2:9" +#define ui_ears "WEST+2:10,SOUTH+2:9" + +#define ui_head "WEST+1:8,SOUTH+3:11" + + diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 73868ade062..9b34f7bcc6e 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -1,172 +1,172 @@ -/datum/hud/proc/alien_hud() - adding = list() - other = list() - - var/obj/screen/using - var/obj/screen/inventory/inv_box - -//equippable shit - -//hands - inv_box = new /obj/screen/inventory() - inv_box.name = "r_hand" - inv_box.icon = 'icons/mob/screen_alien.dmi' - inv_box.icon_state = "hand_r_inactive" - if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use - inv_box.icon_state = "hand_r_active" - inv_box.screen_loc = ui_rhand - inv_box.layer = 19 - r_hand_hud_object = inv_box - inv_box.slot_id = slot_r_hand - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "l_hand" - inv_box.icon = 'icons/mob/screen_alien.dmi' - inv_box.icon_state = "hand_l_inactive" - if(mymob && mymob.hand) //This being 1 means the left hand is in use - inv_box.icon_state = "hand_l_active" - inv_box.screen_loc = ui_lhand - inv_box.layer = 19 - inv_box.slot_id = slot_l_hand - l_hand_hud_object = inv_box - adding += inv_box - -//pocket 1 - inv_box = new /obj/screen/inventory() - inv_box.name = "storage1" - inv_box.icon = 'icons/mob/screen_alien.dmi' - inv_box.icon_state = "pocket" - inv_box.screen_loc = ui_alien_storage_l - inv_box.slot_id = slot_l_store - inv_box.layer = 19 - adding += inv_box - -//pocket 2 - inv_box = new /obj/screen/inventory() - inv_box.name = "storage2" - inv_box.icon = 'icons/mob/screen_alien.dmi' - inv_box.icon_state = "pocket" - inv_box.screen_loc = ui_alien_storage_r - inv_box.slot_id = slot_r_store - inv_box.layer = 19 - adding += inv_box - -//begin buttons - - using = new /obj/screen/inventory() - using.name = "hand" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = "swap_1" - using.screen_loc = ui_swaphand1 - using.layer = 19 - adding += using - - using = new /obj/screen/inventory() - using.name = "hand" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = "swap_2" - using.screen_loc = ui_swaphand2 - using.layer = 19 - adding += using - - using = new /obj/screen() - using.name = "act_intent" - using.icon_state = mymob.a_intent - using.screen_loc = ui_acti - using.layer = 20 - adding += using - action_intent = using - - using = new /obj/screen() - using.name = "mov_intent" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") - using.screen_loc = ui_movi - using.layer = 20 - adding += using - move_intent = using - - using = new /obj/screen() - using.name = "drop" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = "act_drop" - using.screen_loc = ui_drop_throw - using.layer = 19 - adding += using - - using = new /obj/screen() - using.name = "resist" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = "act_resist" - using.screen_loc = ui_pull_resist - using.layer = 19 - adding += using - - mymob.throw_icon = new /obj/screen() - mymob.throw_icon.icon = 'icons/mob/screen_alien.dmi' - mymob.throw_icon.icon_state = "act_throw_off" - mymob.throw_icon.name = "throw/catch" - mymob.throw_icon.screen_loc = ui_drop_throw - - mymob.pullin = new /obj/screen() - mymob.pullin.icon = 'icons/mob/screen_alien.dmi' - mymob.pullin.icon_state = "pull0" - mymob.pullin.name = "pull" - mymob.pullin.screen_loc = ui_pull_resist - -//begin indicators - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_alien_oxygen - - mymob.toxin = new /obj/screen() - mymob.toxin.icon = 'icons/mob/screen_alien.dmi' - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_alien_toxin - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_alien.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_alien_fire - - mymob.healths = new /obj/screen() - mymob.healths.icon = 'icons/mob/screen_alien.dmi' - mymob.healths.icon_state = "health0" - mymob.healths.name = "health" - mymob.healths.screen_loc = ui_alien_health - - alien_plasma_display = new /obj/screen() - alien_plasma_display.icon = 'icons/mob/screen_gen.dmi' - alien_plasma_display.icon_state = "power_display2" - alien_plasma_display.name = "plasma stored" - alien_plasma_display.screen_loc = ui_alienplasmadisplay - - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "CENTER-7,CENTER-7" - mymob.blind.layer = 0 - - mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_alien.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" - mymob.flash.layer = 17 - - mymob.zone_sel = new /obj/screen/zone_sel/alien() - mymob.zone_sel.icon = 'icons/mob/screen_alien.dmi' - mymob.zone_sel.update_icon() - - mymob.client.screen = null - - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) - mymob.client.screen += adding + other - +/datum/hud/proc/alien_hud() + adding = list() + other = list() + + var/obj/screen/using + var/obj/screen/inventory/inv_box + +//equippable shit + +//hands + inv_box = new /obj/screen/inventory() + inv_box.name = "r_hand" + inv_box.icon = 'icons/mob/screen_alien.dmi' + inv_box.icon_state = "hand_r_inactive" + if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use + inv_box.icon_state = "hand_r_active" + inv_box.screen_loc = ui_rhand + inv_box.layer = 19 + r_hand_hud_object = inv_box + inv_box.slot_id = slot_r_hand + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "l_hand" + inv_box.icon = 'icons/mob/screen_alien.dmi' + inv_box.icon_state = "hand_l_inactive" + if(mymob && mymob.hand) //This being 1 means the left hand is in use + inv_box.icon_state = "hand_l_active" + inv_box.screen_loc = ui_lhand + inv_box.layer = 19 + inv_box.slot_id = slot_l_hand + l_hand_hud_object = inv_box + adding += inv_box + +//pocket 1 + inv_box = new /obj/screen/inventory() + inv_box.name = "storage1" + inv_box.icon = 'icons/mob/screen_alien.dmi' + inv_box.icon_state = "pocket" + inv_box.screen_loc = ui_alien_storage_l + inv_box.slot_id = slot_l_store + inv_box.layer = 19 + adding += inv_box + +//pocket 2 + inv_box = new /obj/screen/inventory() + inv_box.name = "storage2" + inv_box.icon = 'icons/mob/screen_alien.dmi' + inv_box.icon_state = "pocket" + inv_box.screen_loc = ui_alien_storage_r + inv_box.slot_id = slot_r_store + inv_box.layer = 19 + adding += inv_box + +//begin buttons + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = "swap_1" + using.screen_loc = ui_swaphand1 + using.layer = 19 + adding += using + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = "swap_2" + using.screen_loc = ui_swaphand2 + using.layer = 19 + adding += using + + using = new /obj/screen() + using.name = "act_intent" + using.icon_state = mymob.a_intent + using.screen_loc = ui_acti + using.layer = 20 + adding += using + action_intent = using + + using = new /obj/screen() + using.name = "mov_intent" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.screen_loc = ui_movi + using.layer = 20 + adding += using + move_intent = using + + using = new /obj/screen() + using.name = "drop" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = "act_drop" + using.screen_loc = ui_drop_throw + using.layer = 19 + adding += using + + using = new /obj/screen() + using.name = "resist" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = "act_resist" + using.screen_loc = ui_pull_resist + using.layer = 19 + adding += using + + mymob.throw_icon = new /obj/screen() + mymob.throw_icon.icon = 'icons/mob/screen_alien.dmi' + mymob.throw_icon.icon_state = "act_throw_off" + mymob.throw_icon.name = "throw/catch" + mymob.throw_icon.screen_loc = ui_drop_throw + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = 'icons/mob/screen_alien.dmi' + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_pull_resist + +//begin indicators + + mymob.oxygen = new /obj/screen() + mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' + mymob.oxygen.icon_state = "oxy0" + mymob.oxygen.name = "oxygen" + mymob.oxygen.screen_loc = ui_alien_oxygen + + mymob.toxin = new /obj/screen() + mymob.toxin.icon = 'icons/mob/screen_alien.dmi' + mymob.toxin.icon_state = "tox0" + mymob.toxin.name = "toxin" + mymob.toxin.screen_loc = ui_alien_toxin + + mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen_alien.dmi' + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_alien_fire + + mymob.healths = new /obj/screen() + mymob.healths.icon = 'icons/mob/screen_alien.dmi' + mymob.healths.icon_state = "health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_alien_health + + alien_plasma_display = new /obj/screen() + alien_plasma_display.icon = 'icons/mob/screen_gen.dmi' + alien_plasma_display.icon_state = "power_display2" + alien_plasma_display.name = "plasma stored" + alien_plasma_display.screen_loc = ui_alienplasmadisplay + + mymob.blind = new /obj/screen() + mymob.blind.icon = 'icons/mob/screen_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" + mymob.blind.name = " " + mymob.blind.screen_loc = "CENTER-7,CENTER-7" + mymob.blind.layer = 0 + + mymob.flash = new /obj/screen() + mymob.flash.icon = 'icons/mob/screen_alien.dmi' + mymob.flash.icon_state = "blank" + mymob.flash.name = "flash" + mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" + mymob.flash.layer = 17 + + mymob.zone_sel = new /obj/screen/zone_sel/alien() + mymob.zone_sel.icon = 'icons/mob/screen_alien.dmi' + mymob.zone_sel.update_icon() + + mymob.client.screen = null + + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += adding + other + diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 608b041717d..cf9df80ad3b 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -1,77 +1,77 @@ -/datum/hud/proc/larva_hud() - adding = list() - other = list() - - var/obj/screen/using - - using = new /obj/screen() - using.name = "act_intent" - using.icon_state = mymob.a_intent - using.screen_loc = ui_acti - using.layer = 20 - adding += using - action_intent = using - - using = new /obj/screen() - using.name = "mov_intent" - using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") - using.screen_loc = ui_movi - using.layer = 20 - adding += using - move_intent = using - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_alien_oxygen - - mymob.toxin = new /obj/screen() - mymob.toxin.icon = 'icons/mob/screen_alien.dmi' - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_alien_toxin - - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_alien.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_alien_fire - - - mymob.healths = new /obj/screen() - mymob.healths.icon = 'icons/mob/screen_alien.dmi' - mymob.healths.icon_state = "health0" - mymob.healths.name = "health" - mymob.healths.screen_loc = ui_alien_health - - mymob.pullin = new /obj/screen() - mymob.pullin.icon = 'icons/mob/screen_alien.dmi' - mymob.pullin.icon_state = "pull0" - mymob.pullin.name = "pull" - mymob.pullin.screen_loc = ui_pull_resist - - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "CENTER-7,CENTER-7" - mymob.blind.layer = 0 - - mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_alien.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" - mymob.flash.layer = 17 - - mymob.zone_sel = new /obj/screen/zone_sel/alien() - mymob.zone_sel.icon = 'icons/mob/screen_alien.dmi' - mymob.zone_sel.update_icon() - - mymob.client.screen = null - - mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) +/datum/hud/proc/larva_hud() + adding = list() + other = list() + + var/obj/screen/using + + using = new /obj/screen() + using.name = "act_intent" + using.icon_state = mymob.a_intent + using.screen_loc = ui_acti + using.layer = 20 + adding += using + action_intent = using + + using = new /obj/screen() + using.name = "mov_intent" + using.icon = 'icons/mob/screen_alien.dmi' + using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.screen_loc = ui_movi + using.layer = 20 + adding += using + move_intent = using + + mymob.oxygen = new /obj/screen() + mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' + mymob.oxygen.icon_state = "oxy0" + mymob.oxygen.name = "oxygen" + mymob.oxygen.screen_loc = ui_alien_oxygen + + mymob.toxin = new /obj/screen() + mymob.toxin.icon = 'icons/mob/screen_alien.dmi' + mymob.toxin.icon_state = "tox0" + mymob.toxin.name = "toxin" + mymob.toxin.screen_loc = ui_alien_toxin + + + mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen_alien.dmi' + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_alien_fire + + + mymob.healths = new /obj/screen() + mymob.healths.icon = 'icons/mob/screen_alien.dmi' + mymob.healths.icon_state = "health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_alien_health + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = 'icons/mob/screen_alien.dmi' + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_pull_resist + + mymob.blind = new /obj/screen() + mymob.blind.icon = 'icons/mob/screen_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" + mymob.blind.name = " " + mymob.blind.screen_loc = "CENTER-7,CENTER-7" + mymob.blind.layer = 0 + + mymob.flash = new /obj/screen() + mymob.flash.icon = 'icons/mob/screen_alien.dmi' + mymob.flash.icon_state = "blank" + mymob.flash.name = "flash" + mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" + mymob.flash.layer = 17 + + mymob.zone_sel = new /obj/screen/zone_sel/alien() + mymob.zone_sel.icon = 'icons/mob/screen_alien.dmi' + mymob.zone_sel.update_icon() + + mymob.client.screen = null + + mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other \ No newline at end of file diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index d76b92553c6..ba74450b504 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -1,305 +1,305 @@ -/* - The global hud: - Uses the same visual objects for all players. -*/ - -var/datum/global_hud/global_hud = new() - -/datum/global_hud - var/obj/screen/druggy - var/obj/screen/blurry - var/list/vimpaired - var/list/darkMask - -/datum/global_hud/New() - //420erryday psychedellic colours screen overlay for when you are high - druggy = new /obj/screen() - druggy.screen_loc = "WEST,SOUTH to EAST,NORTH" - druggy.icon_state = "druggy" - druggy.blend_mode = BLEND_MULTIPLY - druggy.layer = 17 - druggy.mouse_opacity = 0 - - //that white blurry effect you get when you eyes are damaged - blurry = new /obj/screen() - blurry.screen_loc = "WEST,SOUTH to EAST,NORTH" - blurry.icon_state = "blurry" - blurry.layer = 17 - blurry.mouse_opacity = 0 - - var/obj/screen/O - var/i - //that nasty looking dither you get when you're short-sighted - vimpaired = newlist(/obj/screen,/obj/screen,/obj/screen,/obj/screen) - O = vimpaired[1] - O.screen_loc = "WEST,SOUTH to CENTER-3,NORTH" //West dither - O = vimpaired[2] - O.screen_loc = "WEST,SOUTH to EAST,CENTER-3" //South dither - O = vimpaired[3] - O.screen_loc = "CENTER+3,SOUTH to EAST,NORTH" //East dither - O = vimpaired[4] - O.screen_loc = "WEST,CENTER+3 to EAST,NORTH" //North dither - - //welding mask overlay black/dither - darkMask = newlist(/obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen) - O = darkMask[1] - O.screen_loc = "CENTER-5,CENTER-5 to CENTER-3,CENTER+5" //West dither - O = darkMask[2] - O.screen_loc = "CENTER-5,CENTER-5 to CENTER+5,CENTER-3" //South dither - O = darkMask[3] - O.screen_loc = "CENTER+3,CENTER-5 to CENTER+5,CENTER+5" //East dither - O = darkMask[4] - O.screen_loc = "CENTER-5,CENTER+3 to CENTER+5,CENTER+5" //North dither - O = darkMask[5] - O.screen_loc = "WEST,SOUTH to CENTER-5,NORTH" //West black - O = darkMask[6] - O.screen_loc = "WEST,SOUTH to EAST,CENTER-5" //South black - O = darkMask[7] - O.screen_loc = "CENTER+5,SOUTH to EAST,NORTH" //East black - O = darkMask[8] - O.screen_loc = "WEST,CENTER+5 to EAST,NORTH" //North black - - - for(i = 1, i <= 4, i++) - O = vimpaired[i] - O.icon_state = "dither50" - O.blend_mode = BLEND_MULTIPLY - O.layer = 17 - O.mouse_opacity = 0 - - O = darkMask[i] - O.icon_state = "dither50" - O.blend_mode = BLEND_MULTIPLY - O.layer = 17 - O.mouse_opacity = 0 - - for(i = 5, i <= 8, i++) - O = darkMask[i] - O.icon_state = "black" - O.blend_mode = BLEND_MULTIPLY - O.layer = 17 - O.mouse_opacity = 0 - -/* - The hud datum - Used to show and hide huds for all the different mob types, - including inventories and item quick actions. -*/ - -/datum/hud - var/mob/mymob - - var/hud_shown = 1 //Used for the HUD toggle (F12) - var/hud_version = 1 //Current displayed version of the HUD - var/inventory_shown = 1 //the inventory - var/show_intent_icons = 0 - var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) - - var/obj/screen/lingchemdisplay - var/obj/screen/lingstingdisplay - var/obj/screen/blobpwrdisplay - var/obj/screen/blobhealthdisplay - var/obj/screen/alien_plasma_display - var/obj/screen/r_hand_hud_object - var/obj/screen/l_hand_hud_object - var/obj/screen/action_intent - var/obj/screen/move_intent - - var/list/adding - var/list/other - var/list/obj/screen/hotkeybuttons - - var/list/obj/screen/item_action/item_action_list = list() //Used for the item action ui buttons. - - -datum/hud/New(mob/owner) - mymob = owner - instantiate() - ..() - - -/datum/hud/proc/hidden_inventory_update() - if(!mymob) - return - - if(ishuman(mymob)) - var/mob/living/carbon/human/H = mymob - if(H.handcuffed) - H.handcuffed.screen_loc = null //no handcuffs in my UI! - if(inventory_shown && hud_shown) - if(H.shoes) H.shoes.screen_loc = ui_shoes - if(H.gloves) H.gloves.screen_loc = ui_gloves - if(H.ears) H.ears.screen_loc = ui_ears - if(H.glasses) H.glasses.screen_loc = ui_glasses - if(H.w_uniform) H.w_uniform.screen_loc = ui_iclothing - if(H.wear_suit) H.wear_suit.screen_loc = ui_oclothing - if(H.wear_mask) H.wear_mask.screen_loc = ui_mask - if(H.head) H.head.screen_loc = ui_head - else - if(H.shoes) H.shoes.screen_loc = null - if(H.gloves) H.gloves.screen_loc = null - if(H.ears) H.ears.screen_loc = null - if(H.glasses) H.glasses.screen_loc = null - if(H.w_uniform) H.w_uniform.screen_loc = null - if(H.wear_suit) H.wear_suit.screen_loc = null - if(H.wear_mask) H.wear_mask.screen_loc = null - if(H.head) H.head.screen_loc = null - - -/datum/hud/proc/persistant_inventory_update() - if(!mymob) - return - - if(ishuman(mymob)) - var/mob/living/carbon/human/H = mymob - if(hud_shown) - if(H.s_store) H.s_store.screen_loc = ui_sstore1 - if(H.wear_id) H.wear_id.screen_loc = ui_id - if(H.belt) H.belt.screen_loc = ui_belt - if(H.back) H.back.screen_loc = ui_back - if(H.l_store) H.l_store.screen_loc = ui_storage1 - if(H.r_store) H.r_store.screen_loc = ui_storage2 - else - if(H.s_store) H.s_store.screen_loc = null - if(H.wear_id) H.wear_id.screen_loc = null - if(H.belt) H.belt.screen_loc = null - if(H.back) H.back.screen_loc = null - if(H.l_store) H.l_store.screen_loc = null - if(H.r_store) H.r_store.screen_loc = null - - -/datum/hud/proc/instantiate() - if(!ismob(mymob)) - return 0 - if(!mymob.client) - return 0 - - var/ui_style = ui_style2icon(mymob.client.prefs.UI_style) - - if(ishuman(mymob)) - human_hud(ui_style) // Pass the player the UI style chosen in preferences - else if(ismonkey(mymob)) - monkey_hud(ui_style) - else if(isbrain(mymob)) - brain_hud(ui_style) - else if(islarva(mymob)) - larva_hud() - else if(isalien(mymob)) - alien_hud() - else if(isAI(mymob)) - ai_hud() - else if(isrobot(mymob)) - robot_hud() - else if(isobserver(mymob)) - ghost_hud() - else if(isovermind(mymob)) - blob_hud() - - if(istype(mymob.loc,/obj/mecha)) - show_hud(HUD_STYLE_REDUCED) - -//Version denotes which style should be displayed. blank or 0 means "next version" -/datum/hud/proc/show_hud(var/version = 0) - if(!ismob(mymob)) - return 0 - if(!mymob.client) - return 0 - var/display_hud_version = version - if(!display_hud_version) //If 0 or blank, display the next hud version - display_hud_version = hud_version + 1 - if(display_hud_version > HUD_VERSIONS) //If the requested version number is greater than the available versions, reset back to the first version - display_hud_version = 1 - - switch(display_hud_version) - if(HUD_STYLE_STANDARD) //Default HUD - hud_shown = 1 //Governs behavior of other procs - if(adding) - mymob.client.screen += adding - if(other && inventory_shown) - mymob.client.screen += other - if(hotkeybuttons && !hotkey_ui_hidden) - mymob.client.screen += hotkeybuttons - - action_intent.screen_loc = ui_acti //Restore intent selection to the original position - mymob.client.screen += mymob.zone_sel //This one is a special snowflake - mymob.client.screen += mymob.bodytemp //As are the rest of these... - mymob.client.screen += mymob.fire - mymob.client.screen += mymob.healths - mymob.client.screen += mymob.internals - mymob.client.screen += mymob.nutrition_icon - mymob.client.screen += mymob.oxygen - mymob.client.screen += mymob.pressure - mymob.client.screen += mymob.toxin - mymob.client.screen += lingstingdisplay - mymob.client.screen += lingchemdisplay - - hidden_inventory_update() - persistant_inventory_update() - mymob.update_action_buttons() - if(HUD_STYLE_REDUCED) //Reduced HUD - hud_shown = 0 //Governs behavior of other procs - if(adding) - mymob.client.screen -= adding - if(other) - mymob.client.screen -= other - if(hotkeybuttons) - mymob.client.screen -= hotkeybuttons - if(item_action_list) - mymob.client.screen -= item_action_list - - //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone. - mymob.client.screen -= mymob.zone_sel //zone_sel is a mob variable for some reason. - mymob.client.screen -= lingstingdisplay - mymob.client.screen -= lingchemdisplay - - //These ones are a part of 'adding', 'other' or 'hotkeybuttons' but we want them to stay - mymob.client.screen += l_hand_hud_object //we want the hands to be visible - mymob.client.screen += r_hand_hud_object //we want the hands to be visible - mymob.client.screen += action_intent //we want the intent swticher visible - action_intent.screen_loc = ui_acti_alt //move this to the alternative position, where zone_select usually is. - - hidden_inventory_update() - persistant_inventory_update() - mymob.update_action_buttons() - if(HUD_STYLE_NOHUD) //No HUD - hud_shown = 0 //Governs behavior of other procs - if(adding) - mymob.client.screen -= adding - if(other) - mymob.client.screen -= other - if(hotkeybuttons) - mymob.client.screen -= hotkeybuttons - if(item_action_list) - mymob.client.screen -= item_action_list - - //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone. - mymob.client.screen -= mymob.zone_sel //zone_sel is a mob variable for some reason. - mymob.client.screen -= mymob.bodytemp - mymob.client.screen -= mymob.fire - mymob.client.screen -= mymob.healths - mymob.client.screen -= mymob.internals - mymob.client.screen -= mymob.nutrition_icon - mymob.client.screen -= mymob.oxygen - mymob.client.screen -= mymob.pressure - mymob.client.screen -= mymob.toxin - mymob.client.screen -= lingstingdisplay - mymob.client.screen -= lingchemdisplay - - hidden_inventory_update() - persistant_inventory_update() - mymob.update_action_buttons() - hud_version = display_hud_version - -//Triggered when F12 is pressed (Unless someone changed something in the DMF) -/mob/verb/button_pressed_F12() - set name = "F12" - set hidden = 1 - - if(hud_used && client) - if(ishuman(src)) - hud_used.show_hud() //Shows the next hud preset - usr << "Switched HUD mode." - else - usr << "Inventory hiding is currently only supported for human mobs, sorry." - else - usr << "This mob type does not use a HUD." +/* + The global hud: + Uses the same visual objects for all players. +*/ + +var/datum/global_hud/global_hud = new() + +/datum/global_hud + var/obj/screen/druggy + var/obj/screen/blurry + var/list/vimpaired + var/list/darkMask + +/datum/global_hud/New() + //420erryday psychedellic colours screen overlay for when you are high + druggy = new /obj/screen() + druggy.screen_loc = "WEST,SOUTH to EAST,NORTH" + druggy.icon_state = "druggy" + druggy.blend_mode = BLEND_MULTIPLY + druggy.layer = 17 + druggy.mouse_opacity = 0 + + //that white blurry effect you get when you eyes are damaged + blurry = new /obj/screen() + blurry.screen_loc = "WEST,SOUTH to EAST,NORTH" + blurry.icon_state = "blurry" + blurry.layer = 17 + blurry.mouse_opacity = 0 + + var/obj/screen/O + var/i + //that nasty looking dither you get when you're short-sighted + vimpaired = newlist(/obj/screen,/obj/screen,/obj/screen,/obj/screen) + O = vimpaired[1] + O.screen_loc = "WEST,SOUTH to CENTER-3,NORTH" //West dither + O = vimpaired[2] + O.screen_loc = "WEST,SOUTH to EAST,CENTER-3" //South dither + O = vimpaired[3] + O.screen_loc = "CENTER+3,SOUTH to EAST,NORTH" //East dither + O = vimpaired[4] + O.screen_loc = "WEST,CENTER+3 to EAST,NORTH" //North dither + + //welding mask overlay black/dither + darkMask = newlist(/obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen, /obj/screen) + O = darkMask[1] + O.screen_loc = "CENTER-5,CENTER-5 to CENTER-3,CENTER+5" //West dither + O = darkMask[2] + O.screen_loc = "CENTER-5,CENTER-5 to CENTER+5,CENTER-3" //South dither + O = darkMask[3] + O.screen_loc = "CENTER+3,CENTER-5 to CENTER+5,CENTER+5" //East dither + O = darkMask[4] + O.screen_loc = "CENTER-5,CENTER+3 to CENTER+5,CENTER+5" //North dither + O = darkMask[5] + O.screen_loc = "WEST,SOUTH to CENTER-5,NORTH" //West black + O = darkMask[6] + O.screen_loc = "WEST,SOUTH to EAST,CENTER-5" //South black + O = darkMask[7] + O.screen_loc = "CENTER+5,SOUTH to EAST,NORTH" //East black + O = darkMask[8] + O.screen_loc = "WEST,CENTER+5 to EAST,NORTH" //North black + + + for(i = 1, i <= 4, i++) + O = vimpaired[i] + O.icon_state = "dither50" + O.blend_mode = BLEND_MULTIPLY + O.layer = 17 + O.mouse_opacity = 0 + + O = darkMask[i] + O.icon_state = "dither50" + O.blend_mode = BLEND_MULTIPLY + O.layer = 17 + O.mouse_opacity = 0 + + for(i = 5, i <= 8, i++) + O = darkMask[i] + O.icon_state = "black" + O.blend_mode = BLEND_MULTIPLY + O.layer = 17 + O.mouse_opacity = 0 + +/* + The hud datum + Used to show and hide huds for all the different mob types, + including inventories and item quick actions. +*/ + +/datum/hud + var/mob/mymob + + var/hud_shown = 1 //Used for the HUD toggle (F12) + var/hud_version = 1 //Current displayed version of the HUD + var/inventory_shown = 1 //the inventory + var/show_intent_icons = 0 + var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) + + var/obj/screen/lingchemdisplay + var/obj/screen/lingstingdisplay + var/obj/screen/blobpwrdisplay + var/obj/screen/blobhealthdisplay + var/obj/screen/alien_plasma_display + var/obj/screen/r_hand_hud_object + var/obj/screen/l_hand_hud_object + var/obj/screen/action_intent + var/obj/screen/move_intent + + var/list/adding + var/list/other + var/list/obj/screen/hotkeybuttons + + var/list/obj/screen/item_action/item_action_list = list() //Used for the item action ui buttons. + + +datum/hud/New(mob/owner) + mymob = owner + instantiate() + ..() + + +/datum/hud/proc/hidden_inventory_update() + if(!mymob) + return + + if(ishuman(mymob)) + var/mob/living/carbon/human/H = mymob + if(H.handcuffed) + H.handcuffed.screen_loc = null //no handcuffs in my UI! + if(inventory_shown && hud_shown) + if(H.shoes) H.shoes.screen_loc = ui_shoes + if(H.gloves) H.gloves.screen_loc = ui_gloves + if(H.ears) H.ears.screen_loc = ui_ears + if(H.glasses) H.glasses.screen_loc = ui_glasses + if(H.w_uniform) H.w_uniform.screen_loc = ui_iclothing + if(H.wear_suit) H.wear_suit.screen_loc = ui_oclothing + if(H.wear_mask) H.wear_mask.screen_loc = ui_mask + if(H.head) H.head.screen_loc = ui_head + else + if(H.shoes) H.shoes.screen_loc = null + if(H.gloves) H.gloves.screen_loc = null + if(H.ears) H.ears.screen_loc = null + if(H.glasses) H.glasses.screen_loc = null + if(H.w_uniform) H.w_uniform.screen_loc = null + if(H.wear_suit) H.wear_suit.screen_loc = null + if(H.wear_mask) H.wear_mask.screen_loc = null + if(H.head) H.head.screen_loc = null + + +/datum/hud/proc/persistant_inventory_update() + if(!mymob) + return + + if(ishuman(mymob)) + var/mob/living/carbon/human/H = mymob + if(hud_shown) + if(H.s_store) H.s_store.screen_loc = ui_sstore1 + if(H.wear_id) H.wear_id.screen_loc = ui_id + if(H.belt) H.belt.screen_loc = ui_belt + if(H.back) H.back.screen_loc = ui_back + if(H.l_store) H.l_store.screen_loc = ui_storage1 + if(H.r_store) H.r_store.screen_loc = ui_storage2 + else + if(H.s_store) H.s_store.screen_loc = null + if(H.wear_id) H.wear_id.screen_loc = null + if(H.belt) H.belt.screen_loc = null + if(H.back) H.back.screen_loc = null + if(H.l_store) H.l_store.screen_loc = null + if(H.r_store) H.r_store.screen_loc = null + + +/datum/hud/proc/instantiate() + if(!ismob(mymob)) + return 0 + if(!mymob.client) + return 0 + + var/ui_style = ui_style2icon(mymob.client.prefs.UI_style) + + if(ishuman(mymob)) + human_hud(ui_style) // Pass the player the UI style chosen in preferences + else if(ismonkey(mymob)) + monkey_hud(ui_style) + else if(isbrain(mymob)) + brain_hud(ui_style) + else if(islarva(mymob)) + larva_hud() + else if(isalien(mymob)) + alien_hud() + else if(isAI(mymob)) + ai_hud() + else if(isrobot(mymob)) + robot_hud() + else if(isobserver(mymob)) + ghost_hud() + else if(isovermind(mymob)) + blob_hud() + + if(istype(mymob.loc,/obj/mecha)) + show_hud(HUD_STYLE_REDUCED) + +//Version denotes which style should be displayed. blank or 0 means "next version" +/datum/hud/proc/show_hud(var/version = 0) + if(!ismob(mymob)) + return 0 + if(!mymob.client) + return 0 + var/display_hud_version = version + if(!display_hud_version) //If 0 or blank, display the next hud version + display_hud_version = hud_version + 1 + if(display_hud_version > HUD_VERSIONS) //If the requested version number is greater than the available versions, reset back to the first version + display_hud_version = 1 + + switch(display_hud_version) + if(HUD_STYLE_STANDARD) //Default HUD + hud_shown = 1 //Governs behavior of other procs + if(adding) + mymob.client.screen += adding + if(other && inventory_shown) + mymob.client.screen += other + if(hotkeybuttons && !hotkey_ui_hidden) + mymob.client.screen += hotkeybuttons + + action_intent.screen_loc = ui_acti //Restore intent selection to the original position + mymob.client.screen += mymob.zone_sel //This one is a special snowflake + mymob.client.screen += mymob.bodytemp //As are the rest of these... + mymob.client.screen += mymob.fire + mymob.client.screen += mymob.healths + mymob.client.screen += mymob.internals + mymob.client.screen += mymob.nutrition_icon + mymob.client.screen += mymob.oxygen + mymob.client.screen += mymob.pressure + mymob.client.screen += mymob.toxin + mymob.client.screen += lingstingdisplay + mymob.client.screen += lingchemdisplay + + hidden_inventory_update() + persistant_inventory_update() + mymob.update_action_buttons() + if(HUD_STYLE_REDUCED) //Reduced HUD + hud_shown = 0 //Governs behavior of other procs + if(adding) + mymob.client.screen -= adding + if(other) + mymob.client.screen -= other + if(hotkeybuttons) + mymob.client.screen -= hotkeybuttons + if(item_action_list) + mymob.client.screen -= item_action_list + + //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone. + mymob.client.screen -= mymob.zone_sel //zone_sel is a mob variable for some reason. + mymob.client.screen -= lingstingdisplay + mymob.client.screen -= lingchemdisplay + + //These ones are a part of 'adding', 'other' or 'hotkeybuttons' but we want them to stay + mymob.client.screen += l_hand_hud_object //we want the hands to be visible + mymob.client.screen += r_hand_hud_object //we want the hands to be visible + mymob.client.screen += action_intent //we want the intent swticher visible + action_intent.screen_loc = ui_acti_alt //move this to the alternative position, where zone_select usually is. + + hidden_inventory_update() + persistant_inventory_update() + mymob.update_action_buttons() + if(HUD_STYLE_NOHUD) //No HUD + hud_shown = 0 //Governs behavior of other procs + if(adding) + mymob.client.screen -= adding + if(other) + mymob.client.screen -= other + if(hotkeybuttons) + mymob.client.screen -= hotkeybuttons + if(item_action_list) + mymob.client.screen -= item_action_list + + //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone. + mymob.client.screen -= mymob.zone_sel //zone_sel is a mob variable for some reason. + mymob.client.screen -= mymob.bodytemp + mymob.client.screen -= mymob.fire + mymob.client.screen -= mymob.healths + mymob.client.screen -= mymob.internals + mymob.client.screen -= mymob.nutrition_icon + mymob.client.screen -= mymob.oxygen + mymob.client.screen -= mymob.pressure + mymob.client.screen -= mymob.toxin + mymob.client.screen -= lingstingdisplay + mymob.client.screen -= lingchemdisplay + + hidden_inventory_update() + persistant_inventory_update() + mymob.update_action_buttons() + hud_version = display_hud_version + +//Triggered when F12 is pressed (Unless someone changed something in the DMF) +/mob/verb/button_pressed_F12() + set name = "F12" + set hidden = 1 + + if(hud_used && client) + if(ishuman(src)) + hud_used.show_hud() //Shows the next hud preset + usr << "Switched HUD mode." + else + usr << "Inventory hiding is currently only supported for human mobs, sorry." + else + usr << "This mob type does not use a HUD." diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index e4f97df7408..87b3aaa984a 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -1,383 +1,383 @@ -/datum/hud/proc/human_hud(ui_style = 'icons/mob/screen_midnight.dmi') - adding = list() - other = list() - hotkeybuttons = list() //These can be disabled for hotkey users - - var/obj/screen/using - var/obj/screen/inventory/inv_box - - using = new /obj/screen() - using.name = "act_intent" - using.icon_state = mymob.a_intent - using.screen_loc = ui_acti - using.layer = 20 - adding += using - action_intent = using - - using = new /obj/screen() - using.name = "mov_intent" - using.icon = ui_style - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") - using.screen_loc = ui_movi - using.layer = 20 - adding += using - move_intent = using - - using = new /obj/screen() - using.name = "drop" - using.icon = ui_style - using.icon_state = "act_drop" - using.screen_loc = ui_drop_throw - using.layer = 19 - hotkeybuttons += using - - inv_box = new /obj/screen/inventory() - inv_box.name = "i_clothing" - inv_box.icon = ui_style - inv_box.slot_id = slot_w_uniform - inv_box.icon_state = "uniform" - inv_box.screen_loc = ui_iclothing - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "o_clothing" - inv_box.icon = ui_style - inv_box.slot_id = slot_wear_suit - inv_box.icon_state = "suit" - inv_box.screen_loc = ui_oclothing - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "r_hand" - inv_box.icon = ui_style - inv_box.icon_state = "hand_r_inactive" - if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use - inv_box.icon_state = "hand_r_active" - inv_box.screen_loc = ui_rhand - inv_box.slot_id = slot_r_hand - inv_box.layer = 19 - r_hand_hud_object = inv_box - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "l_hand" - inv_box.icon = ui_style - inv_box.icon_state = "hand_l_inactive" - if(mymob && mymob.hand) //This being 1 means the left hand is in use - inv_box.icon_state = "hand_l_active" - inv_box.screen_loc = ui_lhand - inv_box.slot_id = slot_l_hand - inv_box.layer = 19 - l_hand_hud_object = inv_box - adding += inv_box - - using = new /obj/screen/inventory() - using.name = "hand" - using.icon = ui_style - using.icon_state = "swap_1" - using.screen_loc = ui_swaphand1 - using.layer = 19 - adding += using - - using = new /obj/screen/inventory() - using.name = "hand" - using.icon = ui_style - using.icon_state = "swap_2" - using.screen_loc = ui_swaphand2 - using.layer = 19 - adding += using - - inv_box = new /obj/screen/inventory() - inv_box.name = "id" - inv_box.icon = ui_style - inv_box.icon_state = "id" - inv_box.screen_loc = ui_id - inv_box.slot_id = slot_wear_id - inv_box.layer = 19 - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "mask" - inv_box.icon = ui_style - inv_box.icon_state = "mask" - inv_box.screen_loc = ui_mask - inv_box.slot_id = slot_wear_mask - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "back" - inv_box.icon = ui_style - inv_box.icon_state = "back" - inv_box.screen_loc = ui_back - inv_box.slot_id = slot_back - inv_box.layer = 19 - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "storage1" - inv_box.icon = ui_style - inv_box.icon_state = "pocket" - inv_box.screen_loc = ui_storage1 - inv_box.slot_id = slot_l_store - inv_box.layer = 19 - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "storage2" - inv_box.icon = ui_style - inv_box.icon_state = "pocket" - inv_box.screen_loc = ui_storage2 - inv_box.slot_id = slot_r_store - inv_box.layer = 19 - adding += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "suit storage" - inv_box.icon = ui_style - inv_box.icon_state = "suit_storage" - inv_box.screen_loc = ui_sstore1 - inv_box.slot_id = slot_s_store - inv_box.layer = 19 - adding += inv_box - - using = new /obj/screen() - using.name = "resist" - using.icon = ui_style - using.icon_state = "act_resist" - using.screen_loc = ui_pull_resist - using.layer = 19 - hotkeybuttons += using - - using = new /obj/screen() - using.name = "toggle" - using.icon = ui_style - using.icon_state = "toggle" - using.screen_loc = ui_inventory - using.layer = 20 - adding += using - - using = new /obj/screen() - using.name = "equip" - using.icon = ui_style - using.icon_state = "act_equip" - using.screen_loc = ui_equip - using.layer = 20 - adding += using - - inv_box = new /obj/screen/inventory() - inv_box.name = "gloves" - inv_box.icon = ui_style - inv_box.icon_state = "gloves" - inv_box.screen_loc = ui_gloves - inv_box.slot_id = slot_gloves - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "eyes" - inv_box.icon = ui_style - inv_box.icon_state = "glasses" - inv_box.screen_loc = ui_glasses - inv_box.slot_id = slot_glasses - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "ears" - inv_box.icon = ui_style - inv_box.icon_state = "ears" - inv_box.screen_loc = ui_ears - inv_box.slot_id = slot_ears - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "head" - inv_box.icon = ui_style - inv_box.icon_state = "head" - inv_box.screen_loc = ui_head - inv_box.slot_id = slot_head - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "shoes" - inv_box.icon = ui_style - inv_box.icon_state = "shoes" - inv_box.screen_loc = ui_shoes - inv_box.slot_id = slot_shoes - inv_box.layer = 19 - other += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "belt" - inv_box.icon = ui_style - inv_box.icon_state = "belt" - inv_box.screen_loc = ui_belt - inv_box.slot_id = slot_belt - inv_box.layer = 19 - adding += inv_box - - mymob.throw_icon = new /obj/screen() - mymob.throw_icon.icon = ui_style - mymob.throw_icon.icon_state = "act_throw_off" - mymob.throw_icon.name = "throw/catch" - mymob.throw_icon.screen_loc = ui_drop_throw - hotkeybuttons += mymob.throw_icon - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.pressure = new /obj/screen() - mymob.pressure.icon_state = "pressure0" - mymob.pressure.name = "pressure" - mymob.pressure.screen_loc = ui_pressure - - mymob.toxin = new /obj/screen() - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_toxin - - mymob.internals = new /obj/screen() - mymob.internals.icon_state = "internal0" - mymob.internals.name = "internal" - mymob.internals.screen_loc = ui_internal - - mymob.fire = new /obj/screen() - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp1" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - - mymob.healths = new /obj/screen() - mymob.healths.icon_state = "health0" - mymob.healths.name = "health" - mymob.healths.screen_loc = ui_health - - mymob.nutrition_icon = new /obj/screen() - mymob.nutrition_icon.icon_state = "nutrition0" - mymob.nutrition_icon.name = "nutrition" - mymob.nutrition_icon.screen_loc = ui_nutrition - - mymob.pullin = new /obj/screen() - mymob.pullin.icon = ui_style - mymob.pullin.icon_state = "pull0" - mymob.pullin.name = "pull" - mymob.pullin.screen_loc = ui_pull_resist - hotkeybuttons += mymob.pullin - - lingchemdisplay = new /obj/screen() - lingchemdisplay.name = "chemical storage" - lingchemdisplay.icon_state = "power_display" - lingchemdisplay.screen_loc = ui_lingchemdisplay - lingchemdisplay.layer = 20 - lingchemdisplay.invisibility = 101 - - lingstingdisplay = new /obj/screen() - lingstingdisplay.name = "current sting" - lingstingdisplay.screen_loc = ui_lingstingdisplay - lingstingdisplay.layer = 20 - lingstingdisplay.invisibility = 101 - - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "CENTER-7,CENTER-7" - mymob.blind.mouse_opacity = 0 - mymob.blind.layer = 0 - - mymob.damageoverlay = new /obj/screen() - mymob.damageoverlay.icon = 'icons/mob/screen_full.dmi' - mymob.damageoverlay.icon_state = "oxydamageoverlay0" - mymob.damageoverlay.name = "dmg" - mymob.damageoverlay.blend_mode = BLEND_MULTIPLY - mymob.damageoverlay.screen_loc = "CENTER-7,CENTER-7" - mymob.damageoverlay.mouse_opacity = 0 - mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top. - - mymob.flash = new /obj/screen() - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.blend_mode = BLEND_ADD - mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" - mymob.flash.layer = 17 - - mymob.zone_sel = new /obj/screen/zone_sel() - mymob.zone_sel.icon = ui_style - mymob.zone_sel.update_icon() - - mymob.client.screen = null - - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) - mymob.client.screen += adding + hotkeybuttons - inventory_shown = 0; - - -/mob/living/carbon/human/verb/toggle_hotkey_verbs() - set category = "OOC" - set name = "Toggle hotkey buttons" - set desc = "This disables or enables the user interface buttons which can be used with hotkeys." - - if(hud_used.hotkey_ui_hidden) - client.screen += hud_used.hotkeybuttons - hud_used.hotkey_ui_hidden = 0 - else - client.screen -= hud_used.hotkeybuttons - hud_used.hotkey_ui_hidden = 1 - - -/mob/living/carbon/human/update_action_buttons() - var/num = 1 - if(!hud_used) return - if(!client) return - - if(hud_used.hud_shown != 1) //Hud toggled to minimal - return - - client.screen -= hud_used.item_action_list - - for(var/obj/item/I in src) - if(I.action_button_name) - if(hud_used.item_action_list.len < num) - var/obj/screen/item_action/N = new(hud_used) - hud_used.item_action_list += N - - var/obj/screen/item_action/A = hud_used.item_action_list[num] - - A.icon = ui_style2icon(client.prefs.UI_style) - A.icon_state = "template" - - A.overlays = list() - var/image/img = image(I.icon, A, I.icon_state) - img.pixel_x = 0 - img.pixel_y = 0 - A.overlays += img - - A.name = I.action_button_name - A.owner = I - - client.screen += hud_used.item_action_list[num] - - switch(num) - if(1) - A.screen_loc = ui_action_slot1 - if(2) - A.screen_loc = ui_action_slot2 - if(3) - A.screen_loc = ui_action_slot3 - if(4) - A.screen_loc = ui_action_slot4 - if(5) - A.screen_loc = ui_action_slot5 - break //5 slots available, so no more can be added. - num++ +/datum/hud/proc/human_hud(ui_style = 'icons/mob/screen_midnight.dmi') + adding = list() + other = list() + hotkeybuttons = list() //These can be disabled for hotkey users + + var/obj/screen/using + var/obj/screen/inventory/inv_box + + using = new /obj/screen() + using.name = "act_intent" + using.icon_state = mymob.a_intent + using.screen_loc = ui_acti + using.layer = 20 + adding += using + action_intent = using + + using = new /obj/screen() + using.name = "mov_intent" + using.icon = ui_style + using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.screen_loc = ui_movi + using.layer = 20 + adding += using + move_intent = using + + using = new /obj/screen() + using.name = "drop" + using.icon = ui_style + using.icon_state = "act_drop" + using.screen_loc = ui_drop_throw + using.layer = 19 + hotkeybuttons += using + + inv_box = new /obj/screen/inventory() + inv_box.name = "i_clothing" + inv_box.icon = ui_style + inv_box.slot_id = slot_w_uniform + inv_box.icon_state = "uniform" + inv_box.screen_loc = ui_iclothing + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "o_clothing" + inv_box.icon = ui_style + inv_box.slot_id = slot_wear_suit + inv_box.icon_state = "suit" + inv_box.screen_loc = ui_oclothing + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "r_hand" + inv_box.icon = ui_style + inv_box.icon_state = "hand_r_inactive" + if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use + inv_box.icon_state = "hand_r_active" + inv_box.screen_loc = ui_rhand + inv_box.slot_id = slot_r_hand + inv_box.layer = 19 + r_hand_hud_object = inv_box + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "l_hand" + inv_box.icon = ui_style + inv_box.icon_state = "hand_l_inactive" + if(mymob && mymob.hand) //This being 1 means the left hand is in use + inv_box.icon_state = "hand_l_active" + inv_box.screen_loc = ui_lhand + inv_box.slot_id = slot_l_hand + inv_box.layer = 19 + l_hand_hud_object = inv_box + adding += inv_box + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "swap_1" + using.screen_loc = ui_swaphand1 + using.layer = 19 + adding += using + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "swap_2" + using.screen_loc = ui_swaphand2 + using.layer = 19 + adding += using + + inv_box = new /obj/screen/inventory() + inv_box.name = "id" + inv_box.icon = ui_style + inv_box.icon_state = "id" + inv_box.screen_loc = ui_id + inv_box.slot_id = slot_wear_id + inv_box.layer = 19 + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "mask" + inv_box.icon = ui_style + inv_box.icon_state = "mask" + inv_box.screen_loc = ui_mask + inv_box.slot_id = slot_wear_mask + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "back" + inv_box.icon = ui_style + inv_box.icon_state = "back" + inv_box.screen_loc = ui_back + inv_box.slot_id = slot_back + inv_box.layer = 19 + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "storage1" + inv_box.icon = ui_style + inv_box.icon_state = "pocket" + inv_box.screen_loc = ui_storage1 + inv_box.slot_id = slot_l_store + inv_box.layer = 19 + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "storage2" + inv_box.icon = ui_style + inv_box.icon_state = "pocket" + inv_box.screen_loc = ui_storage2 + inv_box.slot_id = slot_r_store + inv_box.layer = 19 + adding += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "suit storage" + inv_box.icon = ui_style + inv_box.icon_state = "suit_storage" + inv_box.screen_loc = ui_sstore1 + inv_box.slot_id = slot_s_store + inv_box.layer = 19 + adding += inv_box + + using = new /obj/screen() + using.name = "resist" + using.icon = ui_style + using.icon_state = "act_resist" + using.screen_loc = ui_pull_resist + using.layer = 19 + hotkeybuttons += using + + using = new /obj/screen() + using.name = "toggle" + using.icon = ui_style + using.icon_state = "toggle" + using.screen_loc = ui_inventory + using.layer = 20 + adding += using + + using = new /obj/screen() + using.name = "equip" + using.icon = ui_style + using.icon_state = "act_equip" + using.screen_loc = ui_equip + using.layer = 20 + adding += using + + inv_box = new /obj/screen/inventory() + inv_box.name = "gloves" + inv_box.icon = ui_style + inv_box.icon_state = "gloves" + inv_box.screen_loc = ui_gloves + inv_box.slot_id = slot_gloves + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "eyes" + inv_box.icon = ui_style + inv_box.icon_state = "glasses" + inv_box.screen_loc = ui_glasses + inv_box.slot_id = slot_glasses + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "ears" + inv_box.icon = ui_style + inv_box.icon_state = "ears" + inv_box.screen_loc = ui_ears + inv_box.slot_id = slot_ears + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "head" + inv_box.icon = ui_style + inv_box.icon_state = "head" + inv_box.screen_loc = ui_head + inv_box.slot_id = slot_head + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "shoes" + inv_box.icon = ui_style + inv_box.icon_state = "shoes" + inv_box.screen_loc = ui_shoes + inv_box.slot_id = slot_shoes + inv_box.layer = 19 + other += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "belt" + inv_box.icon = ui_style + inv_box.icon_state = "belt" + inv_box.screen_loc = ui_belt + inv_box.slot_id = slot_belt + inv_box.layer = 19 + adding += inv_box + + mymob.throw_icon = new /obj/screen() + mymob.throw_icon.icon = ui_style + mymob.throw_icon.icon_state = "act_throw_off" + mymob.throw_icon.name = "throw/catch" + mymob.throw_icon.screen_loc = ui_drop_throw + hotkeybuttons += mymob.throw_icon + + mymob.oxygen = new /obj/screen() + mymob.oxygen.icon_state = "oxy0" + mymob.oxygen.name = "oxygen" + mymob.oxygen.screen_loc = ui_oxygen + + mymob.pressure = new /obj/screen() + mymob.pressure.icon_state = "pressure0" + mymob.pressure.name = "pressure" + mymob.pressure.screen_loc = ui_pressure + + mymob.toxin = new /obj/screen() + mymob.toxin.icon_state = "tox0" + mymob.toxin.name = "toxin" + mymob.toxin.screen_loc = ui_toxin + + mymob.internals = new /obj/screen() + mymob.internals.icon_state = "internal0" + mymob.internals.name = "internal" + mymob.internals.screen_loc = ui_internal + + mymob.fire = new /obj/screen() + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_fire + + mymob.bodytemp = new /obj/screen() + mymob.bodytemp.icon_state = "temp1" + mymob.bodytemp.name = "body temperature" + mymob.bodytemp.screen_loc = ui_temp + + mymob.healths = new /obj/screen() + mymob.healths.icon_state = "health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_health + + mymob.nutrition_icon = new /obj/screen() + mymob.nutrition_icon.icon_state = "nutrition0" + mymob.nutrition_icon.name = "nutrition" + mymob.nutrition_icon.screen_loc = ui_nutrition + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = ui_style + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_pull_resist + hotkeybuttons += mymob.pullin + + lingchemdisplay = new /obj/screen() + lingchemdisplay.name = "chemical storage" + lingchemdisplay.icon_state = "power_display" + lingchemdisplay.screen_loc = ui_lingchemdisplay + lingchemdisplay.layer = 20 + lingchemdisplay.invisibility = 101 + + lingstingdisplay = new /obj/screen() + lingstingdisplay.name = "current sting" + lingstingdisplay.screen_loc = ui_lingstingdisplay + lingstingdisplay.layer = 20 + lingstingdisplay.invisibility = 101 + + mymob.blind = new /obj/screen() + mymob.blind.icon = 'icons/mob/screen_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" + mymob.blind.name = " " + mymob.blind.screen_loc = "CENTER-7,CENTER-7" + mymob.blind.mouse_opacity = 0 + mymob.blind.layer = 0 + + mymob.damageoverlay = new /obj/screen() + mymob.damageoverlay.icon = 'icons/mob/screen_full.dmi' + mymob.damageoverlay.icon_state = "oxydamageoverlay0" + mymob.damageoverlay.name = "dmg" + mymob.damageoverlay.blend_mode = BLEND_MULTIPLY + mymob.damageoverlay.screen_loc = "CENTER-7,CENTER-7" + mymob.damageoverlay.mouse_opacity = 0 + mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top. + + mymob.flash = new /obj/screen() + mymob.flash.icon_state = "blank" + mymob.flash.name = "flash" + mymob.flash.blend_mode = BLEND_ADD + mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" + mymob.flash.layer = 17 + + mymob.zone_sel = new /obj/screen/zone_sel() + mymob.zone_sel.icon = ui_style + mymob.zone_sel.update_icon() + + mymob.client.screen = null + + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += adding + hotkeybuttons + inventory_shown = 0; + + +/mob/living/carbon/human/verb/toggle_hotkey_verbs() + set category = "OOC" + set name = "Toggle hotkey buttons" + set desc = "This disables or enables the user interface buttons which can be used with hotkeys." + + if(hud_used.hotkey_ui_hidden) + client.screen += hud_used.hotkeybuttons + hud_used.hotkey_ui_hidden = 0 + else + client.screen -= hud_used.hotkeybuttons + hud_used.hotkey_ui_hidden = 1 + + +/mob/living/carbon/human/update_action_buttons() + var/num = 1 + if(!hud_used) return + if(!client) return + + if(hud_used.hud_shown != 1) //Hud toggled to minimal + return + + client.screen -= hud_used.item_action_list + + for(var/obj/item/I in src) + if(I.action_button_name) + if(hud_used.item_action_list.len < num) + var/obj/screen/item_action/N = new(hud_used) + hud_used.item_action_list += N + + var/obj/screen/item_action/A = hud_used.item_action_list[num] + + A.icon = ui_style2icon(client.prefs.UI_style) + A.icon_state = "template" + + A.overlays = list() + var/image/img = image(I.icon, A, I.icon_state) + img.pixel_x = 0 + img.pixel_y = 0 + A.overlays += img + + A.name = I.action_button_name + A.owner = I + + client.screen += hud_used.item_action_list[num] + + switch(num) + if(1) + A.screen_loc = ui_action_slot1 + if(2) + A.screen_loc = ui_action_slot2 + if(3) + A.screen_loc = ui_action_slot3 + if(4) + A.screen_loc = ui_action_slot4 + if(5) + A.screen_loc = ui_action_slot5 + break //5 slots available, so no more can be added. + num++ diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 2cb47a2e57e..e1ccf1732a6 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -1,35 +1,35 @@ - -/datum/hud/proc/unplayer_hud() - return - -/datum/hud/proc/ghost_hud() - return - -/datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen_midnight.dmi') - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "CENTER-7,CENTER-7" - mymob.blind.layer = 0 - -/datum/hud/proc/ai_hud() - return - -/datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen_midnight.dmi') - - blobpwrdisplay = new /obj/screen() - blobpwrdisplay.name = "blob power" - blobpwrdisplay.icon_state = "block" - blobpwrdisplay.screen_loc = ui_health - blobpwrdisplay.layer = 20 - - blobhealthdisplay = new /obj/screen() - blobhealthdisplay.name = "blob health" - blobhealthdisplay.icon_state = "block" - blobhealthdisplay.screen_loc = ui_internal - blobhealthdisplay.layer = 20 - - mymob.client.screen = null - - mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) + +/datum/hud/proc/unplayer_hud() + return + +/datum/hud/proc/ghost_hud() + return + +/datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen_midnight.dmi') + mymob.blind = new /obj/screen() + mymob.blind.icon = 'icons/mob/screen_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" + mymob.blind.name = " " + mymob.blind.screen_loc = "CENTER-7,CENTER-7" + mymob.blind.layer = 0 + +/datum/hud/proc/ai_hud() + return + +/datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen_midnight.dmi') + + blobpwrdisplay = new /obj/screen() + blobpwrdisplay.name = "blob power" + blobpwrdisplay.icon_state = "block" + blobpwrdisplay.screen_loc = ui_health + blobpwrdisplay.layer = 20 + + blobhealthdisplay = new /obj/screen() + blobhealthdisplay.name = "blob health" + blobhealthdisplay.icon_state = "block" + blobhealthdisplay.screen_loc = ui_internal + blobhealthdisplay.layer = 20 + + mymob.client.screen = null + + mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 2b9e8eab76b..813d44dfdf9 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -1,195 +1,195 @@ -/datum/hud/proc/robot_hud() - adding = list() - other = list() - - var/obj/screen/using - - -//Radio - using = new /obj/screen() - using.name = "radio" - using.icon = 'icons/mob/screen_cyborg.dmi' - using.icon_state = "radio" - using.screen_loc = ui_borg_radio - using.layer = 20 - adding += using - -//Module select - - using = new /obj/screen() - using.name = "module1" - using.icon = 'icons/mob/screen_cyborg.dmi' - using.icon_state = "inv1" - using.screen_loc = ui_inv1 - using.layer = 20 - adding += using - mymob:inv1 = using - - using = new /obj/screen() - using.name = "module2" - using.icon = 'icons/mob/screen_cyborg.dmi' - using.icon_state = "inv2" - using.screen_loc = ui_inv2 - using.layer = 20 - adding += using - mymob:inv2 = using - - using = new /obj/screen() - using.name = "module3" - using.icon = 'icons/mob/screen_cyborg.dmi' - using.icon_state = "inv3" - using.screen_loc = ui_inv3 - using.layer = 20 - adding += using - mymob:inv3 = using - -//End of module select - -//Intent - using = new /obj/screen() - using.name = "act_intent" - using.icon = 'icons/mob/screen_cyborg.dmi' - using.icon_state = mymob.a_intent - using.screen_loc = ui_borg_intents - using.layer = 20 - adding += using - action_intent = using - -//Cell - mymob:cells = new /obj/screen() - mymob:cells.icon = 'icons/mob/screen_cyborg.dmi' - mymob:cells.icon_state = "charge-empty" - mymob:cells.name = "cell" - mymob:cells.screen_loc = ui_toxin - -//Health - mymob.healths = new /obj/screen() - mymob.healths.icon = 'icons/mob/screen_cyborg.dmi' - mymob.healths.icon_state = "health0" - mymob.healths.name = "health" - mymob.healths.screen_loc = ui_borg_health - -//Installed Module - mymob.hands = new /obj/screen() - mymob.hands.icon = 'icons/mob/screen_cyborg.dmi' - mymob.hands.icon_state = "nomod" - mymob.hands.name = "module" - mymob.hands.screen_loc = ui_borg_module - -//Store - mymob.throw_icon = new /obj/screen() - mymob.throw_icon.icon = 'icons/mob/screen_cyborg.dmi' - mymob.throw_icon.icon_state = "store" - mymob.throw_icon.name = "store" - mymob.throw_icon.screen_loc = ui_borg_store - -//Temp - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp0" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_cyborg.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_cyborg.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - - mymob.pullin = new /obj/screen() - mymob.pullin.icon = 'icons/mob/screen_cyborg.dmi' - mymob.pullin.icon_state = "pull0" - mymob.pullin.name = "pull" - mymob.pullin.screen_loc = ui_borg_pull - - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "CENTER-7,CENTER-7" - mymob.blind.layer = 0 - - mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_cyborg.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" - mymob.flash.layer = 17 - - mymob.zone_sel = new /obj/screen/zone_sel() - mymob.zone_sel.icon = 'icons/mob/screen_cyborg.dmi' - mymob.zone_sel.update_icon() - - mymob.client.screen = null - - mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) - mymob.client.screen += adding + other - - return - - -/datum/hud/proc/toggle_show_robot_modules() - if(!isrobot(mymob)) return - - var/mob/living/silicon/robot/r = mymob - - r.shown_robot_modules = !r.shown_robot_modules - update_robot_modules_display() - -/datum/hud/proc/update_robot_modules_display() - if(!isrobot(mymob)) return - - var/mob/living/silicon/robot/r = mymob - - if(r.client) - if(r.shown_robot_modules) - //Modules display is shown - r.client.screen += r.throw_icon //"store" icon - - if(!r.module) - usr << "No module selected" - return - - if(!r.module.modules) - usr << "Selected module has no modules to select" - return - - if(!r.robot_modules_background) - return - - var/display_rows = Ceiling(length(r.module.get_inactive_modules()) / 8) - r.robot_modules_background.screen_loc = "CENTER-4:16,SOUTH+1:7 to CENTER+3:16,SOUTH+[display_rows]:7" - r.client.screen += r.robot_modules_background - - var/x = -4 //Start at CENTER-4,SOUTH+1 - var/y = 1 - - for(var/atom/movable/A in r.module.get_inactive_modules()) - //Module is not currently active - r.client.screen += A - if(x < 0) - A.screen_loc = "CENTER[x]:16,SOUTH+[y]:7" - else - A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7" - A.layer = 20 - - x++ - if(x == 4) - x = -4 - y++ - - else - //Modules display is hidden - r.client.screen -= r.throw_icon //"store" icon - - for(var/atom/A in r.module.get_inactive_modules()) - //Module is not currently active - r.client.screen -= A - r.shown_robot_modules = 0 +/datum/hud/proc/robot_hud() + adding = list() + other = list() + + var/obj/screen/using + + +//Radio + using = new /obj/screen() + using.name = "radio" + using.icon = 'icons/mob/screen_cyborg.dmi' + using.icon_state = "radio" + using.screen_loc = ui_borg_radio + using.layer = 20 + adding += using + +//Module select + + using = new /obj/screen() + using.name = "module1" + using.icon = 'icons/mob/screen_cyborg.dmi' + using.icon_state = "inv1" + using.screen_loc = ui_inv1 + using.layer = 20 + adding += using + mymob:inv1 = using + + using = new /obj/screen() + using.name = "module2" + using.icon = 'icons/mob/screen_cyborg.dmi' + using.icon_state = "inv2" + using.screen_loc = ui_inv2 + using.layer = 20 + adding += using + mymob:inv2 = using + + using = new /obj/screen() + using.name = "module3" + using.icon = 'icons/mob/screen_cyborg.dmi' + using.icon_state = "inv3" + using.screen_loc = ui_inv3 + using.layer = 20 + adding += using + mymob:inv3 = using + +//End of module select + +//Intent + using = new /obj/screen() + using.name = "act_intent" + using.icon = 'icons/mob/screen_cyborg.dmi' + using.icon_state = mymob.a_intent + using.screen_loc = ui_borg_intents + using.layer = 20 + adding += using + action_intent = using + +//Cell + mymob:cells = new /obj/screen() + mymob:cells.icon = 'icons/mob/screen_cyborg.dmi' + mymob:cells.icon_state = "charge-empty" + mymob:cells.name = "cell" + mymob:cells.screen_loc = ui_toxin + +//Health + mymob.healths = new /obj/screen() + mymob.healths.icon = 'icons/mob/screen_cyborg.dmi' + mymob.healths.icon_state = "health0" + mymob.healths.name = "health" + mymob.healths.screen_loc = ui_borg_health + +//Installed Module + mymob.hands = new /obj/screen() + mymob.hands.icon = 'icons/mob/screen_cyborg.dmi' + mymob.hands.icon_state = "nomod" + mymob.hands.name = "module" + mymob.hands.screen_loc = ui_borg_module + +//Store + mymob.throw_icon = new /obj/screen() + mymob.throw_icon.icon = 'icons/mob/screen_cyborg.dmi' + mymob.throw_icon.icon_state = "store" + mymob.throw_icon.name = "store" + mymob.throw_icon.screen_loc = ui_borg_store + +//Temp + mymob.bodytemp = new /obj/screen() + mymob.bodytemp.icon_state = "temp0" + mymob.bodytemp.name = "body temperature" + mymob.bodytemp.screen_loc = ui_temp + + + mymob.oxygen = new /obj/screen() + mymob.oxygen.icon = 'icons/mob/screen_cyborg.dmi' + mymob.oxygen.icon_state = "oxy0" + mymob.oxygen.name = "oxygen" + mymob.oxygen.screen_loc = ui_oxygen + + mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen_cyborg.dmi' + mymob.fire.icon_state = "fire0" + mymob.fire.name = "fire" + mymob.fire.screen_loc = ui_fire + + mymob.pullin = new /obj/screen() + mymob.pullin.icon = 'icons/mob/screen_cyborg.dmi' + mymob.pullin.icon_state = "pull0" + mymob.pullin.name = "pull" + mymob.pullin.screen_loc = ui_borg_pull + + mymob.blind = new /obj/screen() + mymob.blind.icon = 'icons/mob/screen_full.dmi' + mymob.blind.icon_state = "blackimageoverlay" + mymob.blind.name = " " + mymob.blind.screen_loc = "CENTER-7,CENTER-7" + mymob.blind.layer = 0 + + mymob.flash = new /obj/screen() + mymob.flash.icon = 'icons/mob/screen_cyborg.dmi' + mymob.flash.icon_state = "blank" + mymob.flash.name = "flash" + mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" + mymob.flash.layer = 17 + + mymob.zone_sel = new /obj/screen/zone_sel() + mymob.zone_sel.icon = 'icons/mob/screen_cyborg.dmi' + mymob.zone_sel.update_icon() + + mymob.client.screen = null + + mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += adding + other + + return + + +/datum/hud/proc/toggle_show_robot_modules() + if(!isrobot(mymob)) return + + var/mob/living/silicon/robot/r = mymob + + r.shown_robot_modules = !r.shown_robot_modules + update_robot_modules_display() + +/datum/hud/proc/update_robot_modules_display() + if(!isrobot(mymob)) return + + var/mob/living/silicon/robot/r = mymob + + if(r.client) + if(r.shown_robot_modules) + //Modules display is shown + r.client.screen += r.throw_icon //"store" icon + + if(!r.module) + usr << "No module selected" + return + + if(!r.module.modules) + usr << "Selected module has no modules to select" + return + + if(!r.robot_modules_background) + return + + var/display_rows = Ceiling(length(r.module.get_inactive_modules()) / 8) + r.robot_modules_background.screen_loc = "CENTER-4:16,SOUTH+1:7 to CENTER+3:16,SOUTH+[display_rows]:7" + r.client.screen += r.robot_modules_background + + var/x = -4 //Start at CENTER-4,SOUTH+1 + var/y = 1 + + for(var/atom/movable/A in r.module.get_inactive_modules()) + //Module is not currently active + r.client.screen += A + if(x < 0) + A.screen_loc = "CENTER[x]:16,SOUTH+[y]:7" + else + A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7" + A.layer = 20 + + x++ + if(x == 4) + x = -4 + y++ + + else + //Modules display is hidden + r.client.screen -= r.throw_icon //"store" icon + + for(var/atom/A in r.module.get_inactive_modules()) + //Module is not currently active + r.client.screen -= A + r.shown_robot_modules = 0 r.client.screen -= r.robot_modules_background \ No newline at end of file diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 4b1a3e225ea..0b43b498a37 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -1,324 +1,324 @@ -/* - Screen objects - Todo: improve/re-implement - - Screen objects are only used for the hud and should not appear anywhere "in-game". - They are used with the client/screen list and the screen_loc var. - For more information, see the byond documentation on the screen_loc and screen vars. -*/ -/obj/screen - name = "" - icon = 'icons/mob/screen_gen.dmi' - layer = 20.0 - unacidable = 1 - var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. - - -/obj/screen/text - icon = null - icon_state = null - mouse_opacity = 0 - screen_loc = "CENTER-7,CENTER-7" - maptext_height = 480 - maptext_width = 480 - - -/obj/screen/inventory - var/slot_id //The indentifier for the slot. It has nothing to do with ID cards. - - -/obj/screen/close - name = "close" - -/obj/screen/close/Click() - if(master) - if(istype(master, /obj/item/weapon/storage)) - var/obj/item/weapon/storage/S = master - S.close(usr) - return 1 - - -/obj/screen/item_action - var/obj/item/owner - -/obj/screen/item_action/Click() - if(!usr || !owner) - return 1 - if(usr.next_move >= world.time) - return - usr.next_move = world.time + 6 - - if(usr.stat || usr.restrained() || usr.stunned || usr.lying) - return 1 - - if(!(owner in usr)) - return 1 - - owner.ui_action_click() - return 1 - -//This is the proc used to update all the action buttons. It just returns for all mob types except humans. -/mob/proc/update_action_buttons() - return - - -/obj/screen/grab - name = "grab" - -/obj/screen/grab/Click() - var/obj/item/weapon/grab/G = master - G.s_click(src) - return 1 - -/obj/screen/grab/attack_hand() - return - -/obj/screen/grab/attackby() - return - - -/obj/screen/storage - name = "storage" - -/obj/screen/storage/Click() - if(world.time <= usr.next_move) - return 1 - if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) - return 1 - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return 1 - if(master) - var/obj/item/I = usr.get_active_hand() - if(I) - master.attackby(I, usr) - usr.next_move = world.time+2 - return 1 - -/obj/screen/zone_sel - name = "damage zone" - icon_state = "zone_sel" - screen_loc = ui_zonesel - var/selecting = "chest" - -/obj/screen/zone_sel/Click(location, control,params) - var/list/PL = params2list(params) - var/icon_x = text2num(PL["icon-x"]) - var/icon_y = text2num(PL["icon-y"]) - var/old_selecting = selecting //We're only going to update_icon() if there's been a change - - switch(icon_y) - if(1 to 9) //Legs - switch(icon_x) - if(10 to 15) - selecting = "r_leg" - if(17 to 22) - selecting = "l_leg" - else - return 1 - if(10 to 13) //Hands and groin - switch(icon_x) - if(8 to 11) - selecting = "r_arm" - if(12 to 20) - selecting = "groin" - if(21 to 24) - selecting = "l_arm" - else - return 1 - if(14 to 22) //Chest and arms to shoulders - switch(icon_x) - if(8 to 11) - selecting = "r_arm" - if(12 to 20) - selecting = "chest" - if(21 to 24) - selecting = "l_arm" - else - return 1 - if(23 to 30) //Head, but we need to check for eye or mouth - if(icon_x in 12 to 20) - selecting = "head" - switch(icon_y) - if(23 to 24) - if(icon_x in 15 to 17) - selecting = "mouth" - if(26) //Eyeline, eyes are on 15 and 17 - if(icon_x in 14 to 18) - selecting = "eyes" - if(25 to 27) - if(icon_x in 15 to 17) - selecting = "eyes" - - if(old_selecting != selecting) - update_icon() - return 1 - -/obj/screen/zone_sel/update_icon() - overlays.Cut() - overlays += image('icons/mob/screen_gen.dmi', "[selecting]") - - -/obj/screen/Click(location, control, params) - if(!usr) return 1 - - switch(name) - if("toggle") - if(usr.hud_used.inventory_shown) - usr.hud_used.inventory_shown = 0 - usr.client.screen -= usr.hud_used.other - else - usr.hud_used.inventory_shown = 1 - usr.client.screen += usr.hud_used.other - - usr.hud_used.hidden_inventory_update() - - if("equip") - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return 1 - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - H.quick_equip() - - if("current sting") - var/mob/living/carbon/U = usr - U.unset_sting() - - if("resist") - if(isliving(usr)) - var/mob/living/L = usr - L.resist() - - if("mov_intent") - switch(usr.m_intent) - if("run") - usr.m_intent = "walk" - usr.hud_used.move_intent.icon_state = "walking" - if("walk") - usr.m_intent = "run" - usr.hud_used.move_intent.icon_state = "running" - if(istype(usr,/mob/living/carbon/alien/humanoid)) - usr.update_icons() - if("Reset Machine") - usr.unset_machine() - if("internal") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) - if(C.internal) - C.internal = null - C << "No longer running on internals." - if(C.internals) - C.internals.icon_state = "internal0" - else - if(!istype(C.wear_mask, /obj/item/clothing/mask)) - C << "You are not wearing a mask." - return 1 - else - if(istype(C.l_hand, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.l_hand] on your left hand." - C.internal = C.l_hand - else if(istype(C.r_hand, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.r_hand] on your right hand." - C.internal = C.r_hand - else if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(istype(H.s_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]." - H.internal = H.s_store - else if(istype(H.belt, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.belt] on your belt." - H.internal = H.belt - else if(istype(H.l_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.l_store] in your left pocket." - H.internal = H.l_store - else if(istype(H.r_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.r_store] in your right pocket." - H.internal = H.r_store - - //Seperate so CO2 jetpacks are a little less cumbersome. - if(!C.internal && istype(C.back, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.back] on your back." - C.internal = C.back - - if(C.internal) - if(C.internals) - C.internals.icon_state = "internal1" - else - C << "You don't have an oxygen tank." - if("act_intent") - usr.a_intent_change("right") - if("pull") - usr.stop_pulling() - if("throw/catch") - if(!usr.stat && isturf(usr.loc) && !usr.restrained()) - usr:toggle_throw_mode() - if("drop") - usr.drop_item_v() - - if("module") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - if(R.module) - R.hud_used.toggle_show_robot_modules() - return 1 - R.pick_module() - - if("radio") - if(issilicon(usr)) - usr:radio_menu() - if("panel") - if(issilicon(usr)) - usr:installed_modules() - - if("store") - if(isrobot(usr)) - var/mob/living/silicon/robot/R = usr - R.uneq_active() - R.hud_used.update_robot_modules_display() - - if("module1") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(1) - - if("module2") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(2) - - if("module3") - if(istype(usr, /mob/living/silicon/robot)) - usr:toggle_module(3) - - else - return 0 - return 1 - -/obj/screen/inventory/Click() - // At this point in client Click() code we have passed the 1/10 sec check and little else - // We don't even know if it's a middle click - if(world.time <= usr.next_move) - return 1 - if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) - return 1 - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return 1 - switch(name) - if("r_hand") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - C.activate_hand("r") - usr.next_move = world.time+2 - if("l_hand") - if(iscarbon(usr)) - var/mob/living/carbon/C = usr - C.activate_hand("l") - usr.next_move = world.time+2 - if("swap") - usr:swap_hand() - if("hand") - usr:swap_hand() - else - if(usr.attack_ui(slot_id)) - usr.update_inv_l_hand(0) - usr.update_inv_r_hand(0) - usr.next_move = world.time+6 - return 1 +/* + Screen objects + Todo: improve/re-implement + + Screen objects are only used for the hud and should not appear anywhere "in-game". + They are used with the client/screen list and the screen_loc var. + For more information, see the byond documentation on the screen_loc and screen vars. +*/ +/obj/screen + name = "" + icon = 'icons/mob/screen_gen.dmi' + layer = 20.0 + unacidable = 1 + var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. + + +/obj/screen/text + icon = null + icon_state = null + mouse_opacity = 0 + screen_loc = "CENTER-7,CENTER-7" + maptext_height = 480 + maptext_width = 480 + + +/obj/screen/inventory + var/slot_id //The indentifier for the slot. It has nothing to do with ID cards. + + +/obj/screen/close + name = "close" + +/obj/screen/close/Click() + if(master) + if(istype(master, /obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = master + S.close(usr) + return 1 + + +/obj/screen/item_action + var/obj/item/owner + +/obj/screen/item_action/Click() + if(!usr || !owner) + return 1 + if(usr.next_move >= world.time) + return + usr.next_move = world.time + 6 + + if(usr.stat || usr.restrained() || usr.stunned || usr.lying) + return 1 + + if(!(owner in usr)) + return 1 + + owner.ui_action_click() + return 1 + +//This is the proc used to update all the action buttons. It just returns for all mob types except humans. +/mob/proc/update_action_buttons() + return + + +/obj/screen/grab + name = "grab" + +/obj/screen/grab/Click() + var/obj/item/weapon/grab/G = master + G.s_click(src) + return 1 + +/obj/screen/grab/attack_hand() + return + +/obj/screen/grab/attackby() + return + + +/obj/screen/storage + name = "storage" + +/obj/screen/storage/Click() + if(world.time <= usr.next_move) + return 1 + if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) + return 1 + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return 1 + if(master) + var/obj/item/I = usr.get_active_hand() + if(I) + master.attackby(I, usr) + usr.next_move = world.time+2 + return 1 + +/obj/screen/zone_sel + name = "damage zone" + icon_state = "zone_sel" + screen_loc = ui_zonesel + var/selecting = "chest" + +/obj/screen/zone_sel/Click(location, control,params) + var/list/PL = params2list(params) + var/icon_x = text2num(PL["icon-x"]) + var/icon_y = text2num(PL["icon-y"]) + var/old_selecting = selecting //We're only going to update_icon() if there's been a change + + switch(icon_y) + if(1 to 9) //Legs + switch(icon_x) + if(10 to 15) + selecting = "r_leg" + if(17 to 22) + selecting = "l_leg" + else + return 1 + if(10 to 13) //Hands and groin + switch(icon_x) + if(8 to 11) + selecting = "r_arm" + if(12 to 20) + selecting = "groin" + if(21 to 24) + selecting = "l_arm" + else + return 1 + if(14 to 22) //Chest and arms to shoulders + switch(icon_x) + if(8 to 11) + selecting = "r_arm" + if(12 to 20) + selecting = "chest" + if(21 to 24) + selecting = "l_arm" + else + return 1 + if(23 to 30) //Head, but we need to check for eye or mouth + if(icon_x in 12 to 20) + selecting = "head" + switch(icon_y) + if(23 to 24) + if(icon_x in 15 to 17) + selecting = "mouth" + if(26) //Eyeline, eyes are on 15 and 17 + if(icon_x in 14 to 18) + selecting = "eyes" + if(25 to 27) + if(icon_x in 15 to 17) + selecting = "eyes" + + if(old_selecting != selecting) + update_icon() + return 1 + +/obj/screen/zone_sel/update_icon() + overlays.Cut() + overlays += image('icons/mob/screen_gen.dmi', "[selecting]") + + +/obj/screen/Click(location, control, params) + if(!usr) return 1 + + switch(name) + if("toggle") + if(usr.hud_used.inventory_shown) + usr.hud_used.inventory_shown = 0 + usr.client.screen -= usr.hud_used.other + else + usr.hud_used.inventory_shown = 1 + usr.client.screen += usr.hud_used.other + + usr.hud_used.hidden_inventory_update() + + if("equip") + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return 1 + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + H.quick_equip() + + if("current sting") + var/mob/living/carbon/U = usr + U.unset_sting() + + if("resist") + if(isliving(usr)) + var/mob/living/L = usr + L.resist() + + if("mov_intent") + switch(usr.m_intent) + if("run") + usr.m_intent = "walk" + usr.hud_used.move_intent.icon_state = "walking" + if("walk") + usr.m_intent = "run" + usr.hud_used.move_intent.icon_state = "running" + if(istype(usr,/mob/living/carbon/alien/humanoid)) + usr.update_icons() + if("Reset Machine") + usr.unset_machine() + if("internal") + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + if(!C.stat && !C.stunned && !C.paralysis && !C.restrained()) + if(C.internal) + C.internal = null + C << "No longer running on internals." + if(C.internals) + C.internals.icon_state = "internal0" + else + if(!istype(C.wear_mask, /obj/item/clothing/mask)) + C << "You are not wearing a mask." + return 1 + else + if(istype(C.l_hand, /obj/item/weapon/tank)) + C << "You are now running on internals from the [C.l_hand] on your left hand." + C.internal = C.l_hand + else if(istype(C.r_hand, /obj/item/weapon/tank)) + C << "You are now running on internals from the [C.r_hand] on your right hand." + C.internal = C.r_hand + else if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(istype(H.s_store, /obj/item/weapon/tank)) + H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]." + H.internal = H.s_store + else if(istype(H.belt, /obj/item/weapon/tank)) + H << "You are now running on internals from the [H.belt] on your belt." + H.internal = H.belt + else if(istype(H.l_store, /obj/item/weapon/tank)) + H << "You are now running on internals from the [H.l_store] in your left pocket." + H.internal = H.l_store + else if(istype(H.r_store, /obj/item/weapon/tank)) + H << "You are now running on internals from the [H.r_store] in your right pocket." + H.internal = H.r_store + + //Seperate so CO2 jetpacks are a little less cumbersome. + if(!C.internal && istype(C.back, /obj/item/weapon/tank)) + C << "You are now running on internals from the [C.back] on your back." + C.internal = C.back + + if(C.internal) + if(C.internals) + C.internals.icon_state = "internal1" + else + C << "You don't have an oxygen tank." + if("act_intent") + usr.a_intent_change("right") + if("pull") + usr.stop_pulling() + if("throw/catch") + if(!usr.stat && isturf(usr.loc) && !usr.restrained()) + usr:toggle_throw_mode() + if("drop") + usr.drop_item_v() + + if("module") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + if(R.module) + R.hud_used.toggle_show_robot_modules() + return 1 + R.pick_module() + + if("radio") + if(issilicon(usr)) + usr:radio_menu() + if("panel") + if(issilicon(usr)) + usr:installed_modules() + + if("store") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.uneq_active() + R.hud_used.update_robot_modules_display() + + if("module1") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(1) + + if("module2") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(2) + + if("module3") + if(istype(usr, /mob/living/silicon/robot)) + usr:toggle_module(3) + + else + return 0 + return 1 + +/obj/screen/inventory/Click() + // At this point in client Click() code we have passed the 1/10 sec check and little else + // We don't even know if it's a middle click + if(world.time <= usr.next_move) + return 1 + if(usr.stat || usr.paralysis || usr.stunned || usr.weakened) + return 1 + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return 1 + switch(name) + if("r_hand") + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.activate_hand("r") + usr.next_move = world.time+2 + if("l_hand") + if(iscarbon(usr)) + var/mob/living/carbon/C = usr + C.activate_hand("l") + usr.next_move = world.time+2 + if("swap") + usr:swap_hand() + if("hand") + usr:swap_hand() + else + if(usr.attack_ui(slot_id)) + usr.update_inv_l_hand(0) + usr.update_inv_r_hand(0) + usr.next_move = world.time+6 + return 1 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e7ba209258d..c7d5dd24352 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,77 +1,77 @@ - -// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. -/obj/item/proc/attack_self(mob/user) - return - -// No comment -/atom/proc/attackby(obj/item/W, mob/user) - return -/atom/movable/attackby(obj/item/W, mob/user) - if(W && !(W.flags&NOBLUDGEON)) - visible_message("[src] has been hit by [user] with [W].") - -/mob/living/attackby(obj/item/I, mob/user) - I.attack(src, user) - -/mob/living/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) - apply_damage(I.force, I.damtype) - if(I.damtype == "brute") - if(prob(33) && I.force) - var/turf/location = src.loc - if(istype(location, /turf/simulated)) - location.add_blood_floor(src) - - var/showname = "." - if(user) - showname = " by [user]!" - if(!(user in viewers(I, null))) - showname = "." - - if(I.attack_verb && I.attack_verb.len) - src.visible_message("[src] has been [pick(I.attack_verb)] with [I][showname]", - "[src] has been [pick(I.attack_verb)] with [I][showname]") - else if(I.force) - src.visible_message("[src] has been attacked with [I][showname]", - "[src] has been attacked with [I][showname]") - if(!showname && user) - if(user.client) - user << "\red You attack [src] with [I]. " - -// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. -// Click parameters is the params string from byond Click() code, see that documentation. -/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - return - -// Overrides the weapon attack so it can attack any atoms like when we want to have an effect on an object independent of attackby -// It is a powerfull proc but it should be used wisely, if there is other alternatives instead use those -// If it returns 1 it exits click code. Always . = 1 at start of the function if you delete src. -/obj/item/proc/preattack(atom/target, mob/user, proximity_flag, click_parameters) - return - -obj/item/proc/get_clamped_volume() - if(src.force && src.w_class) - return Clamp((src.force + src.w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 - else if(!src.force && src.w_class) - return Clamp(src.w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 - -/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - - if (!istype(M)) // not sure if this is the right thing... - return - - if (hitsound && force > 0) //If an item's hitsound is defined and the item's force is greater than zero... - playsound(loc, hitsound, get_clamped_volume(), 1, -1) //...play the item's hitsound at get_clamped_volume() with varying frequency and -1 extra range. - else if (force == 0)//Otherwise, if the item's force is zero... - playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1)//...play tap.ogg at get_clamped_volume() - ///////////////////////// - user.lastattacked = M - M.lastattacker = user - - add_logs(user, M, "attacked", object=src.name, addition="(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])") - - //spawn(1800) // this wont work right - // M.lastattacker = null - ///////////////////////// - M.attacked_by(src, user, def_zone) - add_fingerprint(user) + +// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. +/obj/item/proc/attack_self(mob/user) + return + +// No comment +/atom/proc/attackby(obj/item/W, mob/user) + return +/atom/movable/attackby(obj/item/W, mob/user) + if(W && !(W.flags&NOBLUDGEON)) + visible_message("[src] has been hit by [user] with [W].") + +/mob/living/attackby(obj/item/I, mob/user) + I.attack(src, user) + +/mob/living/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) + apply_damage(I.force, I.damtype) + if(I.damtype == "brute") + if(prob(33) && I.force) + var/turf/location = src.loc + if(istype(location, /turf/simulated)) + location.add_blood_floor(src) + + var/showname = "." + if(user) + showname = " by [user]!" + if(!(user in viewers(I, null))) + showname = "." + + if(I.attack_verb && I.attack_verb.len) + src.visible_message("[src] has been [pick(I.attack_verb)] with [I][showname]", + "[src] has been [pick(I.attack_verb)] with [I][showname]") + else if(I.force) + src.visible_message("[src] has been attacked with [I][showname]", + "[src] has been attacked with [I][showname]") + if(!showname && user) + if(user.client) + user << "\red You attack [src] with [I]. " + +// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. +// Click parameters is the params string from byond Click() code, see that documentation. +/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + return + +// Overrides the weapon attack so it can attack any atoms like when we want to have an effect on an object independent of attackby +// It is a powerfull proc but it should be used wisely, if there is other alternatives instead use those +// If it returns 1 it exits click code. Always . = 1 at start of the function if you delete src. +/obj/item/proc/preattack(atom/target, mob/user, proximity_flag, click_parameters) + return + +obj/item/proc/get_clamped_volume() + if(src.force && src.w_class) + return Clamp((src.force + src.w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100 + else if(!src.force && src.w_class) + return Clamp(src.w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 + +/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone) + + if (!istype(M)) // not sure if this is the right thing... + return + + if (hitsound && force > 0) //If an item's hitsound is defined and the item's force is greater than zero... + playsound(loc, hitsound, get_clamped_volume(), 1, -1) //...play the item's hitsound at get_clamped_volume() with varying frequency and -1 extra range. + else if (force == 0)//Otherwise, if the item's force is zero... + playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1)//...play tap.ogg at get_clamped_volume() + ///////////////////////// + user.lastattacked = M + M.lastattacker = user + + add_logs(user, M, "attacked", object=src.name, addition="(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])") + + //spawn(1800) // this wont work right + // M.lastattacker = null + ///////////////////////// + M.attacked_by(src, user, def_zone) + add_fingerprint(user) return 1 \ No newline at end of file diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index d077778e760..44e9c5bca21 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -1,98 +1,98 @@ -/client/var/inquisitive_ghost = 1 -/mob/dead/observer/verb/toggle_inquisition() // warning: unexpected inquisition - set name = "Toggle Inquisitiveness" - set desc = "Sets whether your ghost examines everything on click by default" - set category = "Ghost" - if(!client) return - client.inquisitive_ghost = !client.inquisitive_ghost - if(client.inquisitive_ghost) - src << "\blue You will now examine everything you click on." - else - src << "\blue You will no longer examine things you click on." - -/mob/dead/observer/DblClickOn(var/atom/A, var/params) - if(client.buildmode) - build_click(src, client.buildmode, params, A) - return - if(can_reenter_corpse && mind && mind.current) - if(A == mind.current || (mind.current in A)) // double click your corpse or whatever holds it - reenter_corpse() // (cloning scanner, body bag, closet, mech, etc) - return // seems legit. - - // Things you might plausibly want to follow - if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/machinery/singularity)) - ManualFollow(A) - - // Otherwise jump - else - loc = get_turf(A) - -/mob/dead/observer/ClickOn(var/atom/A, var/params) - if(client.buildmode) - build_click(src, client.buildmode, params, A) - return - - var/list/modifiers = params2list(params) - if(modifiers["middle"]) - MiddleClickOn(A) - return - if(modifiers["shift"]) - ShiftClickOn(A) - return - if(modifiers["alt"]) - AltClickOn(A) - return - if(modifiers["ctrl"]) - CtrlClickOn(A) - return - - if(world.time <= next_move) return - next_move = world.time + 8 - // You are responsible for checking config.ghost_interaction when you override this function - // Not all of them require checking, see below - A.attack_ghost(src) - -// Oh by the way this didn't work with old click code which is why clicking shit didn't spam you -/atom/proc/attack_ghost(mob/dead/observer/user as mob) - if(user.client && user.client.inquisitive_ghost) - examine() - return - -// --------------------------------------- -// And here are some good things for free: -// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu - -/obj/machinery/teleport/hub/attack_ghost(mob/user as mob) - var/atom/l = loc - var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) - if(com && com.locked) - user.loc = get_turf(com.locked) - -/obj/effect/portal/attack_ghost(mob/user as mob) - if(target) - user.loc = get_turf(target) - -/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob) - if(awaygate) - user.loc = awaygate.loc - else - user << "[src] has no destination." - -/obj/machinery/gateway/centeraway/attack_ghost(mob/user as mob) - if(stationgate) - user.loc = stationgate.loc - else - user << "[src] has no destination." - -// ------------------------------------------- -// This was supposed to be used by adminghosts -// I think it is a *terrible* idea -// but I'm leaving it here anyway -// commented out, of course. -/* -/atom/proc/attack_admin(mob/user as mob) - if(!user || !user.client || !user.client.holder) - return - attack_hand(user) - -*/ +/client/var/inquisitive_ghost = 1 +/mob/dead/observer/verb/toggle_inquisition() // warning: unexpected inquisition + set name = "Toggle Inquisitiveness" + set desc = "Sets whether your ghost examines everything on click by default" + set category = "Ghost" + if(!client) return + client.inquisitive_ghost = !client.inquisitive_ghost + if(client.inquisitive_ghost) + src << "\blue You will now examine everything you click on." + else + src << "\blue You will no longer examine things you click on." + +/mob/dead/observer/DblClickOn(var/atom/A, var/params) + if(client.buildmode) + build_click(src, client.buildmode, params, A) + return + if(can_reenter_corpse && mind && mind.current) + if(A == mind.current || (mind.current in A)) // double click your corpse or whatever holds it + reenter_corpse() // (cloning scanner, body bag, closet, mech, etc) + return // seems legit. + + // Things you might plausibly want to follow + if((ismob(A) && A != src) || istype(A,/obj/machinery/bot) || istype(A,/obj/machinery/singularity)) + ManualFollow(A) + + // Otherwise jump + else + loc = get_turf(A) + +/mob/dead/observer/ClickOn(var/atom/A, var/params) + if(client.buildmode) + build_click(src, client.buildmode, params, A) + return + + var/list/modifiers = params2list(params) + if(modifiers["middle"]) + MiddleClickOn(A) + return + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) + AltClickOn(A) + return + if(modifiers["ctrl"]) + CtrlClickOn(A) + return + + if(world.time <= next_move) return + next_move = world.time + 8 + // You are responsible for checking config.ghost_interaction when you override this function + // Not all of them require checking, see below + A.attack_ghost(src) + +// Oh by the way this didn't work with old click code which is why clicking shit didn't spam you +/atom/proc/attack_ghost(mob/dead/observer/user as mob) + if(user.client && user.client.inquisitive_ghost) + examine() + return + +// --------------------------------------- +// And here are some good things for free: +// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu + +/obj/machinery/teleport/hub/attack_ghost(mob/user as mob) + var/atom/l = loc + var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) + if(com && com.locked) + user.loc = get_turf(com.locked) + +/obj/effect/portal/attack_ghost(mob/user as mob) + if(target) + user.loc = get_turf(target) + +/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob) + if(awaygate) + user.loc = awaygate.loc + else + user << "[src] has no destination." + +/obj/machinery/gateway/centeraway/attack_ghost(mob/user as mob) + if(stationgate) + user.loc = stationgate.loc + else + user << "[src] has no destination." + +// ------------------------------------------- +// This was supposed to be used by adminghosts +// I think it is a *terrible* idea +// but I'm leaving it here anyway +// commented out, of course. +/* +/atom/proc/attack_admin(mob/user as mob) + if(!user || !user.client || !user.client.holder) + return + attack_hand(user) + +*/ diff --git a/code/_onclick/oldcode.dm b/code/_onclick/oldcode.dm index 2d52a26390a..024e223f839 100644 --- a/code/_onclick/oldcode.dm +++ b/code/_onclick/oldcode.dm @@ -1,376 +1,376 @@ -/atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE - if(!usr) return - - // ------- TIME SINCE LAST CLICK ------- - if (world.time <= usr:lastDblClick+1) - return - else - usr:lastDblClick = world.time - - //Putting it here for now. It diverts stuff to the mech clicking procs. Putting it here stops us drilling items in our inventory Carn - if(istype(usr.loc,/obj/mecha)) - if(usr.client && (src in usr.client.screen)) - return - var/obj/mecha/Mech = usr.loc - Mech.click_action(src,usr) - return - - // ------- DIR CHANGING WHEN CLICKING ------ - if( iscarbon(usr) && !usr.buckled ) - if( src.x && src.y && usr.x && usr.y ) - var/dx = src.x - usr.x - var/dy = src.y - usr.y - - if(dy || dx) - if(abs(dx) < abs(dy)) - if(dy > 0) usr.dir = NORTH - else usr.dir = SOUTH - else - if(dx > 0) usr.dir = EAST - else usr.dir = WEST - else - if(pixel_y > 16) usr.dir = NORTH - else if(pixel_y < -16) usr.dir = SOUTH - else if(pixel_x > 16) usr.dir = EAST - else if(pixel_x < -16) usr.dir = WEST - - - - - // ------- AI ------- - else if (istype(usr, /mob/living/silicon/ai)) - var/mob/living/silicon/ai/ai = usr - if (ai.control_disabled) - return - - // ------- CYBORG ------- - else if (istype(usr, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/bot = usr - if (bot.lockcharge) return - ..() - - - // ------- SHIFT-CLICK ------- - - if(params) - var/parameters = params2list(params) - - if(parameters["shift"]){ - if(!isAI(usr)) - ShiftClick(usr) - else - AIShiftClick(usr) - return - } - - // ------- ALT-CLICK ------- - - if(parameters["alt"]){ - if(!isAI(usr)) - AltClick(usr) - else - AIAltClick(usr) - return - } - - // ------- CTRL-CLICK ------- - - if(parameters["ctrl"]){ - if(!isAI(usr)) - CtrlClick(usr) - else - AICtrlClick(usr) - return - } - - // ------- MIDDLE-CLICK ------- - - if(parameters["middle"]){ - if(!isAI(usr)) - MiddleClick(usr) - return - } - - // ------- THROW ------- - if(usr.in_throw_mode) - return usr:throw_item(src) - - // ------- ITEM IN HAND DEFINED ------- - var/obj/item/W = usr.get_active_hand() -/* Now handled by get_active_hand() - // ------- ROBOT ------- - if(istype(usr, /mob/living/silicon/robot)) - if(!isnull(usr:module_active)) - W = usr:module_active - else - W = null -*/ - // ------- ATTACK SELF ------- - if (W == src && usr.stat == 0) - W.attack_self(usr) - if(usr.hand) - usr.update_inv_l_hand(0) //update in-hand overlays - else - usr.update_inv_r_hand(0) - return - - // ------- PARALYSIS, STUN, WEAKENED, DEAD, (And not AI) ------- - if (((usr.paralysis || usr.stunned || usr.weakened) && !istype(usr, /mob/living/silicon/ai)) || usr.stat != 0) - return - - // ------- CLICKING STUFF IN CONTAINERS ------- - if ((!( src in usr.contents ) && (((!( isturf(src) ) && (!( isturf(src.loc) ) && (src.loc && !( isturf(src.loc.loc) )))) || !( isturf(usr.loc) )) && (src.loc != usr.loc && (!( istype(src, /obj/screen) ) && !( usr.contents.Find(src.loc) )))))) - if (istype(usr, /mob/living/silicon/ai)) - var/mob/living/silicon/ai/ai = usr - if (ai.control_disabled || ai.malfhacking) - return - else - return - - // ------- 1 TILE AWAY ------- - var/t5 - // ------- AI CAN CLICK ANYTHING ------- - if(istype(usr, /mob/living/silicon/ai)) - t5 = 1 - // ------- CYBORG CAN CLICK ANYTHING WHEN NOT HOLDING STUFF ------- - else if(istype(usr, /mob/living/silicon/robot) && !W) - t5 = 1 - else - t5 = in_range(src, usr) || src.loc == usr - -// world << "according to dblclick(), t5 is [t5]" - - // ------- ACTUALLY DETERMINING STUFF ------- - if (((t5 || (W && (W.flags & USEDELAY))) && !( istype(src, /obj/screen) ))) - - // ------- ( CAN USE ITEM OR HAS 1 SECOND USE DELAY ) AND NOT CLICKING ON SCREEN ------- - - if (usr.next_move < world.time) - usr.prev_move = usr.next_move - usr.next_move = world.time + 10 - else - // ------- ALREADY USED ONE ITEM WITH USE DELAY IN THE PREVIOUS SECOND ------- - return - - // ------- DELAY CHECK PASSED ------- - - if ((src.loc && (get_dist(src, usr) < 2 || src.loc == usr.loc))) - - // ------- CLICKED OBJECT EXISTS IN GAME WORLD, DISTANCE FROM PERSON TO OBJECT IS 1 SQUARE OR THEY'RE ON THE SAME SQUARE ------- - - var/direct = get_dir(usr, src) - var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( usr.loc ) - var/ok = 0 - if ( (direct - 1) & direct) - - // ------- CLICKED OBJECT IS LOCATED IN A DIAGONAL POSITION FROM THE PERSON ------- - - var/turf/Step_1 - var/turf/Step_2 - switch(direct) - if(5.0) - Step_1 = get_step(usr, NORTH) - Step_2 = get_step(usr, EAST) - - if(6.0) - Step_1 = get_step(usr, SOUTH) - Step_2 = get_step(usr, EAST) - - if(9.0) - Step_1 = get_step(usr, NORTH) - Step_2 = get_step(usr, WEST) - - if(10.0) - Step_1 = get_step(usr, SOUTH) - Step_2 = get_step(usr, WEST) - - else - if(Step_1 && Step_2) - - // ------- BOTH CARDINAL DIRECTIONS OF THE DIAGONAL EXIST IN THE GAME WORLD ------- - - var/check_1 = 0 - var/check_2 = 0 - if(step_to(D, Step_1)) - check_1 = 1 - for(var/obj/border_obstacle in Step_1) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CheckExit(D, src)) - check_1 = 0 - // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES ------- - for(var/obj/border_obstacle in get_turf(src)) - if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) - if(!border_obstacle.CanPass(D, D.loc, 1, 0)) - // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON ------- - check_1 = 0 - - D.loc = usr.loc - if(step_to(D, Step_2)) - check_2 = 1 - - for(var/obj/border_obstacle in Step_2) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CheckExit(D, src)) - check_2 = 0 - for(var/obj/border_obstacle in get_turf(src)) - if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) - if(!border_obstacle.CanPass(D, D.loc, 1, 0)) - check_2 = 0 - - - if(check_1 || check_2) - ok = 1 - // ------- YOU CAN REACH THE ITEM THROUGH AT LEAST ONE OF THE TWO DIRECTIONS. GOOD. ------- - - /* - More info: - If you're trying to click an item in the north-east of your mob, the above section of code will first check if tehre's a tile to the north or you and to the east of you - These two tiles are Step_1 and Step_2. After this, a new dummy object is created on your location. It then tries to move to Step_1, If it succeeds, objects on the turf you're on and - the turf that Step_1 is are checked for items which have the ON_BORDER flag set. These are itmes which limit you on only one tile border. Windows, for the most part. - CheckExit() and CanPass() are use to determine this. The dummy object is then moved back to your location and it tries to move to Step_2. Same checks are performed here. - If at least one of the two checks succeeds, it means you can reach the item and ok is set to 1. - */ - else - // ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) ------- - if(loc == usr.loc) - ok = 1 - // ------- OBJECT IS ON THE SAME TILE AS YOU ------- - else - ok = 1 - - //Now, check objects to block exit that are on the border - for(var/obj/border_obstacle in usr.loc) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CheckExit(D, src)) - ok = 0 - - //Next, check objects to block entry that are on the border - for(var/obj/border_obstacle in get_turf(src)) - if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) - if(!border_obstacle.CanPass(D, D.loc, 1, 0)) - ok = 0 - /* - See the previous More info, for... more info... - */ - - //del(D) - // Garbage Collect Dummy - D.loc = null - D = null - - // ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE ------- - if (!( ok )) - // ------- TESTS ABOVE DETERMINED YOU CANNOT REACH THE TILE ------- - return 0 - - if (!( usr.restrained() || (usr.lying && usr.buckled!=src) )) - // ------- YOU ARE NOT REASTRAINED ------- - - if (W) - // ------- YOU HAVE AN ITEM IN YOUR HAND - HANDLE ATTACKBY AND AFTERATTACK ------- - var/ignoreAA = 0 //Ignore afterattack(). Surgery uses this. - if (t5) - ignoreAA = src.attackby(W, usr) - if (W && !ignoreAA) - W.afterattack(src, usr, (t5 ? 1 : 0), params) - - else - // ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND ------- - if (istype(usr, /mob/living/carbon/human)) - // ------- YOU ARE HUMAN ------- - src.attack_hand(usr, usr.hand) - else - // ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED ------- - if (istype(usr, /mob/living/carbon/monkey)) - src.attack_paw(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/alien/humanoid)) - if(usr.m_intent == "walk" && istype(usr, /mob/living/carbon/alien/humanoid/hunter)) - usr.m_intent = "run" - usr.hud_used.move_intent.icon_state = "running" - usr.update_icons() - src.attack_alien(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/alien/larva)) - src.attack_larva(usr) - else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) - src.attack_ai(usr, usr.hand) - else if(istype(usr, /mob/living/carbon/slime)) - src.attack_slime(usr) - else if(istype(usr, /mob/living/simple_animal)) - src.attack_animal(usr) - else - // ------- YOU ARE RESTRAINED. DETERMINE WHAT YOU ARE AND ATTACK WITH THE PROPER HAND_X PROC ------- - if (istype(usr, /mob/living/carbon/human)) - src.hand_h(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/monkey)) - src.hand_p(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/alien/humanoid)) - src.hand_al(usr, usr.hand) - else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) - src.hand_a(usr, usr.hand) - - else - // ------- ITEM INACESSIBLE OR CLICKING ON SCREEN ------- - if (istype(src, /obj/screen)) - // ------- IT'S THE HUD YOU'RE CLICKING ON ------- - usr.prev_move = usr.next_move - usr:lastDblClick = world.time + 2 - if (usr.next_move < world.time) - usr.next_move = world.time + 2 - else - return - - // ------- 2 DECISECOND DELAY FOR CLICKING PASSED ------- - - if (!( usr.restrained() )) - - // ------- YOU ARE NOT RESTRAINED ------- - if ((W && !( istype(src, /obj/screen) ))) - // ------- IT SHOULD NEVER GET TO HERE, DUE TO THE ISTYPE(SRC, /OBJ/SCREEN) FROM PREVIOUS IF-S - I TESTED IT WITH A DEBUG OUTPUT AND I COULDN'T GET THIST TO SHOW UP. ------- - src.attackby(W, usr) - if (W) - W.afterattack(src, usr,, params) - else - // ------- YOU ARE NOT RESTRAINED, AND ARE CLICKING A HUD OBJECT ------- - if (istype(usr, /mob/living/carbon/human)) - src.attack_hand(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/monkey)) - src.attack_paw(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/alien/humanoid)) - src.attack_alien(usr, usr.hand) - else - // ------- YOU ARE RESTRAINED CLICKING ON A HUD OBJECT ------- - if (istype(usr, /mob/living/carbon/human)) - src.hand_h(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/monkey)) - src.hand_p(usr, usr.hand) - else if (istype(usr, /mob/living/carbon/alien/humanoid)) - src.hand_al(usr, usr.hand) - else - // ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD ------- - if((LASER in usr:mutations) && usr:a_intent == "harm" && world.time >= usr.next_move) - // ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED ------- - - var/turf/T = get_turf(usr) - var/turf/U = get_turf(src) - - - if(istype(usr, /mob/living/carbon/human)) - usr:nutrition -= rand(1,5) - usr:handle_regular_hud_updates() - - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( usr.loc ) - A.icon = 'icons/effects/genetics.dmi' - A.icon_state = "eyelasers" - playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) - - A.firer = usr - A.def_zone = usr:get_organ_target() - A.original = src - A.current = T - A.yo = U.y - T.y - A.xo = U.x - T.x - spawn( 1 ) - A.process() - - usr.next_move = world.time + 6 - return +/atom/DblClick(location, control, params) //TODO: DEFERRED: REWRITE + if(!usr) return + + // ------- TIME SINCE LAST CLICK ------- + if (world.time <= usr:lastDblClick+1) + return + else + usr:lastDblClick = world.time + + //Putting it here for now. It diverts stuff to the mech clicking procs. Putting it here stops us drilling items in our inventory Carn + if(istype(usr.loc,/obj/mecha)) + if(usr.client && (src in usr.client.screen)) + return + var/obj/mecha/Mech = usr.loc + Mech.click_action(src,usr) + return + + // ------- DIR CHANGING WHEN CLICKING ------ + if( iscarbon(usr) && !usr.buckled ) + if( src.x && src.y && usr.x && usr.y ) + var/dx = src.x - usr.x + var/dy = src.y - usr.y + + if(dy || dx) + if(abs(dx) < abs(dy)) + if(dy > 0) usr.dir = NORTH + else usr.dir = SOUTH + else + if(dx > 0) usr.dir = EAST + else usr.dir = WEST + else + if(pixel_y > 16) usr.dir = NORTH + else if(pixel_y < -16) usr.dir = SOUTH + else if(pixel_x > 16) usr.dir = EAST + else if(pixel_x < -16) usr.dir = WEST + + + + + // ------- AI ------- + else if (istype(usr, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = usr + if (ai.control_disabled) + return + + // ------- CYBORG ------- + else if (istype(usr, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/bot = usr + if (bot.lockcharge) return + ..() + + + // ------- SHIFT-CLICK ------- + + if(params) + var/parameters = params2list(params) + + if(parameters["shift"]){ + if(!isAI(usr)) + ShiftClick(usr) + else + AIShiftClick(usr) + return + } + + // ------- ALT-CLICK ------- + + if(parameters["alt"]){ + if(!isAI(usr)) + AltClick(usr) + else + AIAltClick(usr) + return + } + + // ------- CTRL-CLICK ------- + + if(parameters["ctrl"]){ + if(!isAI(usr)) + CtrlClick(usr) + else + AICtrlClick(usr) + return + } + + // ------- MIDDLE-CLICK ------- + + if(parameters["middle"]){ + if(!isAI(usr)) + MiddleClick(usr) + return + } + + // ------- THROW ------- + if(usr.in_throw_mode) + return usr:throw_item(src) + + // ------- ITEM IN HAND DEFINED ------- + var/obj/item/W = usr.get_active_hand() +/* Now handled by get_active_hand() + // ------- ROBOT ------- + if(istype(usr, /mob/living/silicon/robot)) + if(!isnull(usr:module_active)) + W = usr:module_active + else + W = null +*/ + // ------- ATTACK SELF ------- + if (W == src && usr.stat == 0) + W.attack_self(usr) + if(usr.hand) + usr.update_inv_l_hand(0) //update in-hand overlays + else + usr.update_inv_r_hand(0) + return + + // ------- PARALYSIS, STUN, WEAKENED, DEAD, (And not AI) ------- + if (((usr.paralysis || usr.stunned || usr.weakened) && !istype(usr, /mob/living/silicon/ai)) || usr.stat != 0) + return + + // ------- CLICKING STUFF IN CONTAINERS ------- + if ((!( src in usr.contents ) && (((!( isturf(src) ) && (!( isturf(src.loc) ) && (src.loc && !( isturf(src.loc.loc) )))) || !( isturf(usr.loc) )) && (src.loc != usr.loc && (!( istype(src, /obj/screen) ) && !( usr.contents.Find(src.loc) )))))) + if (istype(usr, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = usr + if (ai.control_disabled || ai.malfhacking) + return + else + return + + // ------- 1 TILE AWAY ------- + var/t5 + // ------- AI CAN CLICK ANYTHING ------- + if(istype(usr, /mob/living/silicon/ai)) + t5 = 1 + // ------- CYBORG CAN CLICK ANYTHING WHEN NOT HOLDING STUFF ------- + else if(istype(usr, /mob/living/silicon/robot) && !W) + t5 = 1 + else + t5 = in_range(src, usr) || src.loc == usr + +// world << "according to dblclick(), t5 is [t5]" + + // ------- ACTUALLY DETERMINING STUFF ------- + if (((t5 || (W && (W.flags & USEDELAY))) && !( istype(src, /obj/screen) ))) + + // ------- ( CAN USE ITEM OR HAS 1 SECOND USE DELAY ) AND NOT CLICKING ON SCREEN ------- + + if (usr.next_move < world.time) + usr.prev_move = usr.next_move + usr.next_move = world.time + 10 + else + // ------- ALREADY USED ONE ITEM WITH USE DELAY IN THE PREVIOUS SECOND ------- + return + + // ------- DELAY CHECK PASSED ------- + + if ((src.loc && (get_dist(src, usr) < 2 || src.loc == usr.loc))) + + // ------- CLICKED OBJECT EXISTS IN GAME WORLD, DISTANCE FROM PERSON TO OBJECT IS 1 SQUARE OR THEY'RE ON THE SAME SQUARE ------- + + var/direct = get_dir(usr, src) + var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( usr.loc ) + var/ok = 0 + if ( (direct - 1) & direct) + + // ------- CLICKED OBJECT IS LOCATED IN A DIAGONAL POSITION FROM THE PERSON ------- + + var/turf/Step_1 + var/turf/Step_2 + switch(direct) + if(5.0) + Step_1 = get_step(usr, NORTH) + Step_2 = get_step(usr, EAST) + + if(6.0) + Step_1 = get_step(usr, SOUTH) + Step_2 = get_step(usr, EAST) + + if(9.0) + Step_1 = get_step(usr, NORTH) + Step_2 = get_step(usr, WEST) + + if(10.0) + Step_1 = get_step(usr, SOUTH) + Step_2 = get_step(usr, WEST) + + else + if(Step_1 && Step_2) + + // ------- BOTH CARDINAL DIRECTIONS OF THE DIAGONAL EXIST IN THE GAME WORLD ------- + + var/check_1 = 0 + var/check_2 = 0 + if(step_to(D, Step_1)) + check_1 = 1 + for(var/obj/border_obstacle in Step_1) + if(border_obstacle.flags & ON_BORDER) + if(!border_obstacle.CheckExit(D, src)) + check_1 = 0 + // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES ------- + for(var/obj/border_obstacle in get_turf(src)) + if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) + if(!border_obstacle.CanPass(D, D.loc, 1, 0)) + // ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON ------- + check_1 = 0 + + D.loc = usr.loc + if(step_to(D, Step_2)) + check_2 = 1 + + for(var/obj/border_obstacle in Step_2) + if(border_obstacle.flags & ON_BORDER) + if(!border_obstacle.CheckExit(D, src)) + check_2 = 0 + for(var/obj/border_obstacle in get_turf(src)) + if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) + if(!border_obstacle.CanPass(D, D.loc, 1, 0)) + check_2 = 0 + + + if(check_1 || check_2) + ok = 1 + // ------- YOU CAN REACH THE ITEM THROUGH AT LEAST ONE OF THE TWO DIRECTIONS. GOOD. ------- + + /* + More info: + If you're trying to click an item in the north-east of your mob, the above section of code will first check if tehre's a tile to the north or you and to the east of you + These two tiles are Step_1 and Step_2. After this, a new dummy object is created on your location. It then tries to move to Step_1, If it succeeds, objects on the turf you're on and + the turf that Step_1 is are checked for items which have the ON_BORDER flag set. These are itmes which limit you on only one tile border. Windows, for the most part. + CheckExit() and CanPass() are use to determine this. The dummy object is then moved back to your location and it tries to move to Step_2. Same checks are performed here. + If at least one of the two checks succeeds, it means you can reach the item and ok is set to 1. + */ + else + // ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) ------- + if(loc == usr.loc) + ok = 1 + // ------- OBJECT IS ON THE SAME TILE AS YOU ------- + else + ok = 1 + + //Now, check objects to block exit that are on the border + for(var/obj/border_obstacle in usr.loc) + if(border_obstacle.flags & ON_BORDER) + if(!border_obstacle.CheckExit(D, src)) + ok = 0 + + //Next, check objects to block entry that are on the border + for(var/obj/border_obstacle in get_turf(src)) + if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle)) + if(!border_obstacle.CanPass(D, D.loc, 1, 0)) + ok = 0 + /* + See the previous More info, for... more info... + */ + + //del(D) + // Garbage Collect Dummy + D.loc = null + D = null + + // ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE ------- + if (!( ok )) + // ------- TESTS ABOVE DETERMINED YOU CANNOT REACH THE TILE ------- + return 0 + + if (!( usr.restrained() || (usr.lying && usr.buckled!=src) )) + // ------- YOU ARE NOT REASTRAINED ------- + + if (W) + // ------- YOU HAVE AN ITEM IN YOUR HAND - HANDLE ATTACKBY AND AFTERATTACK ------- + var/ignoreAA = 0 //Ignore afterattack(). Surgery uses this. + if (t5) + ignoreAA = src.attackby(W, usr) + if (W && !ignoreAA) + W.afterattack(src, usr, (t5 ? 1 : 0), params) + + else + // ------- YOU DO NOT HAVE AN ITEM IN YOUR HAND ------- + if (istype(usr, /mob/living/carbon/human)) + // ------- YOU ARE HUMAN ------- + src.attack_hand(usr, usr.hand) + else + // ------- YOU ARE NOT HUMAN. WHAT ARE YOU - DETERMINED HERE AND PROPER ATTACK_MOBTYPE CALLED ------- + if (istype(usr, /mob/living/carbon/monkey)) + src.attack_paw(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/alien/humanoid)) + if(usr.m_intent == "walk" && istype(usr, /mob/living/carbon/alien/humanoid/hunter)) + usr.m_intent = "run" + usr.hud_used.move_intent.icon_state = "running" + usr.update_icons() + src.attack_alien(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/alien/larva)) + src.attack_larva(usr) + else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) + src.attack_ai(usr, usr.hand) + else if(istype(usr, /mob/living/carbon/slime)) + src.attack_slime(usr) + else if(istype(usr, /mob/living/simple_animal)) + src.attack_animal(usr) + else + // ------- YOU ARE RESTRAINED. DETERMINE WHAT YOU ARE AND ATTACK WITH THE PROPER HAND_X PROC ------- + if (istype(usr, /mob/living/carbon/human)) + src.hand_h(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/monkey)) + src.hand_p(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/alien/humanoid)) + src.hand_al(usr, usr.hand) + else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) + src.hand_a(usr, usr.hand) + + else + // ------- ITEM INACESSIBLE OR CLICKING ON SCREEN ------- + if (istype(src, /obj/screen)) + // ------- IT'S THE HUD YOU'RE CLICKING ON ------- + usr.prev_move = usr.next_move + usr:lastDblClick = world.time + 2 + if (usr.next_move < world.time) + usr.next_move = world.time + 2 + else + return + + // ------- 2 DECISECOND DELAY FOR CLICKING PASSED ------- + + if (!( usr.restrained() )) + + // ------- YOU ARE NOT RESTRAINED ------- + if ((W && !( istype(src, /obj/screen) ))) + // ------- IT SHOULD NEVER GET TO HERE, DUE TO THE ISTYPE(SRC, /OBJ/SCREEN) FROM PREVIOUS IF-S - I TESTED IT WITH A DEBUG OUTPUT AND I COULDN'T GET THIST TO SHOW UP. ------- + src.attackby(W, usr) + if (W) + W.afterattack(src, usr,, params) + else + // ------- YOU ARE NOT RESTRAINED, AND ARE CLICKING A HUD OBJECT ------- + if (istype(usr, /mob/living/carbon/human)) + src.attack_hand(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/monkey)) + src.attack_paw(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/alien/humanoid)) + src.attack_alien(usr, usr.hand) + else + // ------- YOU ARE RESTRAINED CLICKING ON A HUD OBJECT ------- + if (istype(usr, /mob/living/carbon/human)) + src.hand_h(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/monkey)) + src.hand_p(usr, usr.hand) + else if (istype(usr, /mob/living/carbon/alien/humanoid)) + src.hand_al(usr, usr.hand) + else + // ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD ------- + if((LASER in usr:mutations) && usr:a_intent == "harm" && world.time >= usr.next_move) + // ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED ------- + + var/turf/T = get_turf(usr) + var/turf/U = get_turf(src) + + + if(istype(usr, /mob/living/carbon/human)) + usr:nutrition -= rand(1,5) + usr:handle_regular_hud_updates() + + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( usr.loc ) + A.icon = 'icons/effects/genetics.dmi' + A.icon_state = "eyelasers" + playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) + + A.firer = usr + A.def_zone = usr:get_organ_target() + A.original = src + A.current = T + A.yo = U.y - T.y + A.xo = U.x - T.x + spawn( 1 ) + A.process() + + usr.next_move = world.time + 6 + return diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 5867284bbaa..5c4b32a2ce3 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -1,134 +1,134 @@ -/* - Humans: - Adds an exception for gloves, to allow special glove types like the ninja ones. - - Otherwise pretty standard. -*/ -/mob/living/carbon/human/UnarmedAttack(var/atom/A, var/proximity) - var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines - - // Special glove functions: - // If the gloves do anything, have them return 1 to stop - // normal attack_hand() here. - if(proximity && istype(G) && G.Touch(A,1)) - return - - A.attack_hand(src) -/atom/proc/attack_hand(mob/user as mob) - return - -/* -/mob/living/carbon/human/RestrainedClickOn(var/atom/A) ---carbons will handle this - return -*/ - -/mob/living/carbon/RestrainedClickOn(var/atom/A) - return 0 - -/mob/living/carbon/human/RangedAttack(var/atom/A) - if(!gloves && !mutations.len) return - var/obj/item/clothing/gloves/G = gloves - if((LASER in mutations) && a_intent == "harm") - LaserEyes(A) // moved into a proc below - - else if(istype(G) && G.Touch(A,0)) // for magic gloves - return - - else if(TK in mutations) - switch(get_dist(src,A)) - if(1 to 5) // not adjacent may mean blocked by window - next_move += 2 - if(5 to 7) - next_move += 5 - if(8 to 15) - next_move += 10 - if(16 to 128) - return - A.attack_tk(src) - -/* - Animals & All Unspecified -*/ -/mob/living/UnarmedAttack(var/atom/A) - A.attack_animal(src) -/atom/proc/attack_animal(mob/user as mob) - return -/mob/living/RestrainedClickOn(var/atom/A) - return - - -/* - Monkeys -*/ -/mob/living/carbon/monkey/UnarmedAttack(var/atom/A) - A.attack_paw(src) -/atom/proc/attack_paw(mob/user as mob) - return - -/* - Monkey RestrainedClickOn() was apparently the - one and only use of all of the restrained click code - (except to stop you from doing things while handcuffed); - moving it here instead of various hand_p's has simplified - things considerably -*/ -/mob/living/carbon/monkey/RestrainedClickOn(var/atom/A) - if(..()) - return - if(a_intent != "harm" || !ismob(A)) return - if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - var/mob/living/carbon/ML = A - var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/item/organ/limb/affecting = null - if(ishuman(ML)) // why the hell is this not more general - affecting = ML:get_organ(ran_zone(dam_zone)) - var/armor = ML.run_armor_check(affecting, "melee") - if(prob(75)) - ML.apply_damage(rand(1,3), BRUTE, affecting, armor) - for(var/mob/O in viewers(ML, null)) - O.show_message("[name] bites [ML]!", 1) - if(armor >= 2) return - for(var/datum/disease/D in viruses) - if(istype(D, /datum/disease/jungle_fever)) - ML.contract_disease(D,1,0) - else - for(var/mob/O in viewers(ML, null)) - O.show_message("\red [src] has attempted to bite [ML]!", 1) - -/* - Aliens - Defaults to same as monkey in most places -*/ -/mob/living/carbon/alien/UnarmedAttack(var/atom/A) - A.attack_alien(src) -/atom/proc/attack_alien(mob/user as mob) - attack_paw(user) - return -/mob/living/carbon/alien/RestrainedClickOn(var/atom/A) - return - -// Babby aliens -/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A) - A.attack_larva(src) -/atom/proc/attack_larva(mob/user as mob) - return - - -/* - Slimes - Nothing happening here -*/ -/mob/living/carbon/slime/UnarmedAttack(var/atom/A) - A.attack_slime(src) -/atom/proc/attack_slime(mob/user as mob) - return -/mob/living/carbon/slime/RestrainedClickOn(var/atom/A) - return - -/* - New Players: - Have no reason to click on anything at all. -*/ -/mob/new_player/ClickOn() - return +/* + Humans: + Adds an exception for gloves, to allow special glove types like the ninja ones. + + Otherwise pretty standard. +*/ +/mob/living/carbon/human/UnarmedAttack(var/atom/A, var/proximity) + var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines + + // Special glove functions: + // If the gloves do anything, have them return 1 to stop + // normal attack_hand() here. + if(proximity && istype(G) && G.Touch(A,1)) + return + + A.attack_hand(src) +/atom/proc/attack_hand(mob/user as mob) + return + +/* +/mob/living/carbon/human/RestrainedClickOn(var/atom/A) ---carbons will handle this + return +*/ + +/mob/living/carbon/RestrainedClickOn(var/atom/A) + return 0 + +/mob/living/carbon/human/RangedAttack(var/atom/A) + if(!gloves && !mutations.len) return + var/obj/item/clothing/gloves/G = gloves + if((LASER in mutations) && a_intent == "harm") + LaserEyes(A) // moved into a proc below + + else if(istype(G) && G.Touch(A,0)) // for magic gloves + return + + else if(TK in mutations) + switch(get_dist(src,A)) + if(1 to 5) // not adjacent may mean blocked by window + next_move += 2 + if(5 to 7) + next_move += 5 + if(8 to 15) + next_move += 10 + if(16 to 128) + return + A.attack_tk(src) + +/* + Animals & All Unspecified +*/ +/mob/living/UnarmedAttack(var/atom/A) + A.attack_animal(src) +/atom/proc/attack_animal(mob/user as mob) + return +/mob/living/RestrainedClickOn(var/atom/A) + return + + +/* + Monkeys +*/ +/mob/living/carbon/monkey/UnarmedAttack(var/atom/A) + A.attack_paw(src) +/atom/proc/attack_paw(mob/user as mob) + return + +/* + Monkey RestrainedClickOn() was apparently the + one and only use of all of the restrained click code + (except to stop you from doing things while handcuffed); + moving it here instead of various hand_p's has simplified + things considerably +*/ +/mob/living/carbon/monkey/RestrainedClickOn(var/atom/A) + if(..()) + return + if(a_intent != "harm" || !ismob(A)) return + if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) + return + var/mob/living/carbon/ML = A + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") + var/obj/item/organ/limb/affecting = null + if(ishuman(ML)) // why the hell is this not more general + affecting = ML:get_organ(ran_zone(dam_zone)) + var/armor = ML.run_armor_check(affecting, "melee") + if(prob(75)) + ML.apply_damage(rand(1,3), BRUTE, affecting, armor) + for(var/mob/O in viewers(ML, null)) + O.show_message("[name] bites [ML]!", 1) + if(armor >= 2) return + for(var/datum/disease/D in viruses) + if(istype(D, /datum/disease/jungle_fever)) + ML.contract_disease(D,1,0) + else + for(var/mob/O in viewers(ML, null)) + O.show_message("\red [src] has attempted to bite [ML]!", 1) + +/* + Aliens + Defaults to same as monkey in most places +*/ +/mob/living/carbon/alien/UnarmedAttack(var/atom/A) + A.attack_alien(src) +/atom/proc/attack_alien(mob/user as mob) + attack_paw(user) + return +/mob/living/carbon/alien/RestrainedClickOn(var/atom/A) + return + +// Babby aliens +/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A) + A.attack_larva(src) +/atom/proc/attack_larva(mob/user as mob) + return + + +/* + Slimes + Nothing happening here +*/ +/mob/living/carbon/slime/UnarmedAttack(var/atom/A) + A.attack_slime(src) +/atom/proc/attack_slime(mob/user as mob) + return +/mob/living/carbon/slime/RestrainedClickOn(var/atom/A) + return + +/* + New Players: + Have no reason to click on anything at all. +*/ +/mob/new_player/ClickOn() + return diff --git a/code/_onclick/overmind.dm b/code/_onclick/overmind.dm index 91f24465569..f692ba8f7ea 100644 --- a/code/_onclick/overmind.dm +++ b/code/_onclick/overmind.dm @@ -1,17 +1,17 @@ -// Blob Overmind Controls - - -/mob/camera/blob/CtrlClickOn(var/atom/A) // Expand blob - var/turf/T = get_turf(A) - if(T) - expand_blob(T) - -/mob/camera/blob/MiddleClickOn(var/atom/A) // Rally spores - var/turf/T = get_turf(A) - if(T) - rally_spores(T) - -/mob/camera/blob/AltClickOn(var/atom/A) // Create a shield - var/turf/T = get_turf(A) - if(T) +// Blob Overmind Controls + + +/mob/camera/blob/CtrlClickOn(var/atom/A) // Expand blob + var/turf/T = get_turf(A) + if(T) + expand_blob(T) + +/mob/camera/blob/MiddleClickOn(var/atom/A) // Rally spores + var/turf/T = get_turf(A) + if(T) + rally_spores(T) + +/mob/camera/blob/AltClickOn(var/atom/A) // Create a shield + var/turf/T = get_turf(A) + if(T) create_shield(T) \ No newline at end of file diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index ff62ff8327e..5df04e9312e 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -1,208 +1,208 @@ -/* - Telekinesis - - This needs more thinking out, but I might as well. -*/ -var/const/tk_maxrange = 15 - -/* - Telekinetic attack: - - By default, emulate the user's unarmed attack -*/ -/atom/proc/attack_tk(mob/user) - if(user.stat) return - user.UnarmedAttack(src,0) // attack_hand, attack_paw, etc - return - -/* - This is similar to item attack_self, but applies to anything - that you can grab with a telekinetic grab. - - It is used for manipulating things at range, for example, opening and closing closets. - There are not a lot of defaults at this time, add more where appropriate. -*/ -/atom/proc/attack_self_tk(mob/user) - return - -/obj/attack_tk(mob/user) - if(user.stat) return - if(anchored) - ..() - return - - var/obj/item/tk_grab/O = new(src) - user.put_in_active_hand(O) - O.host = user - O.focus_object(src) - return - -/obj/item/attack_tk(mob/user) - if(user.stat || !isturf(loc)) return - if((TK in user.mutations) && !user.get_active_hand()) // both should already be true to get here - var/obj/item/tk_grab/O = new(src) - user.put_in_active_hand(O) - O.host = user - O.focus_object(src) - else - warning("Strange attack_tk(): TK([TK in user.mutations]) empty hand([!user.get_active_hand()])") - return - - -/mob/attack_tk(mob/user) - return // needs more thinking about - -/* - TK Grab Item (the workhorse of old TK) - - * If you have not grabbed something, do a normal tk attack - * If you have something, throw it at the target. If it is already adjacent, do a normal attackby() - * If you click what you are holding, or attack_self(), do an attack_self_tk() on it. - * Deletes itself if it is ever not in your hand, or if you should have no access to TK. -*/ -/obj/item/tk_grab - name = "Telekinetic Grab" - desc = "Magic" - icon = 'icons/obj/magic.dmi'//Needs sprites - icon_state = "2" - flags = NOBLUDGEON - //item_state = null - w_class = 10.0 - layer = 20 - - var/last_throw = 0 - var/atom/movable/focus = null - var/mob/living/host = null - - - dropped(mob/user as mob) - if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item - if(focus.Adjacent(loc)) - focus.loc = loc - - qdel(src) - return - - - //stops TK grabs being equipped anywhere but into hands - equipped(var/mob/user, var/slot) - if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return - qdel(src) - return - - - attack_self(mob/user as mob) - if(focus) - focus.attack_self_tk(user) - - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity)//TODO: go over this - if(!target || !user) return - if(last_throw+3 > world.time) return - if(!host || host != user) - qdel(src) - return - if(!(TK in host.mutations)) - qdel(src) - return - if(isobj(target) && !isturf(target.loc)) - return - - var/d = get_dist(user, target) - if(focus) d = max(d,get_dist(user,focus)) // whichever is further - switch(d) - if(0) - ; - if(1 to 5) // not adjacent may mean blocked by window - if(!proximity) - user.next_move += 2 - if(5 to 7) - user.next_move += 5 - if(8 to tk_maxrange) - user.next_move += 10 - else - user << "\blue Your mind won't reach that far." - return - - if(!focus) - focus_object(target, user) - return - - if(target == focus) - target.attack_self_tk(user) - return // todo: something like attack_self not laden with assumptions inherent to attack_self - - - if(!istype(target, /turf) && istype(focus,/obj/item) && target.Adjacent(focus)) - var/obj/item/I = focus - var/resolved = target.attackby(I, user, user:get_organ_target()) - if(!resolved && target && I) - I.afterattack(target,user,1) // for splashing with beakers - - - else - apply_focus_overlay() - focus.throw_at(target, 10, 1) - last_throw = world.time - return - - attack(mob/living/M as mob, mob/living/user as mob, def_zone) - return - - - proc/focus_object(var/obj/target, var/mob/living/user) - if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later - if(target.anchored || !isturf(target.loc)) - qdel(src) - return - focus = target - update_icon() - apply_focus_overlay() - return - - - proc/apply_focus_overlay() - if(!focus) return - var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z)) - O.name = "sparkles" - O.anchored = 1 - O.density = 0 - O.layer = FLY_LAYER - O.dir = pick(cardinal) - O.icon = 'icons/effects/effects.dmi' - O.icon_state = "nothing" - flick("empdisable",O) - spawn(5) - O.delete() - return - - - update_icon() - overlays.Cut() - if(focus && focus.icon && focus.icon_state) - overlays += icon(focus.icon,focus.icon_state) - return - -/*Not quite done likely needs to use something thats not get_step_to - proc/check_path() - var/turf/ref = get_turf(src.loc) - var/turf/target = get_turf(focus.loc) - if(!ref || !target) return 0 - var/distance = get_dist(ref, target) - if(distance >= 10) return 0 - for(var/i = 1 to distance) - ref = get_step_to(ref, target, 0) - if(ref != target) return 0 - return 1 -*/ - -//equip_to_slot_or_del(obj/item/W, slot, qdel_on_fail = 1) -/* - if(istype(user, /mob/living/carbon)) - if(user:mutations & TK && get_dist(source, user) <= 7) - if(user:get_active_hand()) return 0 - var/X = source:x - var/Y = source:y - var/Z = source:z - -*/ - +/* + Telekinesis + + This needs more thinking out, but I might as well. +*/ +var/const/tk_maxrange = 15 + +/* + Telekinetic attack: + + By default, emulate the user's unarmed attack +*/ +/atom/proc/attack_tk(mob/user) + if(user.stat) return + user.UnarmedAttack(src,0) // attack_hand, attack_paw, etc + return + +/* + This is similar to item attack_self, but applies to anything + that you can grab with a telekinetic grab. + + It is used for manipulating things at range, for example, opening and closing closets. + There are not a lot of defaults at this time, add more where appropriate. +*/ +/atom/proc/attack_self_tk(mob/user) + return + +/obj/attack_tk(mob/user) + if(user.stat) return + if(anchored) + ..() + return + + var/obj/item/tk_grab/O = new(src) + user.put_in_active_hand(O) + O.host = user + O.focus_object(src) + return + +/obj/item/attack_tk(mob/user) + if(user.stat || !isturf(loc)) return + if((TK in user.mutations) && !user.get_active_hand()) // both should already be true to get here + var/obj/item/tk_grab/O = new(src) + user.put_in_active_hand(O) + O.host = user + O.focus_object(src) + else + warning("Strange attack_tk(): TK([TK in user.mutations]) empty hand([!user.get_active_hand()])") + return + + +/mob/attack_tk(mob/user) + return // needs more thinking about + +/* + TK Grab Item (the workhorse of old TK) + + * If you have not grabbed something, do a normal tk attack + * If you have something, throw it at the target. If it is already adjacent, do a normal attackby() + * If you click what you are holding, or attack_self(), do an attack_self_tk() on it. + * Deletes itself if it is ever not in your hand, or if you should have no access to TK. +*/ +/obj/item/tk_grab + name = "Telekinetic Grab" + desc = "Magic" + icon = 'icons/obj/magic.dmi'//Needs sprites + icon_state = "2" + flags = NOBLUDGEON + //item_state = null + w_class = 10.0 + layer = 20 + + var/last_throw = 0 + var/atom/movable/focus = null + var/mob/living/host = null + + + dropped(mob/user as mob) + if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item + if(focus.Adjacent(loc)) + focus.loc = loc + + qdel(src) + return + + + //stops TK grabs being equipped anywhere but into hands + equipped(var/mob/user, var/slot) + if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return + qdel(src) + return + + + attack_self(mob/user as mob) + if(focus) + focus.attack_self_tk(user) + + afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity)//TODO: go over this + if(!target || !user) return + if(last_throw+3 > world.time) return + if(!host || host != user) + qdel(src) + return + if(!(TK in host.mutations)) + qdel(src) + return + if(isobj(target) && !isturf(target.loc)) + return + + var/d = get_dist(user, target) + if(focus) d = max(d,get_dist(user,focus)) // whichever is further + switch(d) + if(0) + ; + if(1 to 5) // not adjacent may mean blocked by window + if(!proximity) + user.next_move += 2 + if(5 to 7) + user.next_move += 5 + if(8 to tk_maxrange) + user.next_move += 10 + else + user << "\blue Your mind won't reach that far." + return + + if(!focus) + focus_object(target, user) + return + + if(target == focus) + target.attack_self_tk(user) + return // todo: something like attack_self not laden with assumptions inherent to attack_self + + + if(!istype(target, /turf) && istype(focus,/obj/item) && target.Adjacent(focus)) + var/obj/item/I = focus + var/resolved = target.attackby(I, user, user:get_organ_target()) + if(!resolved && target && I) + I.afterattack(target,user,1) // for splashing with beakers + + + else + apply_focus_overlay() + focus.throw_at(target, 10, 1) + last_throw = world.time + return + + attack(mob/living/M as mob, mob/living/user as mob, def_zone) + return + + + proc/focus_object(var/obj/target, var/mob/living/user) + if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later + if(target.anchored || !isturf(target.loc)) + qdel(src) + return + focus = target + update_icon() + apply_focus_overlay() + return + + + proc/apply_focus_overlay() + if(!focus) return + var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z)) + O.name = "sparkles" + O.anchored = 1 + O.density = 0 + O.layer = FLY_LAYER + O.dir = pick(cardinal) + O.icon = 'icons/effects/effects.dmi' + O.icon_state = "nothing" + flick("empdisable",O) + spawn(5) + O.delete() + return + + + update_icon() + overlays.Cut() + if(focus && focus.icon && focus.icon_state) + overlays += icon(focus.icon,focus.icon_state) + return + +/*Not quite done likely needs to use something thats not get_step_to + proc/check_path() + var/turf/ref = get_turf(src.loc) + var/turf/target = get_turf(focus.loc) + if(!ref || !target) return 0 + var/distance = get_dist(ref, target) + if(distance >= 10) return 0 + for(var/i = 1 to distance) + ref = get_step_to(ref, target, 0) + if(ref != target) return 0 + return 1 +*/ + +//equip_to_slot_or_del(obj/item/W, slot, qdel_on_fail = 1) +/* + if(istype(user, /mob/living/carbon)) + if(user:mutations & TK && get_dist(source, user) <= 7) + if(user:get_active_hand()) return 0 + var/X = source:x + var/Y = source:y + var/Z = source:z + +*/ + diff --git a/code/controllers/garbage.dm b/code/controllers/garbage.dm index 95ed79b2723..4708564e096 100644 --- a/code/controllers/garbage.dm +++ b/code/controllers/garbage.dm @@ -1,131 +1,131 @@ -#define GC_COLLECTIONS_PER_TICK 100 // how many objects we're going to null the vars of per tick -#define GC_COLLECTION_TIMEOUT 300 // deciseconds to wait to let running procs finish before we just say fuck it and force del() the object -#define GC_DEL_CHECK_PER_TICK 100 // number of tests per tick to make sure our GC'd objects are actually GC'd -#define GC_FORCE_DEL_PER_TICK 20 // max force del() calls per tick - -var/datum/controller/garbage_collector/garbage = new() - -var/list/uncollectable_vars=list( -// "bounds", // bounds and its ilk are all caught by the issaved() check later on - "contents", - "gc_destroyed", - "invisibility", - "gender", // Causes runtimes if the logging is on - "parent", - "step_size", -) -// These are the vars left from /vg/'s implementation that aren't const or global -// I dunno how many are necessary but since most of these are numbers anyways, I don't care. - -/datum/controller/garbage_collector - var/dels = 0 // number of del()'s we've done this tick - var/list/queue = list() // list of things that have yet to have all their vars nulled out - var/list/destroyed = list() // list of refID's of things that should be garbage collected - // refID's are associated with the time at which they time out and need to be manually del() - // we do this so we aren't constantly locating them and preventing them from being gc'd - -/datum/controller/garbage_collector/proc/AddTrash(var/atom/movable/A) - if(!istype(A)) - return -// testing("GC: AddTrash([A.type])") - queue |= A - -/datum/controller/garbage_collector/proc/Pop() - var/atom/movable/A = queue[1] - if(!A) - queue.Cut(1, 2) -// testing("GC: Pop() given null") - return - if(!istype(A,/atom/movable)) -// testing("GC: -- Pop() given [A.type] --") - queue.Cut(1, 2) - dels++ - del(A) - return - for(var/vname in A.vars) - if(!issaved(A.vars[vname])) -// testing("GC: Skipping [vname] in [A.type]: it's const|global|tmp") - continue - if(vname in uncollectable_vars) -// testing("GC: Skipping [vname] in [A.type]: it's uncollectable") - continue -// testing("GC: Unsetting [vname] in [A.type]") - A.vars[vname] = null -// testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.time] first:[queue[1]] second:[queue.len > 1 ? "[queue[2]]" : "NOTHING"]") - destroyed["\ref[A]"] = A.gc_destroyed - queue.Cut(1, 2) - -/datum/controller/garbage_collector/proc/process() - dels = 0 - var/i - for(i = 1, queue.len && i <= GC_COLLECTIONS_PER_TICK, i++) - Pop() - var/time_to_kill = world.time - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() - for(i = 1, destroyed.len && i <= GC_DEL_CHECK_PER_TICK, i++) - var/refID = destroyed[1] - var/GCd_at_time = destroyed[refID] - if(GCd_at_time > time_to_kill) -// testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]") - break // Everything else is newer, skip them - var/atom/A = locate(refID) -// testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]") - if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake - // Something's still referring to the qdel'd object. Kill it. - if(dels >= GC_FORCE_DEL_PER_TICK) -// testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]") - break // Server's already pretty pounded, everything else can wait 2 seconds - testing("GC: -- \ref[A] | [A.type] was unable to be garbage collected and was force del() --") - del(A) - dels++ -// else -// testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]") - destroyed.Cut(1, 2) - -/** -* NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable -* OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE. -* While I'm leaving the above comment in since /atoms cannot be garbage collected, datums and lists can be garbage collected just fine. -* Read the DM guide on it. Hit f1 and search for "garbage collection" -*/ -/proc/qdel(var/atom/movable/A) - if(!A) - return - if(!garbage) - del(A) - return - if(!istype(A)) - warning("qdel() passed object of type [A.type]. qdel() can only handle /atom/movable types.") - garbage.dels++ - del(A) - return - // Let our friend know they're about to get fucked up. - A.Destroy() - garbage.AddTrash(A) - - -/* -// Uncomment this verb and run it on things to report blockages. -/atom/verb/qdel_test() - set name = "qdel with test" - set category = "Debug" - set background = 1 - set src in world - - qdel(src) - for(var/datum/everything) //Yes this works. - for(var/everyvar in everything.vars) - var/variable = everything.vars[everyvar] - if(variable == src) - testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") - else if(islist(variable)) - if(src in variable) - testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") - for(var/atom/movable/everything) //The slow part. - for(var/everyvar in everything.vars) - var/variable = everything.vars[everyvar] - if(variable == src) - testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") - else if(islist(variable)) - if(src in variable) - testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") +#define GC_COLLECTIONS_PER_TICK 100 // how many objects we're going to null the vars of per tick +#define GC_COLLECTION_TIMEOUT 300 // deciseconds to wait to let running procs finish before we just say fuck it and force del() the object +#define GC_DEL_CHECK_PER_TICK 100 // number of tests per tick to make sure our GC'd objects are actually GC'd +#define GC_FORCE_DEL_PER_TICK 20 // max force del() calls per tick + +var/datum/controller/garbage_collector/garbage = new() + +var/list/uncollectable_vars=list( +// "bounds", // bounds and its ilk are all caught by the issaved() check later on + "contents", + "gc_destroyed", + "invisibility", + "gender", // Causes runtimes if the logging is on + "parent", + "step_size", +) +// These are the vars left from /vg/'s implementation that aren't const or global +// I dunno how many are necessary but since most of these are numbers anyways, I don't care. + +/datum/controller/garbage_collector + var/dels = 0 // number of del()'s we've done this tick + var/list/queue = list() // list of things that have yet to have all their vars nulled out + var/list/destroyed = list() // list of refID's of things that should be garbage collected + // refID's are associated with the time at which they time out and need to be manually del() + // we do this so we aren't constantly locating them and preventing them from being gc'd + +/datum/controller/garbage_collector/proc/AddTrash(var/atom/movable/A) + if(!istype(A)) + return +// testing("GC: AddTrash([A.type])") + queue |= A + +/datum/controller/garbage_collector/proc/Pop() + var/atom/movable/A = queue[1] + if(!A) + queue.Cut(1, 2) +// testing("GC: Pop() given null") + return + if(!istype(A,/atom/movable)) +// testing("GC: -- Pop() given [A.type] --") + queue.Cut(1, 2) + dels++ + del(A) + return + for(var/vname in A.vars) + if(!issaved(A.vars[vname])) +// testing("GC: Skipping [vname] in [A.type]: it's const|global|tmp") + continue + if(vname in uncollectable_vars) +// testing("GC: Skipping [vname] in [A.type]: it's uncollectable") + continue +// testing("GC: Unsetting [vname] in [A.type]") + A.vars[vname] = null +// testing("GC: Pop([A.type]) - destroyed\[\ref[A]\] = [A.gc_destroyed] current time: [world.time] first:[queue[1]] second:[queue.len > 1 ? "[queue[2]]" : "NOTHING"]") + destroyed["\ref[A]"] = A.gc_destroyed + queue.Cut(1, 2) + +/datum/controller/garbage_collector/proc/process() + dels = 0 + var/i + for(i = 1, queue.len && i <= GC_COLLECTIONS_PER_TICK, i++) + Pop() + var/time_to_kill = world.time - GC_COLLECTION_TIMEOUT // Anything qdel() but not GC'd BEFORE this time needs to be manually del() + for(i = 1, destroyed.len && i <= GC_DEL_CHECK_PER_TICK, i++) + var/refID = destroyed[1] + var/GCd_at_time = destroyed[refID] + if(GCd_at_time > time_to_kill) +// testing("GC: [refID] not old enough, breaking at [world.time] for [GCd_at_time - time_to_kill] deciseconds until [GCd_at_time + GC_COLLECTION_TIMEOUT]") + break // Everything else is newer, skip them + var/atom/A = locate(refID) +// testing("GC: [refID] old enough to test: GCd_at_time: [GCd_at_time] time_to_kill: [time_to_kill] current: [world.time]") + if(A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake + // Something's still referring to the qdel'd object. Kill it. + if(dels >= GC_FORCE_DEL_PER_TICK) +// testing("GC: Reached max force dels per tick [dels] vs [GC_FORCE_DEL_PER_TICK]") + break // Server's already pretty pounded, everything else can wait 2 seconds + testing("GC: -- \ref[A] | [A.type] was unable to be garbage collected and was force del() --") + del(A) + dels++ +// else +// testing("GC: [refID] properly GC'd at [world.time] with timeout [GCd_at_time]") + destroyed.Cut(1, 2) + +/** +* NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable +* OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE. +* While I'm leaving the above comment in since /atoms cannot be garbage collected, datums and lists can be garbage collected just fine. +* Read the DM guide on it. Hit f1 and search for "garbage collection" +*/ +/proc/qdel(var/atom/movable/A) + if(!A) + return + if(!garbage) + del(A) + return + if(!istype(A)) + warning("qdel() passed object of type [A.type]. qdel() can only handle /atom/movable types.") + garbage.dels++ + del(A) + return + // Let our friend know they're about to get fucked up. + A.Destroy() + garbage.AddTrash(A) + + +/* +// Uncomment this verb and run it on things to report blockages. +/atom/verb/qdel_test() + set name = "qdel with test" + set category = "Debug" + set background = 1 + set src in world + + qdel(src) + for(var/datum/everything) //Yes this works. + for(var/everyvar in everything.vars) + var/variable = everything.vars[everyvar] + if(variable == src) + testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") + else if(islist(variable)) + if(src in variable) + testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") + for(var/atom/movable/everything) //The slow part. + for(var/everyvar in everything.vars) + var/variable = everything.vars[everyvar] + if(variable == src) + testing("Found [src.type] \ref[src] in [everything.type]'s [everyvar] var.") + else if(islist(variable)) + if(src in variable) + testing("Found [src.type]\ref[src] in [everything.type]'s [everyvar] var.") */ \ No newline at end of file diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 40eb5047c9a..729db3c2c17 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -1,84 +1,84 @@ -//TODO: rewrite and standardise all controller datums to the datum/controller type -//TODO: allow all controllers to be deleted for clean restarts (see WIP master controller stuff) - MC done - lighting done - -/client/proc/restart_controller(controller in list("Master","Failsafe","Lighting","Supply Shuttle")) - set category = "Debug" - set name = "Restart Controller" - set desc = "Restart one of the various periodic loop controllers for the game (be careful!)" - - if(!holder) return - usr = null - src = null - switch(controller) - if("Master") - new /datum/controller/game_controller() - master_controller.process() - feedback_add_details("admin_verb","RMC") - if("Failsafe") - new /datum/controller/failsafe() - feedback_add_details("admin_verb","RFailsafe") - if("Lighting") - new /datum/controller/lighting() - lighting_controller.process() - feedback_add_details("admin_verb","RLighting") - if("Supply Shuttle") - supply_shuttle.process() - feedback_add_details("admin_verb","RSupply") - message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") - return - - -/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Garbage","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events")) - set category = "Debug" - set name = "Debug Controller" - set desc = "Debug the various periodic loop controllers for the game (be careful!)" - - if(!holder) return - switch(controller) - if("Master") - debug_variables(master_controller) - feedback_add_details("admin_verb","DMC") - if("Failsafe") - debug_variables(Failsafe) - feedback_add_details("admin_verb","DFailsafe") - if("Ticker") - debug_variables(ticker) - feedback_add_details("admin_verb","DTicker") - if("Lighting") - debug_variables(lighting_controller) - feedback_add_details("admin_verb","DLighting") - if("Garbage") - debug_variables(garbage) - feedback_add_details("admin_verb","DGarbage") - if("Air") - debug_variables(air_master) - feedback_add_details("admin_verb","DAir") - if("Jobs") - debug_variables(job_master) - feedback_add_details("admin_verb","DJobs") - if("Sun") - debug_variables(sun) - feedback_add_details("admin_verb","DSun") - if("Radio") - debug_variables(radio_controller) - feedback_add_details("admin_verb","DRadio") - if("Supply Shuttle") - debug_variables(supply_shuttle) - feedback_add_details("admin_verb","DSupply") - if("Emergency Shuttle") - debug_variables(emergency_shuttle) - feedback_add_details("admin_verb","DEmergency") - if("Configuration") - debug_variables(config) - feedback_add_details("admin_verb","DConf") - if("pAI") - debug_variables(paiController) - feedback_add_details("admin_verb","DpAI") - if("Cameras") - debug_variables(cameranet) - feedback_add_details("admin_verb","DCameras") - if("Events") - debug_variables(events) - feedback_add_details("admin_verb","DEvents") - message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") - return +//TODO: rewrite and standardise all controller datums to the datum/controller type +//TODO: allow all controllers to be deleted for clean restarts (see WIP master controller stuff) - MC done - lighting done + +/client/proc/restart_controller(controller in list("Master","Failsafe","Lighting","Supply Shuttle")) + set category = "Debug" + set name = "Restart Controller" + set desc = "Restart one of the various periodic loop controllers for the game (be careful!)" + + if(!holder) return + usr = null + src = null + switch(controller) + if("Master") + new /datum/controller/game_controller() + master_controller.process() + feedback_add_details("admin_verb","RMC") + if("Failsafe") + new /datum/controller/failsafe() + feedback_add_details("admin_verb","RFailsafe") + if("Lighting") + new /datum/controller/lighting() + lighting_controller.process() + feedback_add_details("admin_verb","RLighting") + if("Supply Shuttle") + supply_shuttle.process() + feedback_add_details("admin_verb","RSupply") + message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") + return + + +/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Garbage","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events")) + set category = "Debug" + set name = "Debug Controller" + set desc = "Debug the various periodic loop controllers for the game (be careful!)" + + if(!holder) return + switch(controller) + if("Master") + debug_variables(master_controller) + feedback_add_details("admin_verb","DMC") + if("Failsafe") + debug_variables(Failsafe) + feedback_add_details("admin_verb","DFailsafe") + if("Ticker") + debug_variables(ticker) + feedback_add_details("admin_verb","DTicker") + if("Lighting") + debug_variables(lighting_controller) + feedback_add_details("admin_verb","DLighting") + if("Garbage") + debug_variables(garbage) + feedback_add_details("admin_verb","DGarbage") + if("Air") + debug_variables(air_master) + feedback_add_details("admin_verb","DAir") + if("Jobs") + debug_variables(job_master) + feedback_add_details("admin_verb","DJobs") + if("Sun") + debug_variables(sun) + feedback_add_details("admin_verb","DSun") + if("Radio") + debug_variables(radio_controller) + feedback_add_details("admin_verb","DRadio") + if("Supply Shuttle") + debug_variables(supply_shuttle) + feedback_add_details("admin_verb","DSupply") + if("Emergency Shuttle") + debug_variables(emergency_shuttle) + feedback_add_details("admin_verb","DEmergency") + if("Configuration") + debug_variables(config) + feedback_add_details("admin_verb","DConf") + if("pAI") + debug_variables(paiController) + feedback_add_details("admin_verb","DpAI") + if("Cameras") + debug_variables(cameranet) + feedback_add_details("admin_verb","DCameras") + if("Events") + debug_variables(events) + feedback_add_details("admin_verb","DEvents") + message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") + return diff --git a/code/datums/diseases/advance/symptoms/genetics.dm b/code/datums/diseases/advance/symptoms/genetics.dm index 11a580dce5f..9db0b88b46b 100644 --- a/code/datums/diseases/advance/symptoms/genetics.dm +++ b/code/datums/diseases/advance/symptoms/genetics.dm @@ -1,81 +1,81 @@ -/* -////////////////////////////////////// - -DNA Saboteur - - Very noticable. - Lowers resistance tremendously. - No changes to stage speed. - Decreases transmittablity temrendously. - Fatal Level. - -Bonus - Cleans the DNA of a person and then randomly gives them a disability. - -////////////////////////////////////// -*/ - -/datum/symptom/genetic_mutation - - name = "Deoxyribonucleic Acid Saboteur" - stealth = -2 - resistance = -3 - stage_speed = 0 - transmittable = -3 - level = 6 - var/good_mutations = 0 - var/archived_dna = null - -/datum/symptom/genetic_mutation/Activate(var/datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(4, 5) - M << "[pick("Your skin feels itchy.", "You feel light headed.")]" - clean_randmut(M, good_mutations == 1 ? (good_se_blocks | op_se_blocks) : bad_se_blocks, 20) // Give them a random good/bad mutation. - domutcheck(M, null, 1) // Force the power to manifest - return - -// Archive their DNA before they were infected. -/datum/symptom/genetic_mutation/Start(var/datum/disease/advance/A) - var/mob/living/carbon/M = A.affected_mob - if(M) - if(!check_dna_integrity(M)) - return - archived_dna = M.dna.struc_enzymes - -// Give them back their old DNA when cured. -/datum/symptom/genetic_mutation/End(var/datum/disease/advance/A) - var/mob/living/carbon/M = A.affected_mob - if(M && archived_dna) - if(!check_dna_integrity(M)) - return - hardset_dna(M, se = archived_dna) - -/* -////////////////////////////////////// - -DNA Aide - - Very very noticable. - Lowers resistance tremendously. - No changes to stage speed. - Decreases transmittablity temrendously. - Fatal Level. - -Bonus - Cleans the DNA of a person and then randomly gives them a power.. - -////////////////////////////////////// -*/ - -/datum/symptom/genetic_mutation/powers - - name = "Deoxyribonucleic Acid Aide" - stealth = -3 - resistance = -4 - stage_speed = 0 - transmittable = -4 - level = 6 +/* +////////////////////////////////////// + +DNA Saboteur + + Very noticable. + Lowers resistance tremendously. + No changes to stage speed. + Decreases transmittablity temrendously. + Fatal Level. + +Bonus + Cleans the DNA of a person and then randomly gives them a disability. + +////////////////////////////////////// +*/ + +/datum/symptom/genetic_mutation + + name = "Deoxyribonucleic Acid Saboteur" + stealth = -2 + resistance = -3 + stage_speed = 0 + transmittable = -3 + level = 6 + var/good_mutations = 0 + var/archived_dna = null + +/datum/symptom/genetic_mutation/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + switch(A.stage) + if(4, 5) + M << "[pick("Your skin feels itchy.", "You feel light headed.")]" + clean_randmut(M, good_mutations == 1 ? (good_se_blocks | op_se_blocks) : bad_se_blocks, 20) // Give them a random good/bad mutation. + domutcheck(M, null, 1) // Force the power to manifest + return + +// Archive their DNA before they were infected. +/datum/symptom/genetic_mutation/Start(var/datum/disease/advance/A) + var/mob/living/carbon/M = A.affected_mob + if(M) + if(!check_dna_integrity(M)) + return + archived_dna = M.dna.struc_enzymes + +// Give them back their old DNA when cured. +/datum/symptom/genetic_mutation/End(var/datum/disease/advance/A) + var/mob/living/carbon/M = A.affected_mob + if(M && archived_dna) + if(!check_dna_integrity(M)) + return + hardset_dna(M, se = archived_dna) + +/* +////////////////////////////////////// + +DNA Aide + + Very very noticable. + Lowers resistance tremendously. + No changes to stage speed. + Decreases transmittablity temrendously. + Fatal Level. + +Bonus + Cleans the DNA of a person and then randomly gives them a power.. + +////////////////////////////////////// +*/ + +/datum/symptom/genetic_mutation/powers + + name = "Deoxyribonucleic Acid Aide" + stealth = -3 + resistance = -4 + stage_speed = 0 + transmittable = -4 + level = 6 good_mutations = 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/vitiligo.dm b/code/datums/diseases/advance/symptoms/vitiligo.dm index fd7b0aca281..21036166dbe 100644 --- a/code/datums/diseases/advance/symptoms/vitiligo.dm +++ b/code/datums/diseases/advance/symptoms/vitiligo.dm @@ -1,41 +1,41 @@ -/* -////////////////////////////////////// -Vitiligo - - Extremely Noticable. - Decreases resistance slightly. - Reduces stage speed slightly. - Reduces transmission. - Critical Level. - -BONUS - Makes the mob lose skin pigmentation. - -////////////////////////////////////// -*/ - -/datum/symptom/vitiligo - - name = "Vitiligo" - stealth = -3 - resistance = -1 - stage_speed = -1 - transmittable = -2 - level = 5 - -/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.skin_tone == "albino") - return - switch(A.stage) - if(5) - H.skin_tone = "albino" - H.update_body(0) - else - H.visible_message("[H] looks a bit pale...", "You look a bit pale...") - +/* +////////////////////////////////////// +Vitiligo + + Extremely Noticable. + Decreases resistance slightly. + Reduces stage speed slightly. + Reduces transmission. + Critical Level. + +BONUS + Makes the mob lose skin pigmentation. + +////////////////////////////////////// +*/ + +/datum/symptom/vitiligo + + name = "Vitiligo" + stealth = -3 + resistance = -1 + stage_speed = -1 + transmittable = -2 + level = 5 + +/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A) + ..() + if(prob(SYMPTOM_ACTIVATION_PROB)) + var/mob/living/M = A.affected_mob + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.skin_tone == "albino") + return + switch(A.stage) + if(5) + H.skin_tone = "albino" + H.update_body(0) + else + H.visible_message("[H] looks a bit pale...", "You look a bit pale...") + return \ No newline at end of file diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 8e70770a4a4..1defba4e13d 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -1,51 +1,51 @@ -/datum/disease/rhumba_beat - name = "The Rhumba Beat" - max_stages = 5 - spread = "On contact" - spread_type = CONTACT_GENERAL - cure = "Chick Chicky Boom!" - cure_id = list("plasma") - agent = "Unknown" - affected_species = list("Human") - permeability_mod = 1 - -/datum/disease/rhumba_beat/stage_act() - ..() - switch(stage) - if(1) - if(affected_mob.ckey == "rosham") - src.cure() - if(2) - if(affected_mob.ckey == "rosham") - src.cure() - if(prob(45)) - affected_mob.adjustToxLoss(5) - affected_mob.updatehealth() - if(prob(1)) - affected_mob << "\red You feel strange..." - if(3) - if(affected_mob.ckey == "rosham") - src.cure() - if(prob(5)) - affected_mob << "\red You feel the urge to dance..." - else if(prob(5)) - affected_mob.emote("gasp") - else if(prob(10)) - affected_mob << "\red You feel the need to chick chicky boom..." - if(4) - if(affected_mob.ckey == "rosham") - src.cure() - if(prob(10)) - affected_mob.emote("gasp") - affected_mob << "\red You feel a burning beat inside..." - if(prob(20)) - affected_mob.adjustToxLoss(5) - affected_mob.updatehealth() - if(5) - if(affected_mob.ckey == "rosham") - src.cure() - affected_mob << "\red Your body is unable to contain the Rhumba Beat..." - if(prob(50)) - affected_mob.gib() - else +/datum/disease/rhumba_beat + name = "The Rhumba Beat" + max_stages = 5 + spread = "On contact" + spread_type = CONTACT_GENERAL + cure = "Chick Chicky Boom!" + cure_id = list("plasma") + agent = "Unknown" + affected_species = list("Human") + permeability_mod = 1 + +/datum/disease/rhumba_beat/stage_act() + ..() + switch(stage) + if(1) + if(affected_mob.ckey == "rosham") + src.cure() + if(2) + if(affected_mob.ckey == "rosham") + src.cure() + if(prob(45)) + affected_mob.adjustToxLoss(5) + affected_mob.updatehealth() + if(prob(1)) + affected_mob << "\red You feel strange..." + if(3) + if(affected_mob.ckey == "rosham") + src.cure() + if(prob(5)) + affected_mob << "\red You feel the urge to dance..." + else if(prob(5)) + affected_mob.emote("gasp") + else if(prob(10)) + affected_mob << "\red You feel the need to chick chicky boom..." + if(4) + if(affected_mob.ckey == "rosham") + src.cure() + if(prob(10)) + affected_mob.emote("gasp") + affected_mob << "\red You feel a burning beat inside..." + if(prob(20)) + affected_mob.adjustToxLoss(5) + affected_mob.updatehealth() + if(5) + if(affected_mob.ckey == "rosham") + src.cure() + affected_mob << "\red Your body is unable to contain the Rhumba Beat..." + if(prob(50)) + affected_mob.gib() + else return \ No newline at end of file diff --git a/code/datums/diseases/robotic_transformation.dm b/code/datums/diseases/robotic_transformation.dm index 935dd297a30..da0540c8bdc 100644 --- a/code/datums/diseases/robotic_transformation.dm +++ b/code/datums/diseases/robotic_transformation.dm @@ -1,64 +1,64 @@ -//Nanomachines! - -/datum/disease/robotic_transformation - name = "Robotic Transformation" - max_stages = 5 - spread = "Syringe" - spread_type = SPECIAL - cure = "An injection of copper." - cure_id = list("copper") - cure_chance = 5 - agent = "R2D2 Nanomachines" - affected_species = list("Human") - desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." - severity = "Major" - var/gibbed = 0 - -/datum/disease/robotic_transformation/stage_act() - ..() - switch(stage) - if(2) - if (prob(8)) - affected_mob << "Your joints feel stiff." - affected_mob.take_organ_damage(1) - if (prob(9)) - affected_mob << "\red Beep...boop.." - if (prob(9)) - affected_mob << "\red Bop...beeep..." - if(3) - if (prob(8)) - affected_mob << "\red Your joints feel very stiff." - affected_mob.take_organ_damage(1) - if (prob(8)) - affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) - if (prob(10)) - affected_mob << "Your skin feels loose." - affected_mob.take_organ_damage(5) - if (prob(4)) - affected_mob << "\red You feel a stabbing pain in your head." - affected_mob.Paralyse(2) - if (prob(4)) - affected_mob << "\red You can feel something move...inside." - if(4) - if (prob(10)) - affected_mob << "\red Your skin feels very loose." - affected_mob.take_organ_damage(8) - if (prob(20)) - affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee...")) - if (prob(8)) - affected_mob << "\red You can feel... something...inside you." - if(5) - affected_mob <<"\red Your skin feels as if it's about to burst off..." - affected_mob.adjustToxLoss(10) - affected_mob.updatehealth() - if(prob(40)) //So everyone can feel like robot Seth Brundle - if(src.gibbed != 0) return 0 - var/turf/T = find_loc(affected_mob) - gibs(T) - gibbed = 1 - var/mob/living/carbon/human/H = affected_mob - if(istype(H) && !jobban_isbanned(affected_mob, "Cyborg")) - H.Robotize() - else - affected_mob.death(1) - +//Nanomachines! + +/datum/disease/robotic_transformation + name = "Robotic Transformation" + max_stages = 5 + spread = "Syringe" + spread_type = SPECIAL + cure = "An injection of copper." + cure_id = list("copper") + cure_chance = 5 + agent = "R2D2 Nanomachines" + affected_species = list("Human") + desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." + severity = "Major" + var/gibbed = 0 + +/datum/disease/robotic_transformation/stage_act() + ..() + switch(stage) + if(2) + if (prob(8)) + affected_mob << "Your joints feel stiff." + affected_mob.take_organ_damage(1) + if (prob(9)) + affected_mob << "\red Beep...boop.." + if (prob(9)) + affected_mob << "\red Bop...beeep..." + if(3) + if (prob(8)) + affected_mob << "\red Your joints feel very stiff." + affected_mob.take_organ_damage(1) + if (prob(8)) + affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) + if (prob(10)) + affected_mob << "Your skin feels loose." + affected_mob.take_organ_damage(5) + if (prob(4)) + affected_mob << "\red You feel a stabbing pain in your head." + affected_mob.Paralyse(2) + if (prob(4)) + affected_mob << "\red You can feel something move...inside." + if(4) + if (prob(10)) + affected_mob << "\red Your skin feels very loose." + affected_mob.take_organ_damage(8) + if (prob(20)) + affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee...")) + if (prob(8)) + affected_mob << "\red You can feel... something...inside you." + if(5) + affected_mob <<"\red Your skin feels as if it's about to burst off..." + affected_mob.adjustToxLoss(10) + affected_mob.updatehealth() + if(prob(40)) //So everyone can feel like robot Seth Brundle + if(src.gibbed != 0) return 0 + var/turf/T = find_loc(affected_mob) + gibs(T) + gibbed = 1 + var/mob/living/carbon/human/H = affected_mob + if(istype(H) && !jobban_isbanned(affected_mob, "Cyborg")) + H.Robotize() + else + affected_mob.death(1) + diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 475c4139cf1..f1ee58534ec 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -1,172 +1,172 @@ -/datum/disease/transformation - - name = "Transformation" - max_stages = 5 - spread = "Acute" - spread_type = SPECIAL - cure = "A coder's love (theoretical)." - agent = "Shenanigans" - affected_species = list("Human", "Monkey", "Alien") - severity = "Major" - stage_prob = 10 - hidden = list(1, 1) - var/list/stage1 = list("You feel unremarkable.") - var/list/stage2 = list("You feel boring.") - var/list/stage3 = list("You feel utterly plain.") - var/list/stage4 = list("You feel white bread.") - var/list/stage5 = list("Oh the humanity!") - var/new_form = /mob/living/carbon/human - -/datum/disease/transformation/stage_act() - ..() - switch(stage) - if(1) - if (prob(10) && stage1) - affected_mob << pick(stage1) - if(2) - if (prob(10) && stage2) - affected_mob << pick(stage2) - if(3) - if (prob(20) && stage3) - affected_mob << pick(stage3) - if(4) - if (prob(20) && stage4) - affected_mob << pick(stage4) - if(5) - if(istype(affected_mob, /mob/living/carbon) && affected_mob.stat != DEAD) - if(stage5) - affected_mob << pick(stage5) - if(jobban_isbanned(affected_mob, new_form)) - affected_mob.death(1) - return - if(affected_mob.notransform) return - affected_mob.notransform = 1 - affected_mob.canmove = 0 - affected_mob.icon = null - affected_mob.overlays.Cut() - affected_mob.invisibility = 101 - for(var/obj/item/W in affected_mob) - if(istype(W, /obj/item/weapon/implant)) - qdel(W) - continue - W.layer = initial(W.layer) - W.loc = affected_mob.loc - W.dropped(affected_mob) - var/mob/living/new_mob = new new_form(affected_mob.loc) - if(istype(new_mob)) - new_mob.a_intent = "harm" - new_mob.universal_speak = 1 - if(affected_mob.mind) - affected_mob.mind.transfer_to(new_mob) - else - new_mob.key = affected_mob.key - qdel(affected_mob) - - -/datum/disease/transformation/robot - - name = "Robotic Transformation" - cure = "An injection of copper." - cure_id = list("copper") - cure_chance = 5 - agent = "R2D2 Nanomachines" - desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." - hidden = list(0, 0) - stage1 = list("") - stage2 = list("Your joints feel stiff.", "\red Beep...boop..") - stage3 = list("\red Your joints feel very stiff.", "Your skin feels loose.", "\red You can feel something move...inside.") - stage4 = list("\red Your skin feels very loose.", "\red You can feel... something...inside you.") - stage5 = list("\red Your skin feels as if it's about to burst off!") - new_form = /mob/living/silicon/robot - -/datum/disease/transformation/robot/stage_act() - ..() - switch(stage) - if(3) - if (prob(8)) - affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) - if (prob(4)) - affected_mob << "\red You feel a stabbing pain in your head." - affected_mob.Paralyse(2) - if(4) - if (prob(20)) - affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee...")) - - -/datum/disease/transformation/xeno - - name = "Xenomorph Transformation" - cure = "Spaceacillin & Glycerol" - cure_id = list("spaceacillin", "glycerol") - cure_chance = 5 - agent = "Rip-LEY Alien Microbes" - hidden = list(0, 0) - stage1 = list("") - stage2 = list("Your throat feels scratchy.", "\red Kill...") - stage3 = list("\red Your throat feels very scratchy.", "Your skin feels tight.", "\red You can feel something move...inside.") - stage4 = list("\red Your skin feels very tight.", "\red Your blood boils!", "\red You can feel... something...inside you.") - stage5 = list("\red Your skin feels as if it's about to burst off!") - new_form = /mob/living/carbon/alien/humanoid/hunter - -/datum/disease/transformation/xeno/stage_act() - ..() - switch(stage) - if(3) - if (prob(4)) - affected_mob << "\red You feel a stabbing pain in your head." - affected_mob.Paralyse(2) - if(4) - if (prob(20)) - affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!")) - - -/datum/disease/transformation/slime - name = "Advanced Mutation Transformation" - cure = "frost oil" - cure_id = list("frostoil") - cure_chance = 80 - agent = "Advanced Mutation Toxin" - desc = "This highly concentrated extract converts anything into more of itself." - hidden = list(0, 0) - stage1 = list("You don't feel very well.") - stage2 = list("You are turning a little green.") - stage3 = list("\red Your limbs are getting oozy.", "\red Your skin begins to peel away.") - stage4 = list("\red You are turning into a slime.") - stage5 = list("\red You have become a slime.") - new_form = /mob/living/carbon/slime - -/datum/disease/transformation/slime/stage_act() - ..() - switch(stage) - if(1) - if(ishuman(affected_mob) && affected_mob.dna && affected_mob.dna.mutantrace == "slime") - stage = 5 - if(3) - if(ishuman(affected_mob)) - var/mob/living/carbon/human/human = affected_mob - if(human.dna && !human.dna.mutantrace) - human.dna.mutantrace = "slime" - human.update_body() - - -/datum/disease/transformation/corgi - name = "The Barkening" - cure = "Death" - agent = "Fell Doge Majicks" - hidden = list(0, 0) - stage1 = list("BARK.") - stage2 = list("You feel the need to wear silly hats.") - stage3 = list("\red Must... eat... chocolate....", "\red YAP") - stage4 = list("\red Visions of washing machines assail your mind!") - stage5 = list("\red AUUUUUU!!!") - new_form = /mob/living/simple_animal/corgi - -/datum/disease/transformation/corgi/stage_act() - ..() - switch(stage) - if(3) - if (prob(8)) - affected_mob.say(pick("YAP", "Woof!")) - if(4) - if (prob(20)) - affected_mob.say(pick("Bark!", "AUUUUUU")) +/datum/disease/transformation + + name = "Transformation" + max_stages = 5 + spread = "Acute" + spread_type = SPECIAL + cure = "A coder's love (theoretical)." + agent = "Shenanigans" + affected_species = list("Human", "Monkey", "Alien") + severity = "Major" + stage_prob = 10 + hidden = list(1, 1) + var/list/stage1 = list("You feel unremarkable.") + var/list/stage2 = list("You feel boring.") + var/list/stage3 = list("You feel utterly plain.") + var/list/stage4 = list("You feel white bread.") + var/list/stage5 = list("Oh the humanity!") + var/new_form = /mob/living/carbon/human + +/datum/disease/transformation/stage_act() + ..() + switch(stage) + if(1) + if (prob(10) && stage1) + affected_mob << pick(stage1) + if(2) + if (prob(10) && stage2) + affected_mob << pick(stage2) + if(3) + if (prob(20) && stage3) + affected_mob << pick(stage3) + if(4) + if (prob(20) && stage4) + affected_mob << pick(stage4) + if(5) + if(istype(affected_mob, /mob/living/carbon) && affected_mob.stat != DEAD) + if(stage5) + affected_mob << pick(stage5) + if(jobban_isbanned(affected_mob, new_form)) + affected_mob.death(1) + return + if(affected_mob.notransform) return + affected_mob.notransform = 1 + affected_mob.canmove = 0 + affected_mob.icon = null + affected_mob.overlays.Cut() + affected_mob.invisibility = 101 + for(var/obj/item/W in affected_mob) + if(istype(W, /obj/item/weapon/implant)) + qdel(W) + continue + W.layer = initial(W.layer) + W.loc = affected_mob.loc + W.dropped(affected_mob) + var/mob/living/new_mob = new new_form(affected_mob.loc) + if(istype(new_mob)) + new_mob.a_intent = "harm" + new_mob.universal_speak = 1 + if(affected_mob.mind) + affected_mob.mind.transfer_to(new_mob) + else + new_mob.key = affected_mob.key + qdel(affected_mob) + + +/datum/disease/transformation/robot + + name = "Robotic Transformation" + cure = "An injection of copper." + cure_id = list("copper") + cure_chance = 5 + agent = "R2D2 Nanomachines" + desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." + hidden = list(0, 0) + stage1 = list("") + stage2 = list("Your joints feel stiff.", "\red Beep...boop..") + stage3 = list("\red Your joints feel very stiff.", "Your skin feels loose.", "\red You can feel something move...inside.") + stage4 = list("\red Your skin feels very loose.", "\red You can feel... something...inside you.") + stage5 = list("\red Your skin feels as if it's about to burst off!") + new_form = /mob/living/silicon/robot + +/datum/disease/transformation/robot/stage_act() + ..() + switch(stage) + if(3) + if (prob(8)) + affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) + if (prob(4)) + affected_mob << "\red You feel a stabbing pain in your head." + affected_mob.Paralyse(2) + if(4) + if (prob(20)) + affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee...")) + + +/datum/disease/transformation/xeno + + name = "Xenomorph Transformation" + cure = "Spaceacillin & Glycerol" + cure_id = list("spaceacillin", "glycerol") + cure_chance = 5 + agent = "Rip-LEY Alien Microbes" + hidden = list(0, 0) + stage1 = list("") + stage2 = list("Your throat feels scratchy.", "\red Kill...") + stage3 = list("\red Your throat feels very scratchy.", "Your skin feels tight.", "\red You can feel something move...inside.") + stage4 = list("\red Your skin feels very tight.", "\red Your blood boils!", "\red You can feel... something...inside you.") + stage5 = list("\red Your skin feels as if it's about to burst off!") + new_form = /mob/living/carbon/alien/humanoid/hunter + +/datum/disease/transformation/xeno/stage_act() + ..() + switch(stage) + if(3) + if (prob(4)) + affected_mob << "\red You feel a stabbing pain in your head." + affected_mob.Paralyse(2) + if(4) + if (prob(20)) + affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!")) + + +/datum/disease/transformation/slime + name = "Advanced Mutation Transformation" + cure = "frost oil" + cure_id = list("frostoil") + cure_chance = 80 + agent = "Advanced Mutation Toxin" + desc = "This highly concentrated extract converts anything into more of itself." + hidden = list(0, 0) + stage1 = list("You don't feel very well.") + stage2 = list("You are turning a little green.") + stage3 = list("\red Your limbs are getting oozy.", "\red Your skin begins to peel away.") + stage4 = list("\red You are turning into a slime.") + stage5 = list("\red You have become a slime.") + new_form = /mob/living/carbon/slime + +/datum/disease/transformation/slime/stage_act() + ..() + switch(stage) + if(1) + if(ishuman(affected_mob) && affected_mob.dna && affected_mob.dna.mutantrace == "slime") + stage = 5 + if(3) + if(ishuman(affected_mob)) + var/mob/living/carbon/human/human = affected_mob + if(human.dna && !human.dna.mutantrace) + human.dna.mutantrace = "slime" + human.update_body() + + +/datum/disease/transformation/corgi + name = "The Barkening" + cure = "Death" + agent = "Fell Doge Majicks" + hidden = list(0, 0) + stage1 = list("BARK.") + stage2 = list("You feel the need to wear silly hats.") + stage3 = list("\red Must... eat... chocolate....", "\red YAP") + stage4 = list("\red Visions of washing machines assail your mind!") + stage5 = list("\red AUUUUUU!!!") + new_form = /mob/living/simple_animal/corgi + +/datum/disease/transformation/corgi/stage_act() + ..() + switch(stage) + if(3) + if (prob(8)) + affected_mob.say(pick("YAP", "Woof!")) + if(4) + if (prob(20)) + affected_mob.say(pick("Bark!", "AUUUUUU")) diff --git a/code/datums/diseases/xeno_transformation.dm b/code/datums/diseases/xeno_transformation.dm index e023c4e0d4e..7b19b9a0927 100644 --- a/code/datums/diseases/xeno_transformation.dm +++ b/code/datums/diseases/xeno_transformation.dm @@ -1,60 +1,60 @@ -//Xenomicrobes - -/datum/disease/xeno_transformation - name = "Xenomorph Transformation" - max_stages = 5 - spread = "Syringe" - spread_type = SPECIAL - cure = "Spaceacillin & Glycerol" - cure_id = list("spaceacillin", "glycerol") - cure_chance = 5 - agent = "Rip-LEY Alien Microbes" - affected_species = list("Human") - var/gibbed = 0 - -/datum/disease/xeno_transformation/stage_act() - ..() - switch(stage) - if(2) - if (prob(8)) - affected_mob << "Your throat feels scratchy." - affected_mob.take_organ_damage(1) - if (prob(9)) - affected_mob << "\red Kill..." - if (prob(9)) - affected_mob << "\red Kill..." - if(3) - if (prob(8)) - affected_mob << "\red Your throat feels very scratchy." - affected_mob.take_organ_damage(1) - /* - if (prob(8)) - affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) - */ - if (prob(10)) - affected_mob << "Your skin feels tight." - affected_mob.take_organ_damage(5) - if (prob(4)) - affected_mob << "\red You feel a stabbing pain in your head." - affected_mob.Paralyse(2) - if (prob(4)) - affected_mob << "\red You can feel something move...inside." - if(4) - if (prob(10)) - affected_mob << pick("\red Your skin feels very tight.", "\red Your blood boils!") - affected_mob.take_organ_damage(8) - if (prob(20)) - affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!")) - if (prob(8)) - affected_mob << "\red You can feel... something...inside you." - if(5) - affected_mob <<"\red Your skin feels impossibly calloused..." - affected_mob.adjustToxLoss(10) - affected_mob.updatehealth() - if(prob(40)) - if(gibbed != 0) return 0 - var/turf/T = find_loc(affected_mob) - gibs(T) - gibbed = 1 - affected_mob:Alienize() - +//Xenomicrobes + +/datum/disease/xeno_transformation + name = "Xenomorph Transformation" + max_stages = 5 + spread = "Syringe" + spread_type = SPECIAL + cure = "Spaceacillin & Glycerol" + cure_id = list("spaceacillin", "glycerol") + cure_chance = 5 + agent = "Rip-LEY Alien Microbes" + affected_species = list("Human") + var/gibbed = 0 + +/datum/disease/xeno_transformation/stage_act() + ..() + switch(stage) + if(2) + if (prob(8)) + affected_mob << "Your throat feels scratchy." + affected_mob.take_organ_damage(1) + if (prob(9)) + affected_mob << "\red Kill..." + if (prob(9)) + affected_mob << "\red Kill..." + if(3) + if (prob(8)) + affected_mob << "\red Your throat feels very scratchy." + affected_mob.take_organ_damage(1) + /* + if (prob(8)) + affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) + */ + if (prob(10)) + affected_mob << "Your skin feels tight." + affected_mob.take_organ_damage(5) + if (prob(4)) + affected_mob << "\red You feel a stabbing pain in your head." + affected_mob.Paralyse(2) + if (prob(4)) + affected_mob << "\red You can feel something move...inside." + if(4) + if (prob(10)) + affected_mob << pick("\red Your skin feels very tight.", "\red Your blood boils!") + affected_mob.take_organ_damage(8) + if (prob(20)) + affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!")) + if (prob(8)) + affected_mob << "\red You can feel... something...inside you." + if(5) + affected_mob <<"\red Your skin feels impossibly calloused..." + affected_mob.adjustToxLoss(10) + affected_mob.updatehealth() + if(prob(40)) + if(gibbed != 0) return 0 + var/turf/T = find_loc(affected_mob) + gibs(T) + gibbed = 1 + affected_mob:Alienize() + diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 370d9303512..64005a7f92e 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -1,88 +1,88 @@ -/obj/effect/proc_holder/spell/targeted/charge - name = "Charge" - desc = "This spell can be used to charge up spent magical artifacts, among other things." - - school = "transmutation" - charge_max = 600 - clothes_req = 0 - invocation = "DIRI CEL" - invocation_type = "whisper" - range = -1 - cooldown_min = 400 //50 deciseconds reduction per rank - include_user = 1 - - -/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets) - for(var/mob/living/user in targets) - var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand()) - var/charged_item = null - var/burnt_out = 0 - for(var/obj/item in hand_items) - if(istype(item, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = item - if(G.affecting) - var/mob/M = G.affecting - if(M.mob_spell_list.len != 0 || (M.mind && M.mind.spell_list.len != 0)) - for(var/obj/effect/proc_holder/spell/S in M.mob_spell_list) - S.charge_counter = S.charge_max - if(M.mind) - for(var/obj/effect/proc_holder/spell/S in M.mind.spell_list) - S.charge_counter = S.charge_max - M <<"you feel raw magic flowing through you, it feels good!" - else - M <<"you feel very strange for a moment, but then it passes." - burnt_out = 1 - charged_item = M - break - else if(istype(item, /obj/item/weapon/spellbook/oneuse)) - var/obj/item/weapon/spellbook/oneuse/I = item - if(prob(80)) - user.visible_message("[I] catches fire!") - qdel(I) - else - I.used = 0 - charged_item = I - break - else if(istype(item, /obj/item/weapon/gun/magic)) - var/obj/item/weapon/gun/magic/I = item - if(prob(80)) - I.max_charges-- - if(I.max_charges <= 0) - I.max_charges = 0 - burnt_out = 1 - I.charges = I.max_charges - if(istype(item,/obj/item/weapon/gun/magic/wand) && I.max_charges != 0) - var/obj/item/weapon/gun/magic/W = item - W.icon_state = initial(W.icon_state) - charged_item = I - break - else if(istype(item, /obj/item/weapon/stock_parts/cell/)) - var/obj/item/weapon/stock_parts/cell/C = item - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 - C.charge = C.maxcharge - charged_item = C - break - else if(item.contents) - var/obj/I = null - for(I in item.contents) - if(istype(I, /obj/item/weapon/stock_parts/cell/)) - var/obj/item/weapon/stock_parts/cell/C = I - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 - C.charge = C.maxcharge - item.update_icon() - charged_item = item - break - if(!charged_item) - user << "you feel magical power surging to your hands, but the feeling rapidly fades..." - else if(burnt_out) - user << "[charged_item] doesn't seem to be reacting to the spell..." - else - user << "[charged_item] suddenly feels very warm!" +/obj/effect/proc_holder/spell/targeted/charge + name = "Charge" + desc = "This spell can be used to charge up spent magical artifacts, among other things." + + school = "transmutation" + charge_max = 600 + clothes_req = 0 + invocation = "DIRI CEL" + invocation_type = "whisper" + range = -1 + cooldown_min = 400 //50 deciseconds reduction per rank + include_user = 1 + + +/obj/effect/proc_holder/spell/targeted/charge/cast(list/targets) + for(var/mob/living/user in targets) + var/list/hand_items = list(user.get_active_hand(),user.get_inactive_hand()) + var/charged_item = null + var/burnt_out = 0 + for(var/obj/item in hand_items) + if(istype(item, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = item + if(G.affecting) + var/mob/M = G.affecting + if(M.mob_spell_list.len != 0 || (M.mind && M.mind.spell_list.len != 0)) + for(var/obj/effect/proc_holder/spell/S in M.mob_spell_list) + S.charge_counter = S.charge_max + if(M.mind) + for(var/obj/effect/proc_holder/spell/S in M.mind.spell_list) + S.charge_counter = S.charge_max + M <<"you feel raw magic flowing through you, it feels good!" + else + M <<"you feel very strange for a moment, but then it passes." + burnt_out = 1 + charged_item = M + break + else if(istype(item, /obj/item/weapon/spellbook/oneuse)) + var/obj/item/weapon/spellbook/oneuse/I = item + if(prob(80)) + user.visible_message("[I] catches fire!") + qdel(I) + else + I.used = 0 + charged_item = I + break + else if(istype(item, /obj/item/weapon/gun/magic)) + var/obj/item/weapon/gun/magic/I = item + if(prob(80)) + I.max_charges-- + if(I.max_charges <= 0) + I.max_charges = 0 + burnt_out = 1 + I.charges = I.max_charges + if(istype(item,/obj/item/weapon/gun/magic/wand) && I.max_charges != 0) + var/obj/item/weapon/gun/magic/W = item + W.icon_state = initial(W.icon_state) + charged_item = I + break + else if(istype(item, /obj/item/weapon/stock_parts/cell/)) + var/obj/item/weapon/stock_parts/cell/C = item + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + charged_item = C + break + else if(item.contents) + var/obj/I = null + for(I in item.contents) + if(istype(I, /obj/item/weapon/stock_parts/cell/)) + var/obj/item/weapon/stock_parts/cell/C = I + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 + C.charge = C.maxcharge + item.update_icon() + charged_item = item + break + if(!charged_item) + user << "you feel magical power surging to your hands, but the feeling rapidly fades..." + else if(burnt_out) + user << "[charged_item] doesn't seem to be reacting to the spell..." + else + user << "[charged_item] suddenly feels very warm!" diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index c9cc3b037c0..1f2c79b646a 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -1,53 +1,53 @@ -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall - name = "Invisible wall" - desc = "The mime's performance transmutates into physical reality." - school = "mime" - panel = "Mime" - summon_type = list(/obj/effect/forcefield/mime) - invocation_type = "emote" - invocation_emote_self = "You form a wall in front of yourself." - summon_lifespan = 300 - charge_max = 300 - clothes_req = 0 - range = 0 - cast_sound = null - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() - if(usr) - invocation = "[usr.real_name] looks as if a wall is in front of them." - else - invocation_type ="none" - ..() - - -/obj/effect/proc_holder/spell/targeted/mime/speak - name = "Speech" - desc = "Make or break a vow of silence." - school = "mime" - panel = "Mime" - clothes_req = 0 - human_req = 1 - charge_max = 3000 - range = -1 - include_user = 1 - -/obj/effect/proc_holder/spell/targeted/mime/speak/Click() - if(!usr) - return - if(!ishuman(usr)) - return - var/mob/living/carbon/human/H = usr - if(H.mind.miming) - still_recharging_msg = "You can't break your vow of silence that fast!" - else - still_recharging_msg = "You'll have to wait before you can give your vow of silence again." - ..() - -/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets) - for(var/mob/living/carbon/human/H in targets) - H.mind.miming=!H.mind.miming - if(H.mind.miming) - H << "You make a vow of silence." - else +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall + name = "Invisible wall" + desc = "The mime's performance transmutates into physical reality." + school = "mime" + panel = "Mime" + summon_type = list(/obj/effect/forcefield/mime) + invocation_type = "emote" + invocation_emote_self = "You form a wall in front of yourself." + summon_lifespan = 300 + charge_max = 300 + clothes_req = 0 + range = 0 + cast_sound = null + + +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() + if(usr) + invocation = "[usr.real_name] looks as if a wall is in front of them." + else + invocation_type ="none" + ..() + + +/obj/effect/proc_holder/spell/targeted/mime/speak + name = "Speech" + desc = "Make or break a vow of silence." + school = "mime" + panel = "Mime" + clothes_req = 0 + human_req = 1 + charge_max = 3000 + range = -1 + include_user = 1 + +/obj/effect/proc_holder/spell/targeted/mime/speak/Click() + if(!usr) + return + if(!ishuman(usr)) + return + var/mob/living/carbon/human/H = usr + if(H.mind.miming) + still_recharging_msg = "You can't break your vow of silence that fast!" + else + still_recharging_msg = "You'll have to wait before you can give your vow of silence again." + ..() + +/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets) + for(var/mob/living/carbon/human/H in targets) + H.mind.miming=!H.mind.miming + if(H.mind.miming) + H << "You make a vow of silence." + else H << "You break your vow of silence." \ No newline at end of file diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 48e76cbcd05..fc26183f05e 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1102,4 +1102,4 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/under/suit_jacket/checkered, /obj/item/clothing/under/suit_jacket/tan) cost = 30 //Lots of very expensive items. You gotta pay up to look good! - containername = "formal-wear crate" + containername = "formal-wear crate" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index b02ddd2b409..05dde50c127 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1,493 +1,493 @@ -var/list/uplink_items = list() - -/proc/get_uplink_items() - // If not already initialized.. - if(!uplink_items.len) - - // Fill in the list and order it like this: - // A keyed list, acting as categories, which are lists to the datum. - - var/list/last = list() - for(var/item in typesof(/datum/uplink_item)) - - var/datum/uplink_item/I = new item() - if(!I.item) - continue - if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes)) - continue - if(I.excludefrom.len && ticker && (ticker.mode.type in I.excludefrom)) - continue - if(I.last) - last += I - continue - - if(!uplink_items[I.category]) - uplink_items[I.category] = list() - - uplink_items[I.category] += I - - for(var/datum/uplink_item/I in last) - - if(!uplink_items[I.category]) - uplink_items[I.category] = list() - - uplink_items[I.category] += I - - return uplink_items - -// You can change the order of the list by putting datums before/after one another OR -// you can use the last variable to make sure it appears last, well have the category appear last. - -/datum/uplink_item - var/name = "item name" - var/category = "item category" - var/desc = "item description" - var/item = null - var/cost = 0 - var/last = 0 // Appear last - var/list/gamemodes = list() // Empty list means it is in all the gamemodes. Otherwise place the gamemode name here. - var/list/excludefrom = list()//Empty list does nothing. Place the name of gamemode you don't want this item to be available in here. This is so you dont have to list EVERY mode to exclude something. - -/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U) - if(item) - U.uses -= max(cost, 0) - U.used_TC += cost - feedback_add_details("traitor_uplink_items_bought", "[item]") - return new item(loc) - -/datum/uplink_item/proc/buy(var/obj/item/device/uplink/U, var/mob/user) - - ..() - if(!istype(U)) - return 0 - - if (!user || user.stat || user.restrained()) - return 0 - - if (!( istype(user, /mob/living/carbon/human))) - return 0 - - // If the uplink's holder is in the user's contents - if ((U.loc in user.contents || (in_range(U.loc, user) && istype(U.loc.loc, /turf)))) - user.set_machine(U) - if(cost > U.uses) - return 0 - - var/obj/I = spawn_item(get_turf(user), U) - - if(istype(I, /obj/item) && ishuman(user)) - var/mob/living/carbon/human/A = user - A.put_in_any_hand_if_possible(I) - - if(istype(I,/obj/item/weapon/storage/box/) && I.contents.len>0) - for(var/atom/o in I) - U.purchase_log += "\icon[o]" - else - U.purchase_log += "\icon[I]" - - U.interact(user) - return 1 - return 0 - -/* -// -// UPLINK ITEMS -// -*/ - -// DANGEROUS WEAPONS - -/datum/uplink_item/dangerous - category = "Conspicuous and Dangerous Weapons" - -/datum/uplink_item/dangerous/revolver - name = "Full Revolver" - desc = "The syndicate revolver is a traditional handgun that fires .357 Magnum cartridges and has 7 chambers." - item = /obj/item/weapon/gun/projectile/revolver - cost = 6 - -/datum/uplink_item/dangerous/smg - name = "C-20r Submachine Gun" - desc = "A fully-loaded Scarborough Arms-developed submachine gun that fires 12mm automatic rounds with a 20-round magazine." - item = /obj/item/weapon/gun/projectile/automatic/c20r - cost = 7 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/machinegun - name = "L6 Squad Automatic Weapon" - desc = "A traditionally constructed machine gun made by AA-2531. This deadly weapon has a massive 50-round magazine of 7.62×51mm ammunition." - item = /obj/item/weapon/gun/projectile/automatic/l6_saw - cost = 20 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/crossbow - name = "Miniature Energy Crossbow" - desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It fires bolts tipped with toxin, a poison collected from an organism. \ - Its bolts stun enemies for short periods, and replenish automatically." - item = /obj/item/weapon/gun/energy/crossbow - cost = 5 - excludefrom = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/flamethrower - name = "Flamethrower" - desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen stations. Make a statement by roasting the filth in their own greed. Use with caution." - item = /obj/item/weapon/flamethrower/full/tank - cost = 6 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/sword - name = "Energy Sword" - desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be pocketed when inactive. Activating it produces a loud, distinctive noise." - item = /obj/item/weapon/melee/energy/sword - cost = 4 - -/datum/uplink_item/dangerous/emp - name = "EMP Kit" - desc = "A box that contains two EMP grenades, an EMP implant and a short ranged recharging device disguised as a flashlight. Useful to disrupt communication and silicon lifeforms." - item = /obj/item/weapon/storage/box/syndie_kit/emp - cost = 3 - -/datum/uplink_item/dangerous/syndicate_minibomb - name = "Syndicate Minibomb" - desc = "The Minibomb is a grenade with a five-second fuse." - item = /obj/item/weapon/grenade/syndieminibomb - cost = 3 - -/datum/uplink_item/dangerous/viscerators - name = "Viscerator Delivery Grenade" - desc = "A unique grenade that deploys a swarm of viscerators upon activation, which will chase down and shred any non-operatives in the area." - item = /obj/item/weapon/grenade/spawnergrenade/manhacks - cost = 4 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/bioterror - name = "Biohazardous Chemical Sprayer" - desc = "A chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger Cooperative, the deadly blend it comes stocked with will disorient, damage, and disable your foes... \ - Use with extreme caution, to prevent exposure to yourself and your fellow operatives." - item = /obj/item/weapon/reagent_containers/spray/chemsprayer/bioterror - cost = 10 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/gygax - name = "Gygax Exosuit" - desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent for hit-and-run style attacks. \ - This model lacks a method of space propulsion, and therefore it is advised to repair the mothership's teleporter if you wish to make use of it." - item = /obj/mecha/combat/gygax/dark/loaded - cost = 45 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/dangerous/mauler - name = "Mauler Exosuit" - desc = "A massive and incredibly deadly Syndicate exosuit. Features long-range targetting, thrust vectoring, and deployable smoke." - item = /obj/mecha/combat/marauder/mauler/loaded - cost = 70 - gamemodes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/syndieborg - name = "Syndicate Cyborg" - desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel." - item = /obj/item/weapon/antag_spawner/borg_tele - cost = 25 - gamemodes = list(/datum/game_mode/nuclear) -//for refunding the syndieborg teleporter -/datum/uplink_item/dangerous/syndieborg/spawn_item() - var/obj/item/weapon/antag_spawner/borg_tele/T = ..() - if(istype(T)) - T.TC_cost = cost - -// AMMUNITION - -/datum/uplink_item/ammo - category = "Ammunition" - -/datum/uplink_item/ammo/revolver - name = "Ammo-357" - desc = "A box that contains seven additional rounds for the revolver, made using an automatic lathe." - item = /obj/item/ammo_box/a357 - cost = 2 - -/datum/uplink_item/ammo/smg - name = "Ammo-12mm" - desc = "A 20-round 12mm magazine for use in the C-20r submachine gun." - item = /obj/item/ammo_box/magazine/m12mm - cost = 1 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/pistol - name = "Ammo-10mm" - desc = "An additional 8-round 10mm magazine for use in the Stetchkin pistol." - item = /obj/item/ammo_box/magazine/m10mm - cost = 1 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/ammo/machinegun - name = "Ammo-7.62×51mm" - desc = "A 50-round magazine of 7.62×51mm ammunition for use in the L6 SAW machinegun. By the time you need to use this, you'll already be on a pile of corpses." - item = /obj/item/ammo_box/magazine/m762 - cost = 6 - gamemodes = list(/datum/game_mode/nuclear) - -// STEALTHY WEAPONS - -/datum/uplink_item/stealthy_weapons - category = "Stealthy and Inconspicuous Weapons" - -/datum/uplink_item/stealthy_weapons/para_pen - name = "Paralysis Pen" - desc = "A syringe disguised as a functional pen, filled with a neuromuscular-blocking drug that renders a target immobile on injection and makes them seem dead to observers. \ - Side effects of the drug include noticeable drooling. The pen holds one dose of paralyzing agent, and cannot be refilled." - item = /obj/item/weapon/pen/paralysis - cost = 3 - excludefrom = list(/datum/game_mode/nuclear) - -/datum/uplink_item/stealthy_weapons/soap - name = "Syndicate Soap" - desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people." - item = /obj/item/weapon/soap/syndie - cost = 1 - -/datum/uplink_item/stealthy_weapons/detomatix - name = "Detomatix PDA Cartridge" - desc = "When inserted into a personal digital assistant, this cartridge gives you five opportunities to detonate PDAs of crewmembers who have their message feature enabled. \ - The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer. It has a chance to detonate your PDA." - item = /obj/item/weapon/cartridge/syndicate - cost = 3 - -/datum/uplink_item/stealthy_weapons/silencer - name = "Stetchkin Silencer" - desc = "Fitted for use on the Stetchkin pistol, this silencer will make its shots quieter when equipped onto it." - item = /obj/item/weapon/silencer - cost = 2 - gamemodes = list(/datum/game_mode/nuclear) - -// STEALTHY TOOLS - -/datum/uplink_item/stealthy_tools - category = "Stealth and Camouflage Items" - -/datum/uplink_item/stealthy_tools/chameleon_jumpsuit - name = "Chameleon Jumpsuit" - desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers." - item = /obj/item/clothing/under/chameleon - cost = 3 - -/datum/uplink_item/stealthy_tools/chameleon_stamp - name = "Chameleon Stamp" - desc = "A stamp that can be activated to imitate an official Nanotrasen Stamp™. The disguised stamp will work exactly like the real stamp and will allow you to forge false documents to gain access or equipment; \ - it can also be used in a washing machine to forge clothing." - item = /obj/item/weapon/stamp/chameleon - cost = 1 - -/datum/uplink_item/stealthy_tools/syndigolashes - name = "No-Slip Brown Shoes" - desc = "These allow you to run on wet floors. They do not work on lubricated surfaces." - item = /obj/item/clothing/shoes/syndigaloshes - cost = 2 - -/datum/uplink_item/stealthy_tools/agent_card - name = "Agent Identification card" - desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another." - item = /obj/item/weapon/card/id/syndicate - cost = 2 - -/datum/uplink_item/stealthy_tools/voice_changer - name = "Voice Changer" - item = /obj/item/clothing/mask/gas/voice - desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognizable." - cost = 4 - -/datum/uplink_item/stealthy_tools/chameleon_proj - name = "Chameleon-Projector" - desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. The disguised user cannot run and rojectiles pass over them." - item = /obj/item/device/chameleon - cost = 4 - -/datum/uplink_item/stealthy_tools/camera_bug - name = "Camera Bug" - desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions." - item = /obj/item/device/camera_bug - cost = 2 - -// DEVICE AND TOOLS - -/datum/uplink_item/device_tools - category = "Devices and Tools" - -/datum/uplink_item/device_tools/emag - name = "Cryptographic Sequencer" - desc = "The emag is a small card that unlocks hidden functions in electronic devices, subverts intended functions and characteristically breaks security mechanisms." - item = /obj/item/weapon/card/emag - cost = 3 - -/datum/uplink_item/device_tools/toolbox - name = "Full Syndicate Toolbox" - desc = "The syndicate toolbox is a suspicious black and red. Aside from tools, it comes with cable and a multitool. Insulated gloves are not included." - item = /obj/item/weapon/storage/toolbox/syndicate - cost = 1 - -/datum/uplink_item/device_tools/medkit - name = "Syndicate Medical Supply Kit" - desc = "The syndicate medkit is a suspicious black and red. Included is a combat stimulant injector for rapid healing, a medical hud for quick identification of injured comrades, \ - and other medical supplies helpful for a medical field operative.." - item = /obj/item/weapon/storage/firstaid/tactical - cost = 5 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/device_tools/space_suit - name = "Syndicate Space Suit" - desc = "The red syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings." - item = /obj/item/weapon/storage/box/syndie_kit/space - cost = 3 - -/datum/uplink_item/device_tools/thermal - name = "Thermal Imaging Glasses" - desc = "These glasses are thermals disguised as engineers' optical meson scanners. \ - They allow you to see organisms through walls by capturing the upper portion of the infrared light spectrum, emitted as heat and light by objects. \ - Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." - item = /obj/item/clothing/glasses/thermal/syndi - cost = 3 - -/datum/uplink_item/device_tools/binary - name = "Binary Translator Key" - desc = "A key, that when inserted into a radio headset, allows you to listen to and talk with artificial intelligences and cybernetic organisms in binary. " - item = /obj/item/device/encryptionkey/binary - cost = 3 - -/datum/uplink_item/device_tools/ai_detector - name = "Artificial Intelligence Detector" // changed name in case newfriends thought it detected disguised ai's - desc = "A functional multitool that turns red when it detects an artificial intelligence watching it or its holder. Knowing when an artificial intelligence is watching you is useful for knowing when to maintain cover." - item = /obj/item/device/multitool/ai_detect - cost = 1 - -/datum/uplink_item/device_tools/hacked_module - name = "Hacked AI Law Upload Module" - desc = "When used with an upload console, this module allows you to upload priority laws to an artificial intelligence. Be careful with their wording, as artificial intelligences may look for loopholes to exploit." - item = /obj/item/weapon/aiModule/syndicate - cost = 7 - -/datum/uplink_item/device_tools/plastic_explosives - name = "Composition C-4" - desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, attach it to organisms to destroy them, or connect a signaler to its wiring to make it remotely detonable. \ - It has a modifiable timer with a minimum setting of 10 seconds." - item = /obj/item/weapon/plastique - cost = 2 - -/datum/uplink_item/device_tools/powersink - name = "Power sink" - desc = "When screwed to wiring attached to an electric grid, then activated, this large device places excessive load on the grid, causing a stationwide blackout. The sink cannot be carried because of its excessive size. \ - Ordering this sends you a small beacon that will teleport the power sink to your location on activation." - item = /obj/item/device/powersink - cost = 5 - -/datum/uplink_item/device_tools/singularity_beacon - name = "Singularity Beacon" - desc = "When screwed to wiring attached to an electric grid, then activated, this large device pulls the singularity towards it. \ - Does not work when the singularity is still in containment. A singularity beacon can cause catastrophic damage to a space station, \ - leading to an emergency evacuation. Because of its size, it cannot be carried. Ordering this sends you a small beacon that will teleport the larger beacon to your location on activation." - item = /obj/item/device/sbeacondrop - cost = 7 - -/datum/uplink_item/device_tools/syndicate_bomb - name = "Syndicate Bomb" - desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ - You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." - item = /obj/item/device/sbeacondrop/bomb - cost = 5 - excludefrom = list(/datum/game_mode/traitor/double_agents) - -/datum/uplink_item/device_tools/syndicate_detonator - name = "Syndicate Detonator" - desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \ - Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator." - item = /obj/item/device/syndicatedetonator - cost = 1 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/device_tools/teleporter - name = "Teleporter Circuit Board" - desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur." - item = /obj/item/weapon/circuitboard/teleporter - cost = 20 - gamemodes = list(/datum/game_mode/nuclear) - -/datum/uplink_item/device_tools/shield - name = "Energy Shield" - desc = "An incredibly useful personal shield projector, capable of reflecting energy projectiles and defending against other attacks." - item = /obj/item/weapon/shield/energy - cost = 8 - gamemodes = list(/datum/game_mode/nuclear) - - -// IMPLANTS - -/datum/uplink_item/implants - category = "Implants" - -/datum/uplink_item/implants/freedom - name = "Freedom Implant" - desc = "An implant injected into the body and later activated using a bodily gesture to attempt to slip restraints." - item = /obj/item/weapon/storage/box/syndie_kit/imp_freedom - cost = 3 - -/datum/uplink_item/implants/uplink - name = "Uplink Implant" - desc = "An implant injected into the body, and later activated using a bodily gesture to open an uplink with 5 telecrystals. \ - The ability for an agent to open an uplink after their posessions have been stripped from them makes this implant excellent for escaping confinement." - item = /obj/item/weapon/storage/box/syndie_kit/imp_uplink - cost = 10 - -/datum/uplink_item/implants/adrenal - name = "Adrenal Implant" - desc = "An implant injected into the body, and later activated using a bodily gesture to inject a chemical cocktail, which has a mild healing effect along with removing all stuns and increasing his speed." - item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal - cost = 4 - -// POINTLESS BADASSERY - -/datum/uplink_item/badass - category = "(Pointless) Badassery" - -/datum/uplink_item/badass/bundle - name = "Syndicate Bundle" - desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 10 telecrystals, but you do not know which specialisation you will receive." - item = /obj/item/weapon/storage/box/syndicate - cost = 10 - excludefrom = list(/datum/game_mode/nuclear) - -/datum/uplink_item/badass/syndiecards - name = "Syndicate Playing Cards" - desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them slightly more robust than a normal deck of cards. \ - You can also play card games with them." - item = /obj/item/toy/cards/deck/syndicate - cost = 1 - excludefrom = list(/datum/game_mode/nuclear) - -/datum/uplink_item/badass/balloon - name = "For showing that you are The Boss" - desc = "A useless red balloon with the syndicate logo on it, which can blow the deepest of covers." - item = /obj/item/toy/syndicateballoon - cost = 10 - -/datum/uplink_item/badass/random - name = "Random Item" - desc = "Picking this choice will send you a random item from the list. Useful for when you cannot think of a strategy to finish your objectives with." - item = /obj/item/weapon/storage/box/syndicate - cost = 0 - -/datum/uplink_item/badass/random/spawn_item(var/turf/loc, var/obj/item/device/uplink/U) - - var/list/buyable_items = get_uplink_items() - var/list/possible_items = list() - - for(var/category in buyable_items) - for(var/datum/uplink_item/I in buyable_items[category]) - if(I == src) - continue - if(I.cost > U.uses) - continue - possible_items += I - - if(possible_items.len) - var/datum/uplink_item/I = pick(possible_items) - U.uses -= max(0, I.cost) - feedback_add_details("traitor_uplink_items_bought","RN") - return new I.item(loc) +var/list/uplink_items = list() + +/proc/get_uplink_items() + // If not already initialized.. + if(!uplink_items.len) + + // Fill in the list and order it like this: + // A keyed list, acting as categories, which are lists to the datum. + + var/list/last = list() + for(var/item in typesof(/datum/uplink_item)) + + var/datum/uplink_item/I = new item() + if(!I.item) + continue + if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes)) + continue + if(I.excludefrom.len && ticker && (ticker.mode.type in I.excludefrom)) + continue + if(I.last) + last += I + continue + + if(!uplink_items[I.category]) + uplink_items[I.category] = list() + + uplink_items[I.category] += I + + for(var/datum/uplink_item/I in last) + + if(!uplink_items[I.category]) + uplink_items[I.category] = list() + + uplink_items[I.category] += I + + return uplink_items + +// You can change the order of the list by putting datums before/after one another OR +// you can use the last variable to make sure it appears last, well have the category appear last. + +/datum/uplink_item + var/name = "item name" + var/category = "item category" + var/desc = "item description" + var/item = null + var/cost = 0 + var/last = 0 // Appear last + var/list/gamemodes = list() // Empty list means it is in all the gamemodes. Otherwise place the gamemode name here. + var/list/excludefrom = list()//Empty list does nothing. Place the name of gamemode you don't want this item to be available in here. This is so you dont have to list EVERY mode to exclude something. + +/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U) + if(item) + U.uses -= max(cost, 0) + U.used_TC += cost + feedback_add_details("traitor_uplink_items_bought", "[item]") + return new item(loc) + +/datum/uplink_item/proc/buy(var/obj/item/device/uplink/U, var/mob/user) + + ..() + if(!istype(U)) + return 0 + + if (!user || user.stat || user.restrained()) + return 0 + + if (!( istype(user, /mob/living/carbon/human))) + return 0 + + // If the uplink's holder is in the user's contents + if ((U.loc in user.contents || (in_range(U.loc, user) && istype(U.loc.loc, /turf)))) + user.set_machine(U) + if(cost > U.uses) + return 0 + + var/obj/I = spawn_item(get_turf(user), U) + + if(istype(I, /obj/item) && ishuman(user)) + var/mob/living/carbon/human/A = user + A.put_in_any_hand_if_possible(I) + + if(istype(I,/obj/item/weapon/storage/box/) && I.contents.len>0) + for(var/atom/o in I) + U.purchase_log += "\icon[o]" + else + U.purchase_log += "\icon[I]" + + U.interact(user) + return 1 + return 0 + +/* +// +// UPLINK ITEMS +// +*/ + +// DANGEROUS WEAPONS + +/datum/uplink_item/dangerous + category = "Conspicuous and Dangerous Weapons" + +/datum/uplink_item/dangerous/revolver + name = "Full Revolver" + desc = "The syndicate revolver is a traditional handgun that fires .357 Magnum cartridges and has 7 chambers." + item = /obj/item/weapon/gun/projectile/revolver + cost = 6 + +/datum/uplink_item/dangerous/smg + name = "C-20r Submachine Gun" + desc = "A fully-loaded Scarborough Arms-developed submachine gun that fires 12mm automatic rounds with a 20-round magazine." + item = /obj/item/weapon/gun/projectile/automatic/c20r + cost = 7 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/machinegun + name = "L6 Squad Automatic Weapon" + desc = "A traditionally constructed machine gun made by AA-2531. This deadly weapon has a massive 50-round magazine of 7.62×51mm ammunition." + item = /obj/item/weapon/gun/projectile/automatic/l6_saw + cost = 20 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/crossbow + name = "Miniature Energy Crossbow" + desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It fires bolts tipped with toxin, a poison collected from an organism. \ + Its bolts stun enemies for short periods, and replenish automatically." + item = /obj/item/weapon/gun/energy/crossbow + cost = 5 + excludefrom = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/flamethrower + name = "Flamethrower" + desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen stations. Make a statement by roasting the filth in their own greed. Use with caution." + item = /obj/item/weapon/flamethrower/full/tank + cost = 6 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/sword + name = "Energy Sword" + desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be pocketed when inactive. Activating it produces a loud, distinctive noise." + item = /obj/item/weapon/melee/energy/sword + cost = 4 + +/datum/uplink_item/dangerous/emp + name = "EMP Kit" + desc = "A box that contains two EMP grenades, an EMP implant and a short ranged recharging device disguised as a flashlight. Useful to disrupt communication and silicon lifeforms." + item = /obj/item/weapon/storage/box/syndie_kit/emp + cost = 3 + +/datum/uplink_item/dangerous/syndicate_minibomb + name = "Syndicate Minibomb" + desc = "The Minibomb is a grenade with a five-second fuse." + item = /obj/item/weapon/grenade/syndieminibomb + cost = 3 + +/datum/uplink_item/dangerous/viscerators + name = "Viscerator Delivery Grenade" + desc = "A unique grenade that deploys a swarm of viscerators upon activation, which will chase down and shred any non-operatives in the area." + item = /obj/item/weapon/grenade/spawnergrenade/manhacks + cost = 4 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/bioterror + name = "Biohazardous Chemical Sprayer" + desc = "A chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger Cooperative, the deadly blend it comes stocked with will disorient, damage, and disable your foes... \ + Use with extreme caution, to prevent exposure to yourself and your fellow operatives." + item = /obj/item/weapon/reagent_containers/spray/chemsprayer/bioterror + cost = 10 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/gygax + name = "Gygax Exosuit" + desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent for hit-and-run style attacks. \ + This model lacks a method of space propulsion, and therefore it is advised to repair the mothership's teleporter if you wish to make use of it." + item = /obj/mecha/combat/gygax/dark/loaded + cost = 45 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/dangerous/mauler + name = "Mauler Exosuit" + desc = "A massive and incredibly deadly Syndicate exosuit. Features long-range targetting, thrust vectoring, and deployable smoke." + item = /obj/mecha/combat/marauder/mauler/loaded + cost = 70 + gamemodes = list(/datum/game_mode/nuclear) +/datum/uplink_item/dangerous/syndieborg + name = "Syndicate Cyborg" + desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel." + item = /obj/item/weapon/antag_spawner/borg_tele + cost = 25 + gamemodes = list(/datum/game_mode/nuclear) +//for refunding the syndieborg teleporter +/datum/uplink_item/dangerous/syndieborg/spawn_item() + var/obj/item/weapon/antag_spawner/borg_tele/T = ..() + if(istype(T)) + T.TC_cost = cost + +// AMMUNITION + +/datum/uplink_item/ammo + category = "Ammunition" + +/datum/uplink_item/ammo/revolver + name = "Ammo-357" + desc = "A box that contains seven additional rounds for the revolver, made using an automatic lathe." + item = /obj/item/ammo_box/a357 + cost = 2 + +/datum/uplink_item/ammo/smg + name = "Ammo-12mm" + desc = "A 20-round 12mm magazine for use in the C-20r submachine gun." + item = /obj/item/ammo_box/magazine/m12mm + cost = 1 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/pistol + name = "Ammo-10mm" + desc = "An additional 8-round 10mm magazine for use in the Stetchkin pistol." + item = /obj/item/ammo_box/magazine/m10mm + cost = 1 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/machinegun + name = "Ammo-7.62×51mm" + desc = "A 50-round magazine of 7.62×51mm ammunition for use in the L6 SAW machinegun. By the time you need to use this, you'll already be on a pile of corpses." + item = /obj/item/ammo_box/magazine/m762 + cost = 6 + gamemodes = list(/datum/game_mode/nuclear) + +// STEALTHY WEAPONS + +/datum/uplink_item/stealthy_weapons + category = "Stealthy and Inconspicuous Weapons" + +/datum/uplink_item/stealthy_weapons/para_pen + name = "Paralysis Pen" + desc = "A syringe disguised as a functional pen, filled with a neuromuscular-blocking drug that renders a target immobile on injection and makes them seem dead to observers. \ + Side effects of the drug include noticeable drooling. The pen holds one dose of paralyzing agent, and cannot be refilled." + item = /obj/item/weapon/pen/paralysis + cost = 3 + excludefrom = list(/datum/game_mode/nuclear) + +/datum/uplink_item/stealthy_weapons/soap + name = "Syndicate Soap" + desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people." + item = /obj/item/weapon/soap/syndie + cost = 1 + +/datum/uplink_item/stealthy_weapons/detomatix + name = "Detomatix PDA Cartridge" + desc = "When inserted into a personal digital assistant, this cartridge gives you five opportunities to detonate PDAs of crewmembers who have their message feature enabled. \ + The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer. It has a chance to detonate your PDA." + item = /obj/item/weapon/cartridge/syndicate + cost = 3 + +/datum/uplink_item/stealthy_weapons/silencer + name = "Stetchkin Silencer" + desc = "Fitted for use on the Stetchkin pistol, this silencer will make its shots quieter when equipped onto it." + item = /obj/item/weapon/silencer + cost = 2 + gamemodes = list(/datum/game_mode/nuclear) + +// STEALTHY TOOLS + +/datum/uplink_item/stealthy_tools + category = "Stealth and Camouflage Items" + +/datum/uplink_item/stealthy_tools/chameleon_jumpsuit + name = "Chameleon Jumpsuit" + desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers." + item = /obj/item/clothing/under/chameleon + cost = 3 + +/datum/uplink_item/stealthy_tools/chameleon_stamp + name = "Chameleon Stamp" + desc = "A stamp that can be activated to imitate an official Nanotrasen Stamp™. The disguised stamp will work exactly like the real stamp and will allow you to forge false documents to gain access or equipment; \ + it can also be used in a washing machine to forge clothing." + item = /obj/item/weapon/stamp/chameleon + cost = 1 + +/datum/uplink_item/stealthy_tools/syndigolashes + name = "No-Slip Brown Shoes" + desc = "These allow you to run on wet floors. They do not work on lubricated surfaces." + item = /obj/item/clothing/shoes/syndigaloshes + cost = 2 + +/datum/uplink_item/stealthy_tools/agent_card + name = "Agent Identification card" + desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another." + item = /obj/item/weapon/card/id/syndicate + cost = 2 + +/datum/uplink_item/stealthy_tools/voice_changer + name = "Voice Changer" + item = /obj/item/clothing/mask/gas/voice + desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognizable." + cost = 4 + +/datum/uplink_item/stealthy_tools/chameleon_proj + name = "Chameleon-Projector" + desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. The disguised user cannot run and rojectiles pass over them." + item = /obj/item/device/chameleon + cost = 4 + +/datum/uplink_item/stealthy_tools/camera_bug + name = "Camera Bug" + desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions." + item = /obj/item/device/camera_bug + cost = 2 + +// DEVICE AND TOOLS + +/datum/uplink_item/device_tools + category = "Devices and Tools" + +/datum/uplink_item/device_tools/emag + name = "Cryptographic Sequencer" + desc = "The emag is a small card that unlocks hidden functions in electronic devices, subverts intended functions and characteristically breaks security mechanisms." + item = /obj/item/weapon/card/emag + cost = 3 + +/datum/uplink_item/device_tools/toolbox + name = "Full Syndicate Toolbox" + desc = "The syndicate toolbox is a suspicious black and red. Aside from tools, it comes with cable and a multitool. Insulated gloves are not included." + item = /obj/item/weapon/storage/toolbox/syndicate + cost = 1 + +/datum/uplink_item/device_tools/medkit + name = "Syndicate Medical Supply Kit" + desc = "The syndicate medkit is a suspicious black and red. Included is a combat stimulant injector for rapid healing, a medical hud for quick identification of injured comrades, \ + and other medical supplies helpful for a medical field operative.." + item = /obj/item/weapon/storage/firstaid/tactical + cost = 5 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/device_tools/space_suit + name = "Syndicate Space Suit" + desc = "The red syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings." + item = /obj/item/weapon/storage/box/syndie_kit/space + cost = 3 + +/datum/uplink_item/device_tools/thermal + name = "Thermal Imaging Glasses" + desc = "These glasses are thermals disguised as engineers' optical meson scanners. \ + They allow you to see organisms through walls by capturing the upper portion of the infrared light spectrum, emitted as heat and light by objects. \ + Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." + item = /obj/item/clothing/glasses/thermal/syndi + cost = 3 + +/datum/uplink_item/device_tools/binary + name = "Binary Translator Key" + desc = "A key, that when inserted into a radio headset, allows you to listen to and talk with artificial intelligences and cybernetic organisms in binary. " + item = /obj/item/device/encryptionkey/binary + cost = 3 + +/datum/uplink_item/device_tools/ai_detector + name = "Artificial Intelligence Detector" // changed name in case newfriends thought it detected disguised ai's + desc = "A functional multitool that turns red when it detects an artificial intelligence watching it or its holder. Knowing when an artificial intelligence is watching you is useful for knowing when to maintain cover." + item = /obj/item/device/multitool/ai_detect + cost = 1 + +/datum/uplink_item/device_tools/hacked_module + name = "Hacked AI Law Upload Module" + desc = "When used with an upload console, this module allows you to upload priority laws to an artificial intelligence. Be careful with their wording, as artificial intelligences may look for loopholes to exploit." + item = /obj/item/weapon/aiModule/syndicate + cost = 7 + +/datum/uplink_item/device_tools/plastic_explosives + name = "Composition C-4" + desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, attach it to organisms to destroy them, or connect a signaler to its wiring to make it remotely detonable. \ + It has a modifiable timer with a minimum setting of 10 seconds." + item = /obj/item/weapon/plastique + cost = 2 + +/datum/uplink_item/device_tools/powersink + name = "Power sink" + desc = "When screwed to wiring attached to an electric grid, then activated, this large device places excessive load on the grid, causing a stationwide blackout. The sink cannot be carried because of its excessive size. \ + Ordering this sends you a small beacon that will teleport the power sink to your location on activation." + item = /obj/item/device/powersink + cost = 5 + +/datum/uplink_item/device_tools/singularity_beacon + name = "Singularity Beacon" + desc = "When screwed to wiring attached to an electric grid, then activated, this large device pulls the singularity towards it. \ + Does not work when the singularity is still in containment. A singularity beacon can cause catastrophic damage to a space station, \ + leading to an emergency evacuation. Because of its size, it cannot be carried. Ordering this sends you a small beacon that will teleport the larger beacon to your location on activation." + item = /obj/item/device/sbeacondrop + cost = 7 + +/datum/uplink_item/device_tools/syndicate_bomb + name = "Syndicate Bomb" + desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \ + You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb." + item = /obj/item/device/sbeacondrop/bomb + cost = 5 + excludefrom = list(/datum/game_mode/traitor/double_agents) + +/datum/uplink_item/device_tools/syndicate_detonator + name = "Syndicate Detonator" + desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \ + Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator." + item = /obj/item/device/syndicatedetonator + cost = 1 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/device_tools/teleporter + name = "Teleporter Circuit Board" + desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur." + item = /obj/item/weapon/circuitboard/teleporter + cost = 20 + gamemodes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/device_tools/shield + name = "Energy Shield" + desc = "An incredibly useful personal shield projector, capable of reflecting energy projectiles and defending against other attacks." + item = /obj/item/weapon/shield/energy + cost = 8 + gamemodes = list(/datum/game_mode/nuclear) + + +// IMPLANTS + +/datum/uplink_item/implants + category = "Implants" + +/datum/uplink_item/implants/freedom + name = "Freedom Implant" + desc = "An implant injected into the body and later activated using a bodily gesture to attempt to slip restraints." + item = /obj/item/weapon/storage/box/syndie_kit/imp_freedom + cost = 3 + +/datum/uplink_item/implants/uplink + name = "Uplink Implant" + desc = "An implant injected into the body, and later activated using a bodily gesture to open an uplink with 5 telecrystals. \ + The ability for an agent to open an uplink after their posessions have been stripped from them makes this implant excellent for escaping confinement." + item = /obj/item/weapon/storage/box/syndie_kit/imp_uplink + cost = 10 + +/datum/uplink_item/implants/adrenal + name = "Adrenal Implant" + desc = "An implant injected into the body, and later activated using a bodily gesture to inject a chemical cocktail, which has a mild healing effect along with removing all stuns and increasing his speed." + item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal + cost = 4 + +// POINTLESS BADASSERY + +/datum/uplink_item/badass + category = "(Pointless) Badassery" + +/datum/uplink_item/badass/bundle + name = "Syndicate Bundle" + desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 10 telecrystals, but you do not know which specialisation you will receive." + item = /obj/item/weapon/storage/box/syndicate + cost = 10 + excludefrom = list(/datum/game_mode/nuclear) + +/datum/uplink_item/badass/syndiecards + name = "Syndicate Playing Cards" + desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them slightly more robust than a normal deck of cards. \ + You can also play card games with them." + item = /obj/item/toy/cards/deck/syndicate + cost = 1 + excludefrom = list(/datum/game_mode/nuclear) + +/datum/uplink_item/badass/balloon + name = "For showing that you are The Boss" + desc = "A useless red balloon with the syndicate logo on it, which can blow the deepest of covers." + item = /obj/item/toy/syndicateballoon + cost = 10 + +/datum/uplink_item/badass/random + name = "Random Item" + desc = "Picking this choice will send you a random item from the list. Useful for when you cannot think of a strategy to finish your objectives with." + item = /obj/item/weapon/storage/box/syndicate + cost = 0 + +/datum/uplink_item/badass/random/spawn_item(var/turf/loc, var/obj/item/device/uplink/U) + + var/list/buyable_items = get_uplink_items() + var/list/possible_items = list() + + for(var/category in buyable_items) + for(var/datum/uplink_item/I in buyable_items[category]) + if(I == src) + continue + if(I.cost > U.uses) + continue + possible_items += I + + if(possible_items.len) + var/datum/uplink_item/I = pick(possible_items) + U.uses -= max(0, I.cost) + feedback_add_details("traitor_uplink_items_bought","RN") + return new I.item(loc) diff --git a/code/datums/wires/alarm.dm b/code/datums/wires/alarm.dm index 2c826e6d527..77d9df4a391 100644 --- a/code/datums/wires/alarm.dm +++ b/code/datums/wires/alarm.dm @@ -1,94 +1,94 @@ - -/datum/wires/alarm - holder_type = /obj/machinery/alarm - wire_count = 5 - -var/const/AALARM_WIRE_IDSCAN = 1 -var/const/AALARM_WIRE_POWER = 2 -var/const/AALARM_WIRE_SYPHON = 4 -var/const/AALARM_WIRE_AI_CONTROL = 8 -var/const/AALARM_WIRE_AALARM = 16 - - -/datum/wires/alarm/CanUse(var/mob/living/L) - var/obj/machinery/alarm/A = holder - if(A.wiresexposed) - return 1 - return 0 - -/datum/wires/alarm/GetInteractWindow() - var/obj/machinery/alarm/A = holder - . += ..() - . += text("
    \n[(A.locked ? "The Air Alarm is locked." : "The Air Alarm is unlocked.")]
    \n[((A.shorted || (A.stat & (NOPOWER|BROKEN))) ? "The Air Alarm is offline." : "The Air Alarm is working properly!")]
    \n[(A.aidisabled ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]") - -/datum/wires/alarm/UpdateCut(var/index, var/mended) - var/obj/machinery/alarm/A = holder - switch(index) - if(AALARM_WIRE_IDSCAN) - if(!mended) - A.locked = 1 - //world << "Idscan wire cut" - - if(AALARM_WIRE_POWER) - A.shock(usr, 50) - A.shorted = !mended - A.update_icon() - //world << "Power wire cut" - - if (AALARM_WIRE_AI_CONTROL) - if (A.aidisabled == !mended) - A.aidisabled = mended - //world << "AI Control Wire Cut" - - if(AALARM_WIRE_SYPHON) - if(!mended) - A.mode = 3 // AALARM_MODE_PANIC - A.apply_mode() - //world << "Syphon Wire Cut" - - if(AALARM_WIRE_AALARM) - if (A.alarm_area.atmosalert(2)) - A.post_alert(2) - A.update_icon() - -/datum/wires/alarm/UpdatePulsed(var/index) - var/obj/machinery/alarm/A = holder - switch(index) - if(AALARM_WIRE_IDSCAN) - A.locked = !A.locked - // world << "Idscan wire pulsed" - - if (AALARM_WIRE_POWER) - // world << "Power wire pulsed" - if(A.shorted == 0) - A.shorted = 1 - A.update_icon() - - spawn(12000) - if(A.shorted == 1) - A.shorted = 0 - A.update_icon() - - - if (AALARM_WIRE_AI_CONTROL) - // world << "AI Control wire pulsed" - if (A.aidisabled == 0) - A.aidisabled = 1 - A.updateDialog() - spawn(100) - if (A.aidisabled == 1) - A.aidisabled = 0 - - if(AALARM_WIRE_SYPHON) - // world << "Syphon wire pulsed" - if(A.mode == 1) // AALARM_MODE_SCRUB - A.mode = 3 // AALARM_MODE_PANIC - else - A.mode = 1 // AALARM_MODE_SCRUB - A.apply_mode() - - if(AALARM_WIRE_AALARM) - // world << "Aalarm wire pulsed" - if (A.alarm_area.atmosalert(0)) - A.post_alert(0) - A.update_icon() + +/datum/wires/alarm + holder_type = /obj/machinery/alarm + wire_count = 5 + +var/const/AALARM_WIRE_IDSCAN = 1 +var/const/AALARM_WIRE_POWER = 2 +var/const/AALARM_WIRE_SYPHON = 4 +var/const/AALARM_WIRE_AI_CONTROL = 8 +var/const/AALARM_WIRE_AALARM = 16 + + +/datum/wires/alarm/CanUse(var/mob/living/L) + var/obj/machinery/alarm/A = holder + if(A.wiresexposed) + return 1 + return 0 + +/datum/wires/alarm/GetInteractWindow() + var/obj/machinery/alarm/A = holder + . += ..() + . += text("
    \n[(A.locked ? "The Air Alarm is locked." : "The Air Alarm is unlocked.")]
    \n[((A.shorted || (A.stat & (NOPOWER|BROKEN))) ? "The Air Alarm is offline." : "The Air Alarm is working properly!")]
    \n[(A.aidisabled ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]") + +/datum/wires/alarm/UpdateCut(var/index, var/mended) + var/obj/machinery/alarm/A = holder + switch(index) + if(AALARM_WIRE_IDSCAN) + if(!mended) + A.locked = 1 + //world << "Idscan wire cut" + + if(AALARM_WIRE_POWER) + A.shock(usr, 50) + A.shorted = !mended + A.update_icon() + //world << "Power wire cut" + + if (AALARM_WIRE_AI_CONTROL) + if (A.aidisabled == !mended) + A.aidisabled = mended + //world << "AI Control Wire Cut" + + if(AALARM_WIRE_SYPHON) + if(!mended) + A.mode = 3 // AALARM_MODE_PANIC + A.apply_mode() + //world << "Syphon Wire Cut" + + if(AALARM_WIRE_AALARM) + if (A.alarm_area.atmosalert(2)) + A.post_alert(2) + A.update_icon() + +/datum/wires/alarm/UpdatePulsed(var/index) + var/obj/machinery/alarm/A = holder + switch(index) + if(AALARM_WIRE_IDSCAN) + A.locked = !A.locked + // world << "Idscan wire pulsed" + + if (AALARM_WIRE_POWER) + // world << "Power wire pulsed" + if(A.shorted == 0) + A.shorted = 1 + A.update_icon() + + spawn(12000) + if(A.shorted == 1) + A.shorted = 0 + A.update_icon() + + + if (AALARM_WIRE_AI_CONTROL) + // world << "AI Control wire pulsed" + if (A.aidisabled == 0) + A.aidisabled = 1 + A.updateDialog() + spawn(100) + if (A.aidisabled == 1) + A.aidisabled = 0 + + if(AALARM_WIRE_SYPHON) + // world << "Syphon wire pulsed" + if(A.mode == 1) // AALARM_MODE_SCRUB + A.mode = 3 // AALARM_MODE_PANIC + else + A.mode = 1 // AALARM_MODE_SCRUB + A.apply_mode() + + if(AALARM_WIRE_AALARM) + // world << "Aalarm wire pulsed" + if (A.alarm_area.atmosalert(0)) + A.post_alert(0) + A.update_icon() diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm index e382ce620f1..ccfa7f10221 100644 --- a/code/datums/wires/autolathe.dm +++ b/code/datums/wires/autolathe.dm @@ -1,58 +1,58 @@ -/datum/wires/autolathe - - holder_type = /obj/machinery/autolathe - wire_count = 10 - -var/const/AUTOLATHE_HACK_WIRE = 1 -var/const/AUTOLATHE_SHOCK_WIRE = 2 -var/const/AUTOLATHE_DISABLE_WIRE = 4 - -/datum/wires/autolathe/GetInteractWindow() - var/obj/machinery/autolathe/A = holder - . += ..() - . += text("
    The red light is [A.disabled ? "off" : "on"].
    The green light is [A.shocked ? "off" : "on"].
    The blue light is [A.hacked ? "off" : "on"].
    ") - -/datum/wires/autolathe/CanUse() - var/obj/machinery/autolathe/A = holder - if(A.panel_open) - return 1 - return 0 - -/datum/wires/autolathe/Interact(var/mob/living/user) - if(CanUse(user)) - var/obj/machinery/autolathe/V = holder - V.attack_hand(user) - -/datum/wires/autolathe/UpdateCut(index, mended) - var/obj/machinery/autolathe/A = holder - switch(index) - if(AUTOLATHE_HACK_WIRE) - A.hacked = !mended - if(AUTOLATHE_SHOCK_WIRE) - A.shocked = !mended - if(AUTOLATHE_DISABLE_WIRE) - A.disabled = !mended - -/datum/wires/autolathe/UpdatePulsed(index) - if(IsIndexCut(index)) - return - var/obj/machinery/autolathe/A = holder - switch(index) - if(AUTOLATHE_HACK_WIRE) - A.hacked = !A.hacked - spawn(50) - if(A && !IsIndexCut(index)) - A.hacked = 0 - Interact(usr) - if(AUTOLATHE_SHOCK_WIRE) - A.shocked = !A.shocked - spawn(50) - if(A && !IsIndexCut(index)) - A.shocked = 0 - Interact(usr) - if(AUTOLATHE_DISABLE_WIRE) - A.disabled = !A.disabled - spawn(50) - if(A && !IsIndexCut(index)) - A.disabled = 0 +/datum/wires/autolathe + + holder_type = /obj/machinery/autolathe + wire_count = 10 + +var/const/AUTOLATHE_HACK_WIRE = 1 +var/const/AUTOLATHE_SHOCK_WIRE = 2 +var/const/AUTOLATHE_DISABLE_WIRE = 4 + +/datum/wires/autolathe/GetInteractWindow() + var/obj/machinery/autolathe/A = holder + . += ..() + . += text("
    The red light is [A.disabled ? "off" : "on"].
    The green light is [A.shocked ? "off" : "on"].
    The blue light is [A.hacked ? "off" : "on"].
    ") + +/datum/wires/autolathe/CanUse() + var/obj/machinery/autolathe/A = holder + if(A.panel_open) + return 1 + return 0 + +/datum/wires/autolathe/Interact(var/mob/living/user) + if(CanUse(user)) + var/obj/machinery/autolathe/V = holder + V.attack_hand(user) + +/datum/wires/autolathe/UpdateCut(index, mended) + var/obj/machinery/autolathe/A = holder + switch(index) + if(AUTOLATHE_HACK_WIRE) + A.hacked = !mended + if(AUTOLATHE_SHOCK_WIRE) + A.shocked = !mended + if(AUTOLATHE_DISABLE_WIRE) + A.disabled = !mended + +/datum/wires/autolathe/UpdatePulsed(index) + if(IsIndexCut(index)) + return + var/obj/machinery/autolathe/A = holder + switch(index) + if(AUTOLATHE_HACK_WIRE) + A.hacked = !A.hacked + spawn(50) + if(A && !IsIndexCut(index)) + A.hacked = 0 + Interact(usr) + if(AUTOLATHE_SHOCK_WIRE) + A.shocked = !A.shocked + spawn(50) + if(A && !IsIndexCut(index)) + A.shocked = 0 + Interact(usr) + if(AUTOLATHE_DISABLE_WIRE) + A.disabled = !A.disabled + spawn(50) + if(A && !IsIndexCut(index)) + A.disabled = 0 Interact(usr) \ No newline at end of file diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 4e4fabe3d38..6e3ac1d88b3 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -1,77 +1,77 @@ -/datum/wires/syndicatebomb - random = 1 - holder_type = /obj/machinery/syndicatebomb - wire_count = 5 - -var/const/WIRE_BOOM = 1 // Explodes if pulsed or cut while active, defuses a bomb that isn't active on cut -var/const/WIRE_UNBOLT = 2 // Unbolts the bomb if cut, hint on pulsed -var/const/WIRE_DELAY = 4 // Raises the timer on pulse, does nothing on cut -var/const/WIRE_PROCEED = 8 // Lowers the timer, explodes if cut while the bomb is active -var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if pulsed while already active, will stop a timer a bomb on cut - - -/datum/wires/syndicatebomb/CanUse(var/mob/living/L) - var/obj/machinery/syndicatebomb/P = holder - if(P.open_panel) - return 1 - return 0 - -/datum/wires/syndicatebomb/UpdatePulsed(var/index) - var/obj/machinery/syndicatebomb/P = holder - switch(index) - if(WIRE_BOOM) - if (P.active) - P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") - P.timer = 0 - if(WIRE_UNBOLT) - P.loc.visible_message("\blue \icon[holder] The bolts spin in place for a moment.") - if(WIRE_DELAY) - playsound(P.loc, 'sound/machines/chime.ogg', 30, 1) - P.loc.visible_message("\blue \icon[holder] The bomb chirps.") - P.timer += 10 - if(WIRE_PROCEED) - playsound(P.loc, 'sound/machines/buzz-sigh.ogg', 30, 1) - P.loc.visible_message("\red \icon[holder] The bomb buzzes ominously!") - if (P.timer >= 61) //Long fuse bombs can suddenly become more dangerous if you tinker with them - P.timer = 60 - if (P.timer >= 21) - P.timer -= 10 - else if (P.timer >= 11) //both to prevent negative timers and to have a little mercy - P.timer = 10 - if(WIRE_ACTIVATE) - if(!P.active && !P.defused) - playsound(P.loc, 'sound/machines/click.ogg', 30, 1) - P.loc.visible_message("\red \icon[holder] You hear the bomb start ticking!") - P.active = 1 - P.icon_state = "[initial(P.icon_state)]-active[P.open_panel ? "-wires" : ""]" - else - P.loc.visible_message("\blue \icon[holder] The bomb seems to hesitate for a moment.") - P.timer += 5 - -/datum/wires/syndicatebomb/UpdateCut(var/index, var/mended) - var/obj/machinery/syndicatebomb/P = holder - switch(index) - if(WIRE_EXPLODE) - if(!mended) - if(P.active) - P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") - P.timer = 0 - else - P.defused = 1 - if(mended) - P.defused = 0 //cutting and mending all the wires of an inactive bomb will thus cure any sabotage - if(WIRE_UNBOLT) - if (!mended && P.anchored) - playsound(P.loc, 'sound/effects/stealthoff.ogg', 30, 1) - P.loc.visible_message("\blue \icon[holder] The bolts lift out of the ground!") - P.anchored = 0 - if(WIRE_PROCEED) - if(!mended && P.active) - P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") - P.timer = 0 - if(WIRE_ACTIVATE) - if (!mended && P.active) - P.loc.visible_message("\blue \icon[holder] The timer stops! The bomb has been defused!") - P.icon_state = "[initial(P.icon_state)]-inactive[P.open_panel ? "-wires" : ""]" - P.active = 0 +/datum/wires/syndicatebomb + random = 1 + holder_type = /obj/machinery/syndicatebomb + wire_count = 5 + +var/const/WIRE_BOOM = 1 // Explodes if pulsed or cut while active, defuses a bomb that isn't active on cut +var/const/WIRE_UNBOLT = 2 // Unbolts the bomb if cut, hint on pulsed +var/const/WIRE_DELAY = 4 // Raises the timer on pulse, does nothing on cut +var/const/WIRE_PROCEED = 8 // Lowers the timer, explodes if cut while the bomb is active +var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if pulsed while already active, will stop a timer a bomb on cut + + +/datum/wires/syndicatebomb/CanUse(var/mob/living/L) + var/obj/machinery/syndicatebomb/P = holder + if(P.open_panel) + return 1 + return 0 + +/datum/wires/syndicatebomb/UpdatePulsed(var/index) + var/obj/machinery/syndicatebomb/P = holder + switch(index) + if(WIRE_BOOM) + if (P.active) + P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") + P.timer = 0 + if(WIRE_UNBOLT) + P.loc.visible_message("\blue \icon[holder] The bolts spin in place for a moment.") + if(WIRE_DELAY) + playsound(P.loc, 'sound/machines/chime.ogg', 30, 1) + P.loc.visible_message("\blue \icon[holder] The bomb chirps.") + P.timer += 10 + if(WIRE_PROCEED) + playsound(P.loc, 'sound/machines/buzz-sigh.ogg', 30, 1) + P.loc.visible_message("\red \icon[holder] The bomb buzzes ominously!") + if (P.timer >= 61) //Long fuse bombs can suddenly become more dangerous if you tinker with them + P.timer = 60 + if (P.timer >= 21) + P.timer -= 10 + else if (P.timer >= 11) //both to prevent negative timers and to have a little mercy + P.timer = 10 + if(WIRE_ACTIVATE) + if(!P.active && !P.defused) + playsound(P.loc, 'sound/machines/click.ogg', 30, 1) + P.loc.visible_message("\red \icon[holder] You hear the bomb start ticking!") + P.active = 1 + P.icon_state = "[initial(P.icon_state)]-active[P.open_panel ? "-wires" : ""]" + else + P.loc.visible_message("\blue \icon[holder] The bomb seems to hesitate for a moment.") + P.timer += 5 + +/datum/wires/syndicatebomb/UpdateCut(var/index, var/mended) + var/obj/machinery/syndicatebomb/P = holder + switch(index) + if(WIRE_EXPLODE) + if(!mended) + if(P.active) + P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") + P.timer = 0 + else + P.defused = 1 + if(mended) + P.defused = 0 //cutting and mending all the wires of an inactive bomb will thus cure any sabotage + if(WIRE_UNBOLT) + if (!mended && P.anchored) + playsound(P.loc, 'sound/effects/stealthoff.ogg', 30, 1) + P.loc.visible_message("\blue \icon[holder] The bolts lift out of the ground!") + P.anchored = 0 + if(WIRE_PROCEED) + if(!mended && P.active) + P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-") + P.timer = 0 + if(WIRE_ACTIVATE) + if (!mended && P.active) + P.loc.visible_message("\blue \icon[holder] The timer stops! The bomb has been defused!") + P.icon_state = "[initial(P.icon_state)]-inactive[P.open_panel ? "-wires" : ""]" + P.active = 0 P.defused = 1 \ No newline at end of file diff --git a/code/datums/wires/taperecorder.dm b/code/datums/wires/taperecorder.dm index a5fa9bd3939..45eaef24421 100644 --- a/code/datums/wires/taperecorder.dm +++ b/code/datums/wires/taperecorder.dm @@ -1,40 +1,40 @@ -/datum/wires/taperecorder - wire_count = 2 - holder_type = /obj/item/device/taperecorder - -var/const/WIRE_PLAY = 1 -var/const/WIRE_RECORD = 2 - - -/datum/wires/taperecorder/UpdatePulsed(var/index) - switch(index) - if(WIRE_PLAY) - play() - if(WIRE_RECORD) - record() - -/datum/wires/taperecorder/CanUse(var/mob/living/L) - var/obj/item/device/taperecorder/T = holder - if(T.open_panel) - return 1 - return 0 - - -/datum/wires/taperecorder/proc/play() - var/obj/item/device/taperecorder/T = holder - T.stop() - T.play() - -/datum/wires/taperecorder/proc/record() - var/obj/item/device/taperecorder/T = holder - if(T.recording) - T.stop() - else - T.record() - -//helpers -/datum/wires/taperecorder/proc/get_play() - return !(wires_status & WIRE_PLAY) - -/datum/wires/taperecorder/proc/get_record() +/datum/wires/taperecorder + wire_count = 2 + holder_type = /obj/item/device/taperecorder + +var/const/WIRE_PLAY = 1 +var/const/WIRE_RECORD = 2 + + +/datum/wires/taperecorder/UpdatePulsed(var/index) + switch(index) + if(WIRE_PLAY) + play() + if(WIRE_RECORD) + record() + +/datum/wires/taperecorder/CanUse(var/mob/living/L) + var/obj/item/device/taperecorder/T = holder + if(T.open_panel) + return 1 + return 0 + + +/datum/wires/taperecorder/proc/play() + var/obj/item/device/taperecorder/T = holder + T.stop() + T.play() + +/datum/wires/taperecorder/proc/record() + var/obj/item/device/taperecorder/T = holder + if(T.recording) + T.stop() + else + T.record() + +//helpers +/datum/wires/taperecorder/proc/get_play() + return !(wires_status & WIRE_PLAY) + +/datum/wires/taperecorder/proc/get_record() return !(wires_status & WIRE_RECORD) \ No newline at end of file diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 9d33e32f6af..ebe28d02f89 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -1,144 +1,144 @@ -/obj/item/weapon/antag_spawner - throw_speed = 1 - throw_range = 5 - w_class = 1.0 - var/used = 0 - -/obj/item/weapon/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "") - return - -/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target as mob) - return - -/obj/item/weapon/antag_spawner/contract - name = "contract" - desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." - icon = 'icons/obj/wizard.dmi' - icon_state ="scroll2" - -/obj/item/weapon/antag_spawner/contract/attack_self(mob/user as mob) - user.set_machine(src) - var/dat - if(used) - dat = "You have already summoned your apprentice.
    " - else - dat = "Contract of Apprenticeship:
    " - dat += "Using this contract, you may summon an apprentice to aid you on your mission.
    " - dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
    " - dat += "Which school of magic is your apprentice studying?:
    " - dat += "Destruction
    " - dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " - dat += "Bluespace Manipulation
    " - dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " - dat += "Healing
    " - dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " - dat += "Robeless
    " - dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/weapon/antag_spawner/contract/Topic(href, href_list) - ..() - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - if(!istype(H, /mob/living/carbon/human)) - return 1 - - if(loc == H || (in_range(src, H) && istype(loc, /turf))) - H.set_machine(src) - if(href_list["school"]) - if (used) - H << "You already used this contract!" - return - var/list/candidates = get_candidates(BE_WIZARD) - if(candidates.len) - src.used = 1 - var/client/C = pick(candidates) - spawn_antag(C, get_turf(H.loc), href_list["school"]) - else - H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later." - -/obj/item/weapon/antag_spawner/contract/spawn_antag(var/client/C, var/turf/T, var/type = "") - new /obj/effect/effect/harmless_smoke(T) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - M.key = C.key - M << "You are the [usr.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals." - switch(type) - if("destruction") - M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null) - M.mind.spell_list += new /obj/effect/proc_holder/spell/dumbfire/fireball(null) - M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball." - if("bluespace") - M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null) - M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null) - M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt." - if("healing") - M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(null) - M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(null) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) - M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." - if("robeless") - M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(null) - M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(null) - M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap." - - equip_antag(M) - var/wizard_name_first = pick(wizard_first) - var/wizard_name_second = pick(wizard_second) - var/randomname = "[wizard_name_first] [wizard_name_second]" - var/newname = copytext(sanitize(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) - if (!newname) - newname = randomname - M.mind.name = newname - M.real_name = newname - M.name = newname - var/datum/objective/protect/new_objective = new /datum/objective/protect - new_objective.owner = M:mind - new_objective:target = usr:mind - new_objective.explanation_text = "Protect [usr.real_name], the wizard." - M.mind.objectives += new_objective - ticker.mode.traitors += M.mind - M.mind.special_role = "apprentice" - -/obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob) - target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) - target.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) - target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(target), slot_shoes) - target.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) - target.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(target), slot_head) - target.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(target), slot_back) - target.equip_to_slot_or_del(new /obj/item/weapon/storage/box(target), slot_in_backpack) - target.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) - -/obj/item/weapon/antag_spawner/borg_tele - name = "Syndicate Cyborg Teleporter" - desc = "A single-use teleporter used to deploy a Syndicate Cyborg on the field." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - var/TC_cost = 0 - -/obj/item/weapon/antag_spawner/borg_tele/attack_self(mob/user as mob) - if(used) - user << "The teleporter is out of power." - return - var/list/borg_candicates = get_candidates(BE_OPERATIVE) - if(borg_candicates.len > 0) - used = 1 - var/client/C = pick(borg_candicates) - spawn_antag(C, get_turf(src.loc), "syndieborg") - else - user << "Unable to connect to Syndicate Command. Please wait and try again later or use the teleporter on your uplink to get your points refunded." - -/obj/item/weapon/antag_spawner/borg_tele/spawn_antag(var/client/C, var/turf/T, var/type = "") - var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread - S.set_up(4, 1, src) - S.start() - var/mob/living/silicon/robot/R = new /mob/living/silicon/robot/syndicate(T) - R.key = C.key - ticker.mode.syndicates += R.mind - ticker.mode.update_synd_icons_added(R.mind) - R.mind.special_role = "syndicate" +/obj/item/weapon/antag_spawner + throw_speed = 1 + throw_range = 5 + w_class = 1.0 + var/used = 0 + +/obj/item/weapon/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "") + return + +/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target as mob) + return + +/obj/item/weapon/antag_spawner/contract + name = "contract" + desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." + icon = 'icons/obj/wizard.dmi' + icon_state ="scroll2" + +/obj/item/weapon/antag_spawner/contract/attack_self(mob/user as mob) + user.set_machine(src) + var/dat + if(used) + dat = "You have already summoned your apprentice.
    " + else + dat = "Contract of Apprenticeship:
    " + dat += "Using this contract, you may summon an apprentice to aid you on your mission.
    " + dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
    " + dat += "Which school of magic is your apprentice studying?:
    " + dat += "Destruction
    " + dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " + dat += "Bluespace Manipulation
    " + dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " + dat += "Healing
    " + dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " + dat += "Robeless
    " + dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " + user << browse(dat, "window=radio") + onclose(user, "radio") + return + +/obj/item/weapon/antag_spawner/contract/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!istype(H, /mob/living/carbon/human)) + return 1 + + if(loc == H || (in_range(src, H) && istype(loc, /turf))) + H.set_machine(src) + if(href_list["school"]) + if (used) + H << "You already used this contract!" + return + var/list/candidates = get_candidates(BE_WIZARD) + if(candidates.len) + src.used = 1 + var/client/C = pick(candidates) + spawn_antag(C, get_turf(H.loc), href_list["school"]) + else + H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later." + +/obj/item/weapon/antag_spawner/contract/spawn_antag(var/client/C, var/turf/T, var/type = "") + new /obj/effect/effect/harmless_smoke(T) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + M.key = C.key + M << "You are the [usr.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals." + switch(type) + if("destruction") + M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null) + M.mind.spell_list += new /obj/effect/proc_holder/spell/dumbfire/fireball(null) + M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball." + if("bluespace") + M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null) + M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null) + M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt." + if("healing") + M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/charge(null) + M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(null) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/magic/staff/healing(M), slot_r_hand) + M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall." + if("robeless") + M.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(null) + M.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(null) + M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap." + + equip_antag(M) + var/wizard_name_first = pick(wizard_first) + var/wizard_name_second = pick(wizard_second) + var/randomname = "[wizard_name_first] [wizard_name_second]" + var/newname = copytext(sanitize(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) + if (!newname) + newname = randomname + M.mind.name = newname + M.real_name = newname + M.name = newname + var/datum/objective/protect/new_objective = new /datum/objective/protect + new_objective.owner = M:mind + new_objective:target = usr:mind + new_objective.explanation_text = "Protect [usr.real_name], the wizard." + M.mind.objectives += new_objective + ticker.mode.traitors += M.mind + M.mind.special_role = "apprentice" + +/obj/item/weapon/antag_spawner/contract/equip_antag(mob/target as mob) + target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) + target.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(target), slot_w_uniform) + target.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(target), slot_shoes) + target.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(target), slot_wear_suit) + target.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(target), slot_head) + target.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(target), slot_back) + target.equip_to_slot_or_del(new /obj/item/weapon/storage/box(target), slot_in_backpack) + target.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store) + +/obj/item/weapon/antag_spawner/borg_tele + name = "Syndicate Cyborg Teleporter" + desc = "A single-use teleporter used to deploy a Syndicate Cyborg on the field." + icon = 'icons/obj/device.dmi' + icon_state = "locator" + var/TC_cost = 0 + +/obj/item/weapon/antag_spawner/borg_tele/attack_self(mob/user as mob) + if(used) + user << "The teleporter is out of power." + return + var/list/borg_candicates = get_candidates(BE_OPERATIVE) + if(borg_candicates.len > 0) + used = 1 + var/client/C = pick(borg_candicates) + spawn_antag(C, get_turf(src.loc), "syndieborg") + else + user << "Unable to connect to Syndicate Command. Please wait and try again later or use the teleporter on your uplink to get your points refunded." + +/obj/item/weapon/antag_spawner/borg_tele/spawn_antag(var/client/C, var/turf/T, var/type = "") + var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread + S.set_up(4, 1, src) + S.start() + var/mob/living/silicon/robot/R = new /mob/living/silicon/robot/syndicate(T) + R.key = C.key + ticker.mode.syndicates += R.mind + ticker.mode.update_synd_icons_added(R.mind) + R.mind.special_role = "syndicate" R.faction = "syndicate" \ No newline at end of file diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index 4838dfb3d9c..e59b57e17e0 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -46,4 +46,4 @@ datum/game_mode/proc/auto_declare_completion_blob() for(var/datum/mind/blob in blob_mode.infected_crew) text += "
    [blob.key] was [blob.name]" world << text - return 1 + return 1 diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index 0a303bc51a1..c149bd9fee8 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -1,34 +1,34 @@ -/obj/effect/blob/resource - name = "resource blob" - icon = 'icons/mob/blob.dmi' - icon_state = "blob_resource" - health = 30 - fire_resist = 2 - var/mob/camera/blob/overmind = null - var/resource_delay = 0 - -/obj/effect/blob/resource/update_icon() - if(health <= 0) - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - Destroy() - return - return - -/obj/effect/blob/resource/PulseAnimation(var/activate = 0) - if(activate) - ..() - return - -/obj/effect/blob/resource/run_action() - - if(resource_delay > world.time) - return 0 - - PulseAnimation(1) - - resource_delay = world.time + 40 // 4 seconds - - if(overmind) - overmind.add_points(1) - return 0 - +/obj/effect/blob/resource + name = "resource blob" + icon = 'icons/mob/blob.dmi' + icon_state = "blob_resource" + health = 30 + fire_resist = 2 + var/mob/camera/blob/overmind = null + var/resource_delay = 0 + +/obj/effect/blob/resource/update_icon() + if(health <= 0) + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + Destroy() + return + return + +/obj/effect/blob/resource/PulseAnimation(var/activate = 0) + if(activate) + ..() + return + +/obj/effect/blob/resource/run_action() + + if(resource_delay > world.time) + return 0 + + PulseAnimation(1) + + resource_delay = world.time + 40 // 4 seconds + + if(overmind) + overmind.add_points(1) + return 0 + diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index e469a0ce1bf..5ee9f5dd69d 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -1,100 +1,100 @@ -/mob/camera/blob - name = "Blob Overmind" - real_name = "Blob Overmind" - icon = 'icons/mob/blob.dmi' - icon_state = "marker" - - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - invisibility = INVISIBILITY_OBSERVER - - pass_flags = PASSBLOB - faction = "blob" - - var/obj/effect/blob/core/blob_core = null // The blob overmind's core - var/blob_points = 0 - var/max_blob_points = 100 - -/mob/camera/blob/New() - var/new_name = "[initial(name)] ([rand(1, 999)])" - name = new_name - real_name = new_name - ..() - -/mob/camera/blob/Login() - ..() - sync_mind() - src << "You are the overmind!" - src << "You are the overmind and can control the blob! You can expand, which will attack people, and place new blob pieces such as..." - src << "Normal Blob will expand your reach and allow you to upgrade into special blobs that perform certain functions." - src << "Shield Blob is a strong and expensive blob which can take more damage. It is fireproof and can block air, use this to protect yourself from station fires." - src << "Resource Blob is a blob which will collect more resources for you, try to build these earlier to get a strong income. It will benefit from being near your core or multiple nodes, by having an increased resource rate; put it alone and it won't create resources at all." - src << "Node Blob is a blob which will grow, like the core. Unlike the core it won't give you a small income but it can power resource and factory blobs to increase their rate." - src << "Factory Blob is a blob which will spawn blob spores which will attack nearby food. Putting this nearby nodes and your core will increase the spawn rate; put it alone and it will not spawn any spores." - src << "Shortcuts: CTRL Click = Expand Blob / Middle Mouse Click = Rally Spores / Alt Click = Create Shield" - update_health() - -/mob/camera/blob/proc/update_health() - if(blob_core) - hud_used.blobhealthdisplay.maptext = "
    [blob_core.health]
    " - -/mob/camera/blob/proc/add_points(var/points) - if(points != 0) - blob_points = Clamp(blob_points + points, 0, max_blob_points) - hud_used.blobpwrdisplay.maptext = "
    [src.blob_points]
    " - -/mob/camera/blob/say(var/message) - if (!message) - return - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "You cannot send IC messages (muted)." - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - - if (stat) - return - - blob_talk(message) - -/mob/camera/blob/proc/blob_talk(message) - log_say("[key_name(src)] : [message]") - - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - if (!message) - return - - var/message_a = say_quote(message) - var/rendered = "Blob Telepathy, [name] [message_a]" - - for (var/mob/M in mob_list) - if(isovermind(M) || isobserver(M)) - M.show_message(rendered, 2) - -/mob/camera/blob/emote(var/act,var/m_type=1,var/message = null) - return - -/mob/camera/blob/blob_act() - return - -/mob/camera/blob/Stat() - - statpanel("Status") - ..() - if (client.statpanel == "Status") - if(blob_core) - stat(null, "Core Health: [blob_core.health]") - stat(null, "Power Stored: [blob_points]/[max_blob_points]") - return - -/mob/camera/blob/Move(var/NewLoc, var/Dir = 0) - var/obj/effect/blob/B = locate() in range("3x3", NewLoc) - if(B) - loc = NewLoc - else - return 0 - - +/mob/camera/blob + name = "Blob Overmind" + real_name = "Blob Overmind" + icon = 'icons/mob/blob.dmi' + icon_state = "marker" + + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_MINIMUM + invisibility = INVISIBILITY_OBSERVER + + pass_flags = PASSBLOB + faction = "blob" + + var/obj/effect/blob/core/blob_core = null // The blob overmind's core + var/blob_points = 0 + var/max_blob_points = 100 + +/mob/camera/blob/New() + var/new_name = "[initial(name)] ([rand(1, 999)])" + name = new_name + real_name = new_name + ..() + +/mob/camera/blob/Login() + ..() + sync_mind() + src << "You are the overmind!" + src << "You are the overmind and can control the blob! You can expand, which will attack people, and place new blob pieces such as..." + src << "Normal Blob will expand your reach and allow you to upgrade into special blobs that perform certain functions." + src << "Shield Blob is a strong and expensive blob which can take more damage. It is fireproof and can block air, use this to protect yourself from station fires." + src << "Resource Blob is a blob which will collect more resources for you, try to build these earlier to get a strong income. It will benefit from being near your core or multiple nodes, by having an increased resource rate; put it alone and it won't create resources at all." + src << "Node Blob is a blob which will grow, like the core. Unlike the core it won't give you a small income but it can power resource and factory blobs to increase their rate." + src << "Factory Blob is a blob which will spawn blob spores which will attack nearby food. Putting this nearby nodes and your core will increase the spawn rate; put it alone and it will not spawn any spores." + src << "Shortcuts: CTRL Click = Expand Blob / Middle Mouse Click = Rally Spores / Alt Click = Create Shield" + update_health() + +/mob/camera/blob/proc/update_health() + if(blob_core) + hud_used.blobhealthdisplay.maptext = "
    [blob_core.health]
    " + +/mob/camera/blob/proc/add_points(var/points) + if(points != 0) + blob_points = Clamp(blob_points + points, 0, max_blob_points) + hud_used.blobpwrdisplay.maptext = "
    [src.blob_points]
    " + +/mob/camera/blob/say(var/message) + if (!message) + return + + if (src.client) + if(client.prefs.muted & MUTE_IC) + src << "You cannot send IC messages (muted)." + return + if (src.client.handle_spam_prevention(message,MUTE_IC)) + return + + if (stat) + return + + blob_talk(message) + +/mob/camera/blob/proc/blob_talk(message) + log_say("[key_name(src)] : [message]") + + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + if (!message) + return + + var/message_a = say_quote(message) + var/rendered = "Blob Telepathy, [name] [message_a]" + + for (var/mob/M in mob_list) + if(isovermind(M) || isobserver(M)) + M.show_message(rendered, 2) + +/mob/camera/blob/emote(var/act,var/m_type=1,var/message = null) + return + +/mob/camera/blob/blob_act() + return + +/mob/camera/blob/Stat() + + statpanel("Status") + ..() + if (client.statpanel == "Status") + if(blob_core) + stat(null, "Core Health: [blob_core.health]") + stat(null, "Power Stored: [blob_points]/[max_blob_points]") + return + +/mob/camera/blob/Move(var/NewLoc, var/Dir = 0) + var/obj/effect/blob/B = locate() in range("3x3", NewLoc) + if(B) + loc = NewLoc + else + return 0 + + diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index d5c88f010cc..52ecee1ba66 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -1,236 +1,236 @@ -// Point controlling procs - -/mob/camera/blob/proc/can_buy(var/cost = 15) - if(blob_points < cost) - src << "You cannot afford this." - return 0 - add_points(-cost) - return 1 - -// Power verbs - -/mob/camera/blob/verb/transport_core() - set category = "Blob" - set name = "Jump to Core" - set desc = "Transport back to your core." - - if(blob_core) - src.loc = blob_core.loc - -/mob/camera/blob/verb/jump_to_node() - set category = "Blob" - set name = "Jump to Node" - set desc = "Transport back to a selected node." - - if(blob_nodes.len) - var/list/nodes = list() - for(var/i = 1; i <= blob_nodes.len; i++) - nodes["Blob Node #[i]"] = blob_nodes[i] - var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes - var/obj/effect/blob/node/chosen_node = nodes[node_name] - if(chosen_node) - src.loc = chosen_node.loc - -/mob/camera/blob/verb/create_shield_power() - set category = "Blob" - set name = "Create Shield Blob (10)" - set desc = "Create a shield blob." - - var/turf/T = get_turf(src) - create_shield(T) - -/mob/camera/blob/proc/create_shield(var/turf/T) - - var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) - - if(!B)//We are on a blob - src << "There is no blob here!" - return - - if(!istype(B, /obj/effect/blob/normal)) - src << "Unable to use this blob, find a normal one." - return - - if(!can_buy(10)) - return - - - B.change_to(/obj/effect/blob/shield) - return - - - -/mob/camera/blob/verb/create_resource() - set category = "Blob" - set name = "Create Resource Blob (40)" - set desc = "Create a resource tower which will generate points for you." - - - var/turf/T = get_turf(src) - - if(!T) - return - - var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) - - if(!B)//We are on a blob - src << "There is no blob here!" - return - - if(!istype(B, /obj/effect/blob/normal)) - src << "Unable to use this blob, find a normal one." - return - - for(var/obj/effect/blob/resource/blob in orange(4, T)) - src << "There is a resource blob nearby, move more than 4 tiles away from it!" - return - - if(!can_buy(40)) - return - - - B.change_to(/obj/effect/blob/resource) - var/obj/effect/blob/resource/R = locate() in T - if(R) - R.overmind = src - - return - -/mob/camera/blob/verb/create_node() - set category = "Blob" - set name = "Create Node Blob (60)" - set desc = "Create a Node." - - - var/turf/T = get_turf(src) - - if(!T) - return - - var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) - - if(!B)//We are on a blob - src << "There is no blob here!" - return - - if(!istype(B, /obj/effect/blob/normal)) - src << "Unable to use this blob, find a normal one." - return - - for(var/obj/effect/blob/node/blob in orange(5, T)) - src << "There is another node nearby, move more than 5 tiles away from it!" - return - - if(!can_buy(60)) - return - - - B.change_to(/obj/effect/blob/node) - return - - -/mob/camera/blob/verb/create_factory() - set category = "Blob" - set name = "Create Factory Blob (60)" - set desc = "Create a Spore producing blob." - - - var/turf/T = get_turf(src) - - if(!T) - return - - var/obj/effect/blob/B = locate(/obj/effect/blob) in T - if(!B) - src << "You must be on a blob!" - return - - if(!istype(B, /obj/effect/blob/normal)) - src << "Unable to use this blob, find a normal one." - return - - for(var/obj/effect/blob/factory/blob in orange(7, T)) - src << "There is a factory blob nearby, move more than 7 tiles away from it!" - return - - if(!can_buy(60)) - return - - B.change_to(/obj/effect/blob/factory) - return - - -/mob/camera/blob/verb/revert() - set category = "Blob" - set name = "Remove Blob" - set desc = "Removes a blob." - - var/turf/T = get_turf(src) - if(!T) - return - - var/obj/effect/blob/B = locate(/obj/effect/blob) in T - if(!B) - src << "You must be on a blob!" - return - - if(istype(B, /obj/effect/blob/core)) - src << "Unable to remove this blob." - return - - B.Destroy() - return - - -/mob/camera/blob/verb/expand_blob_power() - set category = "Blob" - set name = "Expand/Attack Blob (5)" - set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it." - - var/turf/T = get_turf(src) - expand_blob(T) - -/mob/camera/blob/proc/expand_blob(var/turf/T) - if(!T) - return - - var/obj/effect/blob/B = locate() in T - if(B) - src << "There is a blob here!" - return - - var/obj/effect/blob/OB = locate() in circlerange(T, 1) - if(!OB) - src << "There is no blob adjacent to you." - return - - if(!can_buy(5)) - return - OB.expand(T, 0) - return - - -/mob/camera/blob/verb/rally_spores_power() - set category = "Blob" - set name = "Rally Spores (5)" - set desc = "Rally the spores to move to your location." - - var/turf/T = get_turf(src) - rally_spores(T) - -/mob/camera/blob/proc/rally_spores(var/turf/T) - - if(!can_buy(5)) - return - - src << "You rally your spores." - - var/list/surrounding_turfs = block(locate(T.x - 1, T.y - 1, T.z), locate(T.x + 1, T.y + 1, T.z)) - if(!surrounding_turfs.len) - return - - for(var/mob/living/simple_animal/hostile/blobspore/BS in living_mob_list) - if(isturf(BS.loc) && get_dist(BS, T) <= 35) - BS.LoseTarget() - BS.Goto(pick(surrounding_turfs), BS.move_to_delay) +// Point controlling procs + +/mob/camera/blob/proc/can_buy(var/cost = 15) + if(blob_points < cost) + src << "You cannot afford this." + return 0 + add_points(-cost) + return 1 + +// Power verbs + +/mob/camera/blob/verb/transport_core() + set category = "Blob" + set name = "Jump to Core" + set desc = "Transport back to your core." + + if(blob_core) + src.loc = blob_core.loc + +/mob/camera/blob/verb/jump_to_node() + set category = "Blob" + set name = "Jump to Node" + set desc = "Transport back to a selected node." + + if(blob_nodes.len) + var/list/nodes = list() + for(var/i = 1; i <= blob_nodes.len; i++) + nodes["Blob Node #[i]"] = blob_nodes[i] + var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes + var/obj/effect/blob/node/chosen_node = nodes[node_name] + if(chosen_node) + src.loc = chosen_node.loc + +/mob/camera/blob/verb/create_shield_power() + set category = "Blob" + set name = "Create Shield Blob (10)" + set desc = "Create a shield blob." + + var/turf/T = get_turf(src) + create_shield(T) + +/mob/camera/blob/proc/create_shield(var/turf/T) + + var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) + + if(!B)//We are on a blob + src << "There is no blob here!" + return + + if(!istype(B, /obj/effect/blob/normal)) + src << "Unable to use this blob, find a normal one." + return + + if(!can_buy(10)) + return + + + B.change_to(/obj/effect/blob/shield) + return + + + +/mob/camera/blob/verb/create_resource() + set category = "Blob" + set name = "Create Resource Blob (40)" + set desc = "Create a resource tower which will generate points for you." + + + var/turf/T = get_turf(src) + + if(!T) + return + + var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) + + if(!B)//We are on a blob + src << "There is no blob here!" + return + + if(!istype(B, /obj/effect/blob/normal)) + src << "Unable to use this blob, find a normal one." + return + + for(var/obj/effect/blob/resource/blob in orange(4, T)) + src << "There is a resource blob nearby, move more than 4 tiles away from it!" + return + + if(!can_buy(40)) + return + + + B.change_to(/obj/effect/blob/resource) + var/obj/effect/blob/resource/R = locate() in T + if(R) + R.overmind = src + + return + +/mob/camera/blob/verb/create_node() + set category = "Blob" + set name = "Create Node Blob (60)" + set desc = "Create a Node." + + + var/turf/T = get_turf(src) + + if(!T) + return + + var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) + + if(!B)//We are on a blob + src << "There is no blob here!" + return + + if(!istype(B, /obj/effect/blob/normal)) + src << "Unable to use this blob, find a normal one." + return + + for(var/obj/effect/blob/node/blob in orange(5, T)) + src << "There is another node nearby, move more than 5 tiles away from it!" + return + + if(!can_buy(60)) + return + + + B.change_to(/obj/effect/blob/node) + return + + +/mob/camera/blob/verb/create_factory() + set category = "Blob" + set name = "Create Factory Blob (60)" + set desc = "Create a Spore producing blob." + + + var/turf/T = get_turf(src) + + if(!T) + return + + var/obj/effect/blob/B = locate(/obj/effect/blob) in T + if(!B) + src << "You must be on a blob!" + return + + if(!istype(B, /obj/effect/blob/normal)) + src << "Unable to use this blob, find a normal one." + return + + for(var/obj/effect/blob/factory/blob in orange(7, T)) + src << "There is a factory blob nearby, move more than 7 tiles away from it!" + return + + if(!can_buy(60)) + return + + B.change_to(/obj/effect/blob/factory) + return + + +/mob/camera/blob/verb/revert() + set category = "Blob" + set name = "Remove Blob" + set desc = "Removes a blob." + + var/turf/T = get_turf(src) + if(!T) + return + + var/obj/effect/blob/B = locate(/obj/effect/blob) in T + if(!B) + src << "You must be on a blob!" + return + + if(istype(B, /obj/effect/blob/core)) + src << "Unable to remove this blob." + return + + B.Destroy() + return + + +/mob/camera/blob/verb/expand_blob_power() + set category = "Blob" + set name = "Expand/Attack Blob (5)" + set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it." + + var/turf/T = get_turf(src) + expand_blob(T) + +/mob/camera/blob/proc/expand_blob(var/turf/T) + if(!T) + return + + var/obj/effect/blob/B = locate() in T + if(B) + src << "There is a blob here!" + return + + var/obj/effect/blob/OB = locate() in circlerange(T, 1) + if(!OB) + src << "There is no blob adjacent to you." + return + + if(!can_buy(5)) + return + OB.expand(T, 0) + return + + +/mob/camera/blob/verb/rally_spores_power() + set category = "Blob" + set name = "Rally Spores (5)" + set desc = "Rally the spores to move to your location." + + var/turf/T = get_turf(src) + rally_spores(T) + +/mob/camera/blob/proc/rally_spores(var/turf/T) + + if(!can_buy(5)) + return + + src << "You rally your spores." + + var/list/surrounding_turfs = block(locate(T.x - 1, T.y - 1, T.z), locate(T.x + 1, T.y + 1, T.z)) + if(!surrounding_turfs.len) + return + + for(var/mob/living/simple_animal/hostile/blobspore/BS in living_mob_list) + if(isturf(BS.loc) && get_dist(BS, T) <= 35) + BS.LoseTarget() + BS.Goto(pick(surrounding_turfs), BS.move_to_delay) return \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/game/gamemodes/changeling/changeling_power.dm index 6cae17bd2cc..8307aea0f2f 100644 --- a/code/game/gamemodes/changeling/changeling_power.dm +++ b/code/game/gamemodes/changeling/changeling_power.dm @@ -1,80 +1,80 @@ -/* - * Don't use the apostrophe in name or desc. Causes script errors. - * TODO: combine atleast some of the functionality with /proc_holder/spell - */ - -/obj/effect/proc_holder/changeling - panel = "Changeling" - name = "Prototype Sting" - desc = "" // Fluff - var/helptext = "" // Details - var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) - var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased - var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 - var/req_human = 0 //if you need to be human to use this ability - var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD - var/genetic_damage = 0 // genetic damage caused by using the sting. Nothing to do with cloneloss. - var/max_genetic_damage = 100 // hard counter for spamming abilities. Not used/balanced much yet. - - -/obj/effect/proc_holder/changeling/proc/on_purchase(var/mob/user) - return - -/obj/effect/proc_holder/changeling/Click() - var/mob/user = usr - if(!user || !user.mind || !user.mind.changeling) - return - try_to_sting(user) - -/obj/effect/proc_holder/changeling/proc/try_to_sting(var/mob/user, var/mob/target) - if(!can_sting(user, target)) - return - var/datum/changeling/c = user.mind.changeling - if(sting_action(user, target)) - sting_feedback(user, target) - take_chemical_cost(c) - -/obj/effect/proc_holder/changeling/proc/sting_action(var/mob/user, var/mob/target) - return 0 - -/obj/effect/proc_holder/changeling/proc/sting_feedback(var/mob/user, var/mob/target) - return 0 - -/obj/effect/proc_holder/changeling/proc/take_chemical_cost(var/datum/changeling/changeling) - changeling.chem_charges -= chemical_cost - changeling.geneticdamage += genetic_damage - -//Fairly important to remember to return 1 on success >.< -/obj/effect/proc_holder/changeling/proc/can_sting(var/mob/user, var/mob/target) - if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards - return 0 - if(req_human && !ishuman(user)) - user << "We cannot do that in this form!" - return 0 - var/datum/changeling/c = user.mind.changeling - if(c.chem_chargesWe require at least [chemical_cost] unit\s of chemicals to do that!" - return 0 - if(c.absorbedcountWe require at least [req_dna] sample\s of compatible DNA." - return 0 - if(req_stat < user.stat) - user << "We are incapacitated." - return 0 - if((user.status_flags & FAKEDEATH) && name!="Regenerate") - user << "We are incapacitated." - return 0 - if(c.geneticdamage > max_genetic_damage) - user << "Our genomes are still reassembling. We need time to recover first." - return 0 - return 1 - -//used in /mob/Stat() -/obj/effect/proc_holder/changeling/proc/can_be_used_by(var/mob/user) - if(!ishuman(user) && !ismonkey(user)) - return 0 - if(req_human && !ishuman(user)) - return 0 - return 1 - - +/* + * Don't use the apostrophe in name or desc. Causes script errors. + * TODO: combine atleast some of the functionality with /proc_holder/spell + */ + +/obj/effect/proc_holder/changeling + panel = "Changeling" + name = "Prototype Sting" + desc = "" // Fluff + var/helptext = "" // Details + var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) + var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased + var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 + var/req_human = 0 //if you need to be human to use this ability + var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD + var/genetic_damage = 0 // genetic damage caused by using the sting. Nothing to do with cloneloss. + var/max_genetic_damage = 100 // hard counter for spamming abilities. Not used/balanced much yet. + + +/obj/effect/proc_holder/changeling/proc/on_purchase(var/mob/user) + return + +/obj/effect/proc_holder/changeling/Click() + var/mob/user = usr + if(!user || !user.mind || !user.mind.changeling) + return + try_to_sting(user) + +/obj/effect/proc_holder/changeling/proc/try_to_sting(var/mob/user, var/mob/target) + if(!can_sting(user, target)) + return + var/datum/changeling/c = user.mind.changeling + if(sting_action(user, target)) + sting_feedback(user, target) + take_chemical_cost(c) + +/obj/effect/proc_holder/changeling/proc/sting_action(var/mob/user, var/mob/target) + return 0 + +/obj/effect/proc_holder/changeling/proc/sting_feedback(var/mob/user, var/mob/target) + return 0 + +/obj/effect/proc_holder/changeling/proc/take_chemical_cost(var/datum/changeling/changeling) + changeling.chem_charges -= chemical_cost + changeling.geneticdamage += genetic_damage + +//Fairly important to remember to return 1 on success >.< +/obj/effect/proc_holder/changeling/proc/can_sting(var/mob/user, var/mob/target) + if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards + return 0 + if(req_human && !ishuman(user)) + user << "We cannot do that in this form!" + return 0 + var/datum/changeling/c = user.mind.changeling + if(c.chem_chargesWe require at least [chemical_cost] unit\s of chemicals to do that!" + return 0 + if(c.absorbedcountWe require at least [req_dna] sample\s of compatible DNA." + return 0 + if(req_stat < user.stat) + user << "We are incapacitated." + return 0 + if((user.status_flags & FAKEDEATH) && name!="Regenerate") + user << "We are incapacitated." + return 0 + if(c.geneticdamage > max_genetic_damage) + user << "Our genomes are still reassembling. We need time to recover first." + return 0 + return 1 + +//used in /mob/Stat() +/obj/effect/proc_holder/changeling/proc/can_be_used_by(var/mob/user) + if(!ishuman(user) && !ismonkey(user)) + return 0 + if(req_human && !ishuman(user)) + return 0 + return 1 + + diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index dbbb06a6052..e1e257b9271 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -1,391 +1,391 @@ -var/list/sting_paths -// totally stolen from the new player panel. YAYY - -/obj/effect/proc_holder/changeling/evolution_menu - name = "-Evolution Menu-" //Dashes are so it's listed before all the other abilities. - desc = "Choose our method of subjugation." - dna_cost = 0 - -/obj/effect/proc_holder/changeling/evolution_menu/Click() - if(!usr || !usr.mind || !usr.mind.changeling) - return - var/datum/changeling/changeling = usr.mind.changeling - - if(!sting_paths) - sting_paths = init_paths(/obj/effect/proc_holder/changeling) - - var/dat = create_menu(changeling) - usr << browse(dat, "window=powers;size=600x700")//900x480 - - -/obj/effect/proc_holder/changeling/evolution_menu/proc/create_menu(var/datum/changeling/changeling) - var/dat - dat +="Changling Evolution Menu" - - //javascript, the part that does most of the work~ - dat += {" - - - - - - - "} - - //body tag start + onload and onkeypress (onkeyup) javascript event calls - dat += "" - - //title + search bar - dat += {" - - - - - - - - -
    - Changeling Evolution Menu
    - Hover over a power to see more information
    - Current ability choices remaining: [changeling.geneticpoints]
    - By rendering a lifeform to a husk, we gain enough power to alter and adapt our evolutions.
    - (Readapt)
    -

    -

    - Search: -
    - - "} - - //player table header - dat += {" - - "} - - var/i = 1 - for(var/path in sting_paths) - - var/obj/effect/proc_holder/changeling/P = new path() - if(P.dna_cost <= 0) //Let's skip the crap we start with. Keeps the evolution menu uncluttered. - continue - - var/ownsthis = changeling.has_sting(P) - - var/color - if(ownsthis) - if(i%2 == 0) - color = "#d8ebd8" - else - color = "#c3dec3" - else - if(i%2 == 0) - color = "#f2f2f2" - else - color = "#e6e6e6" - - - dat += {" - - - - - - "} - - i++ - - - //player table ending - dat += {" -
    - - - Evolve [P][ownsthis ? " - Purchased" : ((P.dna_cost > 1) ? " - Cost: [P.dna_cost]" : "")] - -
    -
    -
    - - - - "} - return dat - - -/obj/effect/proc_holder/changeling/evolution_menu/Topic(href, href_list) - ..() - if(!(iscarbon(usr) && usr.mind && usr.mind.changeling)) - return - - if(href_list["P"]) - usr.mind.changeling.purchasePower(usr, href_list["P"]) - else if(href_list["readapt"]) - usr.mind.changeling.lingRespec(usr) - var/dat = create_menu(usr.mind.changeling) - usr << browse(dat, "window=powers;size=600x700") -///// - -/datum/changeling/proc/purchasePower(var/mob/living/carbon/user, var/sting_name) - - var/obj/effect/proc_holder/changeling/thepower = null - - if(!sting_paths) - sting_paths = init_paths(/obj/effect/proc_holder/changeling) - for(var/path in sting_paths) - var/obj/effect/proc_holder/changeling/S = new path() - if(S.name == sting_name) - thepower = S - - if(thepower == null) - user << "This is awkward. Changeling power purchase failed, please report this bug to a coder!" - return - - if(has_sting(thepower)) - user << "We have already evolved this ability!" - return - - if(geneticpoints < thepower.dna_cost) - user << "We have reached our capacity for abilities." - return - - if(user.status_flags & FAKEDEATH)//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. - user << "We lack the energy to evolve new abilities right now." - return - - geneticpoints -= thepower.dna_cost - purchasedpowers += thepower - thepower.on_purchase(user) - -//Reselect powers -/datum/changeling/proc/lingRespec(var/mob/user) - if(canrespec) - user << "We have removed our evolutions from this form, and are now ready to readapt." - user.remove_changeling_powers(1) - canrespec = 0 - user.make_changeling() - return 1 - else - user << "You lack the power to readapt your evolutions!" - return 0 - -/mob/proc/make_changeling() - if(!mind) - return - if(!ishuman(src) && !ismonkey(src)) - return - if(!mind.changeling) - mind.changeling = new /datum/changeling(gender) - if(!sting_paths) - sting_paths = init_paths(/obj/effect/proc_holder/changeling) - if(mind.changeling.purchasedpowers) - remove_changeling_powers(1) - // purchase free powers. - for(var/path in sting_paths) - var/obj/effect/proc_holder/changeling/S = new path() - if(!S.dna_cost) - if(!mind.changeling.has_sting(S)) - mind.changeling.purchasedpowers+=S - S.on_purchase(src) - - var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste - mind.changeling.absorbed_dna |= C.dna - return 1 - -/datum/changeling/proc/reset() - chosen_sting = null - geneticpoints = initial(geneticpoints) - sting_range = initial(sting_range) - chem_storage = initial(chem_storage) - chem_recharge_rate = initial(chem_recharge_rate) - chem_charges = min(chem_charges, chem_storage) - mimicing = "" - -/mob/proc/remove_changeling_powers(var/keep_free_powers=0) - if(ishuman(src) || ismonkey(src)) - if(mind && mind.changeling) - digitalcamo = 0 - mind.changeling.reset() - for(var/obj/effect/proc_holder/changeling/p in mind.changeling.purchasedpowers) - if(!(p.dna_cost == 0 && keep_free_powers)) - mind.changeling.purchasedpowers -= p - if(hud_used) - hud_used.lingstingdisplay.icon_state = null - hud_used.lingstingdisplay.invisibility = 101 - -/datum/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) - for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) - if(power.name == P.name) - return 1 - return 0 +var/list/sting_paths +// totally stolen from the new player panel. YAYY + +/obj/effect/proc_holder/changeling/evolution_menu + name = "-Evolution Menu-" //Dashes are so it's listed before all the other abilities. + desc = "Choose our method of subjugation." + dna_cost = 0 + +/obj/effect/proc_holder/changeling/evolution_menu/Click() + if(!usr || !usr.mind || !usr.mind.changeling) + return + var/datum/changeling/changeling = usr.mind.changeling + + if(!sting_paths) + sting_paths = init_paths(/obj/effect/proc_holder/changeling) + + var/dat = create_menu(changeling) + usr << browse(dat, "window=powers;size=600x700")//900x480 + + +/obj/effect/proc_holder/changeling/evolution_menu/proc/create_menu(var/datum/changeling/changeling) + var/dat + dat +="Changling Evolution Menu" + + //javascript, the part that does most of the work~ + dat += {" + + + + + + + "} + + //body tag start + onload and onkeypress (onkeyup) javascript event calls + dat += "" + + //title + search bar + dat += {" + + + + + + + + +
    + Changeling Evolution Menu
    + Hover over a power to see more information
    + Current ability choices remaining: [changeling.geneticpoints]
    + By rendering a lifeform to a husk, we gain enough power to alter and adapt our evolutions.
    + (Readapt)
    +

    +

    + Search: +
    + + "} + + //player table header + dat += {" + + "} + + var/i = 1 + for(var/path in sting_paths) + + var/obj/effect/proc_holder/changeling/P = new path() + if(P.dna_cost <= 0) //Let's skip the crap we start with. Keeps the evolution menu uncluttered. + continue + + var/ownsthis = changeling.has_sting(P) + + var/color + if(ownsthis) + if(i%2 == 0) + color = "#d8ebd8" + else + color = "#c3dec3" + else + if(i%2 == 0) + color = "#f2f2f2" + else + color = "#e6e6e6" + + + dat += {" + + + + + + "} + + i++ + + + //player table ending + dat += {" +
    + + + Evolve [P][ownsthis ? " - Purchased" : ((P.dna_cost > 1) ? " - Cost: [P.dna_cost]" : "")] + +
    +
    +
    + + + + "} + return dat + + +/obj/effect/proc_holder/changeling/evolution_menu/Topic(href, href_list) + ..() + if(!(iscarbon(usr) && usr.mind && usr.mind.changeling)) + return + + if(href_list["P"]) + usr.mind.changeling.purchasePower(usr, href_list["P"]) + else if(href_list["readapt"]) + usr.mind.changeling.lingRespec(usr) + var/dat = create_menu(usr.mind.changeling) + usr << browse(dat, "window=powers;size=600x700") +///// + +/datum/changeling/proc/purchasePower(var/mob/living/carbon/user, var/sting_name) + + var/obj/effect/proc_holder/changeling/thepower = null + + if(!sting_paths) + sting_paths = init_paths(/obj/effect/proc_holder/changeling) + for(var/path in sting_paths) + var/obj/effect/proc_holder/changeling/S = new path() + if(S.name == sting_name) + thepower = S + + if(thepower == null) + user << "This is awkward. Changeling power purchase failed, please report this bug to a coder!" + return + + if(has_sting(thepower)) + user << "We have already evolved this ability!" + return + + if(geneticpoints < thepower.dna_cost) + user << "We have reached our capacity for abilities." + return + + if(user.status_flags & FAKEDEATH)//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. + user << "We lack the energy to evolve new abilities right now." + return + + geneticpoints -= thepower.dna_cost + purchasedpowers += thepower + thepower.on_purchase(user) + +//Reselect powers +/datum/changeling/proc/lingRespec(var/mob/user) + if(canrespec) + user << "We have removed our evolutions from this form, and are now ready to readapt." + user.remove_changeling_powers(1) + canrespec = 0 + user.make_changeling() + return 1 + else + user << "You lack the power to readapt your evolutions!" + return 0 + +/mob/proc/make_changeling() + if(!mind) + return + if(!ishuman(src) && !ismonkey(src)) + return + if(!mind.changeling) + mind.changeling = new /datum/changeling(gender) + if(!sting_paths) + sting_paths = init_paths(/obj/effect/proc_holder/changeling) + if(mind.changeling.purchasedpowers) + remove_changeling_powers(1) + // purchase free powers. + for(var/path in sting_paths) + var/obj/effect/proc_holder/changeling/S = new path() + if(!S.dna_cost) + if(!mind.changeling.has_sting(S)) + mind.changeling.purchasedpowers+=S + S.on_purchase(src) + + var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste + mind.changeling.absorbed_dna |= C.dna + return 1 + +/datum/changeling/proc/reset() + chosen_sting = null + geneticpoints = initial(geneticpoints) + sting_range = initial(sting_range) + chem_storage = initial(chem_storage) + chem_recharge_rate = initial(chem_recharge_rate) + chem_charges = min(chem_charges, chem_storage) + mimicing = "" + +/mob/proc/remove_changeling_powers(var/keep_free_powers=0) + if(ishuman(src) || ismonkey(src)) + if(mind && mind.changeling) + digitalcamo = 0 + mind.changeling.reset() + for(var/obj/effect/proc_holder/changeling/p in mind.changeling.purchasedpowers) + if(!(p.dna_cost == 0 && keep_free_powers)) + mind.changeling.purchasedpowers -= p + if(hud_used) + hud_used.lingstingdisplay.icon_state = null + hud_used.lingstingdisplay.invisibility = 101 + +/datum/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) + for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) + if(power.name == P.name) + return 1 + return 0 diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index e873ec7c4ba..946ca14f8c4 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -1,96 +1,96 @@ -/obj/effect/proc_holder/changeling/absorbDNA - name = "Absorb DNA" - desc = "Absorb the DNA of our victim." - chemical_cost = 0 - dna_cost = 0 - req_human = 1 - max_genetic_damage = 100 - -/obj/effect/proc_holder/changeling/absorbDNA/can_sting(var/mob/living/carbon/user) - if(!..()) - return - - var/datum/changeling/changeling = user.mind.changeling - if(changeling.isabsorbing) - user << "We are already absorbing!" - return - - var/obj/item/weapon/grab/G = user.get_active_hand() - if(!istype(G)) - user << "We must be grabbing a creature in our active hand to absorb them." - return - if(G.state <= GRAB_NECK) - user << "We must have a tighter grip to absorb this creature." - return - - var/mob/living/carbon/target = G.affecting - return changeling.can_absorb_dna(user,target) - - - -/obj/effect/proc_holder/changeling/absorbDNA/sting_action(var/mob/user) - var/datum/changeling/changeling = user.mind.changeling - var/obj/item/weapon/grab/G = user.get_active_hand() - var/mob/living/carbon/human/target = G.affecting - for(var/stage = 1, stage<=3, stage++) - switch(stage) - if(1) - user << "This creature is compatible. We must hold still..." - if(2) - user << "We extend a proboscis." - user.visible_message("[user] extends a proboscis!") - if(3) - user << "We stab [target] with the proboscis." - user.visible_message("[user] stabs [target] with the proboscis!") - target << "You feel a sharp stabbing pain!" - target.take_overall_damage(40) - - feedback_add_details("changeling_powers","A[stage]") - if(!do_mob(user, target, 150)) - user << "Our absorption of [target] has been interrupted!" - changeling.isabsorbing = 0 - return - - user << "We have absorbed [target]!" - user.visible_message("[user] sucks the fluids from [target]!") - target << "You have been absorbed by the changeling!" - - changeling.absorb_dna(target) - - if(user.nutrition < 400) user.nutrition = min((user.nutrition + target.nutrition), 400) - - if(target.mind)//if the victim has got a mind - - target.mind.show_memory(src, 0) //I can read your mind, kekeke. Output all their notes. - - if(target.mind.changeling)//If the target was a changeling, suck out their extra juice and objective points! - changeling.chem_charges += min(target.mind.changeling.chem_charges, changeling.chem_storage) - changeling.absorbedcount += target.mind.changeling.absorbedcount - - target.mind.changeling.absorbed_dna.len = 1 - target.mind.changeling.absorbedcount = 0 - else - changeling.chem_charges += 10 - - changeling.isabsorbing = 0 - changeling.canrespec = 1 - - target.death(0) - target.Drain() - return 1 - - - -//Absorbs the target DNA. -/datum/changeling/proc/absorb_dna(mob/living/carbon/T) - if(absorbed_dna.len) - absorbed_dna.Cut(1,2) - T.dna.real_name = T.real_name //Set this again, just to be sure that it's properly set. - var/datum/dna/new_dna = new T.dna.type - new_dna.uni_identity = T.dna.uni_identity - new_dna.struc_enzymes = T.dna.struc_enzymes - new_dna.real_name = T.dna.real_name - new_dna.mutantrace = T.dna.mutantrace - new_dna.blood_type = T.dna.blood_type - absorbed_dna |= new_dna //And add the target DNA to our absorbed list. +/obj/effect/proc_holder/changeling/absorbDNA + name = "Absorb DNA" + desc = "Absorb the DNA of our victim." + chemical_cost = 0 + dna_cost = 0 + req_human = 1 + max_genetic_damage = 100 + +/obj/effect/proc_holder/changeling/absorbDNA/can_sting(var/mob/living/carbon/user) + if(!..()) + return + + var/datum/changeling/changeling = user.mind.changeling + if(changeling.isabsorbing) + user << "We are already absorbing!" + return + + var/obj/item/weapon/grab/G = user.get_active_hand() + if(!istype(G)) + user << "We must be grabbing a creature in our active hand to absorb them." + return + if(G.state <= GRAB_NECK) + user << "We must have a tighter grip to absorb this creature." + return + + var/mob/living/carbon/target = G.affecting + return changeling.can_absorb_dna(user,target) + + + +/obj/effect/proc_holder/changeling/absorbDNA/sting_action(var/mob/user) + var/datum/changeling/changeling = user.mind.changeling + var/obj/item/weapon/grab/G = user.get_active_hand() + var/mob/living/carbon/human/target = G.affecting + for(var/stage = 1, stage<=3, stage++) + switch(stage) + if(1) + user << "This creature is compatible. We must hold still..." + if(2) + user << "We extend a proboscis." + user.visible_message("[user] extends a proboscis!") + if(3) + user << "We stab [target] with the proboscis." + user.visible_message("[user] stabs [target] with the proboscis!") + target << "You feel a sharp stabbing pain!" + target.take_overall_damage(40) + + feedback_add_details("changeling_powers","A[stage]") + if(!do_mob(user, target, 150)) + user << "Our absorption of [target] has been interrupted!" + changeling.isabsorbing = 0 + return + + user << "We have absorbed [target]!" + user.visible_message("[user] sucks the fluids from [target]!") + target << "You have been absorbed by the changeling!" + + changeling.absorb_dna(target) + + if(user.nutrition < 400) user.nutrition = min((user.nutrition + target.nutrition), 400) + + if(target.mind)//if the victim has got a mind + + target.mind.show_memory(src, 0) //I can read your mind, kekeke. Output all their notes. + + if(target.mind.changeling)//If the target was a changeling, suck out their extra juice and objective points! + changeling.chem_charges += min(target.mind.changeling.chem_charges, changeling.chem_storage) + changeling.absorbedcount += target.mind.changeling.absorbedcount + + target.mind.changeling.absorbed_dna.len = 1 + target.mind.changeling.absorbedcount = 0 + else + changeling.chem_charges += 10 + + changeling.isabsorbing = 0 + changeling.canrespec = 1 + + target.death(0) + target.Drain() + return 1 + + + +//Absorbs the target DNA. +/datum/changeling/proc/absorb_dna(mob/living/carbon/T) + if(absorbed_dna.len) + absorbed_dna.Cut(1,2) + T.dna.real_name = T.real_name //Set this again, just to be sure that it's properly set. + var/datum/dna/new_dna = new T.dna.type + new_dna.uni_identity = T.dna.uni_identity + new_dna.struc_enzymes = T.dna.struc_enzymes + new_dna.real_name = T.dna.real_name + new_dna.mutantrace = T.dna.mutantrace + new_dna.blood_type = T.dna.blood_type + absorbed_dna |= new_dna //And add the target DNA to our absorbed list. absorbedcount++ //all that done, let's increment the objective counter. \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/digitalcamo.dm b/code/game/gamemodes/changeling/powers/digitalcamo.dm index 92ae8e7781e..d63e5777f79 100644 --- a/code/game/gamemodes/changeling/powers/digitalcamo.dm +++ b/code/game/gamemodes/changeling/powers/digitalcamo.dm @@ -1,17 +1,17 @@ -/obj/effect/proc_holder/changeling/digitalcamo - name = "Digital Camouflage" - desc = "By evolving the ability to distort our form and proprotions, we defeat common altgorithms used to detect lifeforms on cameras." - helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us... uncanny." - dna_cost = 1 - -//Prevents AIs tracking you but makes you easily detectable to the human-eye. -/obj/effect/proc_holder/changeling/digitalcamo/sting_action(var/mob/user) - - if(user.digitalcamo) - user << "We return to normal." - else - user << "We distort our form to prevent AI-tracking." - user.digitalcamo = !user.digitalcamo - - feedback_add_details("changeling_powers","CAM") - return 1 +/obj/effect/proc_holder/changeling/digitalcamo + name = "Digital Camouflage" + desc = "By evolving the ability to distort our form and proprotions, we defeat common altgorithms used to detect lifeforms on cameras." + helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us... uncanny." + dna_cost = 1 + +//Prevents AIs tracking you but makes you easily detectable to the human-eye. +/obj/effect/proc_holder/changeling/digitalcamo/sting_action(var/mob/user) + + if(user.digitalcamo) + user << "We return to normal." + else + user << "We distort our form to prevent AI-tracking." + user.digitalcamo = !user.digitalcamo + + feedback_add_details("changeling_powers","CAM") + return 1 diff --git a/code/game/gamemodes/changeling/powers/epinephrine.dm b/code/game/gamemodes/changeling/powers/epinephrine.dm index 19b809a54ce..20fe4a677b9 100644 --- a/code/game/gamemodes/changeling/powers/epinephrine.dm +++ b/code/game/gamemodes/changeling/powers/epinephrine.dm @@ -1,26 +1,26 @@ -/obj/effect/proc_holder/changeling/epinephrine - name = "Epinephrine Overdose" - desc = "We evolve additional sacs of adrenaline throughout our body." - helptext = "Removes all stuns instantly and adds a short-term reduction in further stuns. Can be used while unconscious. Continued use poisons the body." - chemical_cost = 30 - dna_cost = 1 - req_human = 1 - req_stat = UNCONSCIOUS - -//Recover from stuns. -/obj/effect/proc_holder/changeling/epinephrine/sting_action(var/mob/user) - - if(user.lying) - user << "We arise." - else - user << "Adrenaline rushes through us." - user.stat = 0 - user.SetParalysis(0) - user.SetStunned(0) - user.SetWeakened(0) - user.lying = 0 - user.update_canmove() - user.reagents.add_reagent("synaptizine", 20) - - feedback_add_details("changeling_powers","UNS") - return 1 +/obj/effect/proc_holder/changeling/epinephrine + name = "Epinephrine Overdose" + desc = "We evolve additional sacs of adrenaline throughout our body." + helptext = "Removes all stuns instantly and adds a short-term reduction in further stuns. Can be used while unconscious. Continued use poisons the body." + chemical_cost = 30 + dna_cost = 1 + req_human = 1 + req_stat = UNCONSCIOUS + +//Recover from stuns. +/obj/effect/proc_holder/changeling/epinephrine/sting_action(var/mob/user) + + if(user.lying) + user << "We arise." + else + user << "Adrenaline rushes through us." + user.stat = 0 + user.SetParalysis(0) + user.SetStunned(0) + user.SetWeakened(0) + user.lying = 0 + user.update_canmove() + user.reagents.add_reagent("synaptizine", 20) + + feedback_add_details("changeling_powers","UNS") + return 1 diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm index df6f4424b70..ad0cb2bbfe1 100644 --- a/code/game/gamemodes/changeling/powers/fakedeath.dm +++ b/code/game/gamemodes/changeling/powers/fakedeath.dm @@ -1,35 +1,35 @@ -/obj/effect/proc_holder/changeling/fakedeath - name = "Regenerative Stasis" - desc = "We fall into a stasis, allowing us to regenerate." - chemical_cost = 10 - dna_cost = 0 - req_stat = DEAD - max_genetic_damage = 100 - - -//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. -/obj/effect/proc_holder/changeling/fakedeath/sting_action(var/mob/living/user) - - user << "We begin our stasis, preparing energy to arise once more." - - user.status_flags |= FAKEDEATH //play dead - user.update_canmove() - - if(user.stat != DEAD) - user.emote("deathgasp") - user.tod = worldtime2text() - - spawn(800) - if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers) - user << "We are ready to regenerate." - user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) - - feedback_add_details("changeling_powers","FD") - return 1 - -/obj/effect/proc_holder/changeling/fakedeath/can_sting(var/mob/user) - if(user.status_flags & FAKEDEATH) - return - if(!user.stat && alert("Are we sure we wish to fake our death?",,"Yes","No") == "No")//Confirmation for living changelings if they want to fake their death - return +/obj/effect/proc_holder/changeling/fakedeath + name = "Regenerative Stasis" + desc = "We fall into a stasis, allowing us to regenerate." + chemical_cost = 10 + dna_cost = 0 + req_stat = DEAD + max_genetic_damage = 100 + + +//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. +/obj/effect/proc_holder/changeling/fakedeath/sting_action(var/mob/living/user) + + user << "We begin our stasis, preparing energy to arise once more." + + user.status_flags |= FAKEDEATH //play dead + user.update_canmove() + + if(user.stat != DEAD) + user.emote("deathgasp") + user.tod = worldtime2text() + + spawn(800) + if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers) + user << "We are ready to regenerate." + user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) + + feedback_add_details("changeling_powers","FD") + return 1 + +/obj/effect/proc_holder/changeling/fakedeath/can_sting(var/mob/user) + if(user.status_flags & FAKEDEATH) + return + if(!user.stat && alert("Are we sure we wish to fake our death?",,"Yes","No") == "No")//Confirmation for living changelings if they want to fake their death + return return ..() \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index b9448dabd18..9f67ef05d84 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -1,20 +1,20 @@ -/obj/effect/proc_holder/changeling/fleshmend - name = "Fleshmend" - desc = "Our flesh rapidly regenerates, healing our wounds." - helptext = "Heals a moderate amount of damage over a short period of time. Can be used while unconscious." - chemical_cost = 30 - dna_cost = 1 - req_stat = UNCONSCIOUS - -//Starts healing you every second for 10 seconds. Can be used whilst unconscious. -/obj/effect/proc_holder/changeling/fleshmend/sting_action(var/mob/living/user) - user << "We begin to heal rapidly." - spawn(0) - for(var/i = 0, i<10,i++) - user.adjustBruteLoss(-10) - user.adjustOxyLoss(-10) - user.adjustFireLoss(-10) - sleep(10) - - feedback_add_details("changeling_powers","RR") +/obj/effect/proc_holder/changeling/fleshmend + name = "Fleshmend" + desc = "Our flesh rapidly regenerates, healing our wounds." + helptext = "Heals a moderate amount of damage over a short period of time. Can be used while unconscious." + chemical_cost = 30 + dna_cost = 1 + req_stat = UNCONSCIOUS + +//Starts healing you every second for 10 seconds. Can be used whilst unconscious. +/obj/effect/proc_holder/changeling/fleshmend/sting_action(var/mob/living/user) + user << "We begin to heal rapidly." + spawn(0) + for(var/i = 0, i<10,i++) + user.adjustBruteLoss(-10) + user.adjustOxyLoss(-10) + user.adjustFireLoss(-10) + sleep(10) + + feedback_add_details("changeling_powers","RR") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/glands.dm b/code/game/gamemodes/changeling/powers/glands.dm index 861a4f28e98..b6f6aaf5e47 100644 --- a/code/game/gamemodes/changeling/powers/glands.dm +++ b/code/game/gamemodes/changeling/powers/glands.dm @@ -1,13 +1,13 @@ -/obj/effect/proc_holder/changeling/glands - name = "Engorged Chemical Glands" - desc = "Our chemical glands swell, permitting us to store more chemicals inside of them." - helptext = "Allows us to store an extra 25 units of chemicals, and doubles production rate." - dna_cost = 1 - chemical_cost = -1 - -/obj/effect/proc_holder/changeling/glands/on_purchase(var/mob/user) - ..() - var/datum/changeling/changeling=user.mind.changeling - changeling.chem_storage += 25 - changeling.chem_recharge_rate *=2 +/obj/effect/proc_holder/changeling/glands + name = "Engorged Chemical Glands" + desc = "Our chemical glands swell, permitting us to store more chemicals inside of them." + helptext = "Allows us to store an extra 25 units of chemicals, and doubles production rate." + dna_cost = 1 + chemical_cost = -1 + +/obj/effect/proc_holder/changeling/glands/on_purchase(var/mob/user) + ..() + var/datum/changeling/changeling=user.mind.changeling + changeling.chem_storage += 25 + changeling.chem_recharge_rate *=2 return \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/game/gamemodes/changeling/powers/hivemind.dm index 5446f36847f..3f9aa14b702 100644 --- a/code/game/gamemodes/changeling/powers/hivemind.dm +++ b/code/game/gamemodes/changeling/powers/hivemind.dm @@ -1,71 +1,71 @@ -// HIVE MIND UPLOAD/DOWNLOAD DNA -var/list/datum/dna/hivemind_bank = list() - -/obj/effect/proc_holder/changeling/hivemind_upload - name = "Hive Channel" - desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." - chemical_cost = 10 - dna_cost = 0 - -/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/user) - var/datum/changeling/changeling = user.mind.changeling - var/list/names = list() - for(var/datum/dna/DNA in changeling.absorbed_dna) - if(!(DNA in hivemind_bank)) - names += DNA.real_name - - if(names.len <= 0) - user << "The airwaves already have all of our DNA." - return - - var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/dna/chosen_dna = changeling.get_dna(chosen_name) - if(!chosen_dna) - return - - hivemind_bank += chosen_dna - user << "We channel the DNA of [chosen_name] to the air." - feedback_add_details("changeling_powers","HU") - return 1 - -/obj/effect/proc_holder/changeling/hivemind_download - name = "Hive Absorb" - desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." - chemical_cost = 20 - dna_cost = 0 - -/obj/effect/proc_holder/changeling/hivemind_download/can_sting(var/mob/living/carbon/user) - if(!..()) - return - var/datum/changeling/changeling = user.mind.changeling - if(changeling.absorbed_dna[1] == user.dna)//If our current DNA is the stalest, we gotta ditch it. - user << "We have reached our capacity to store genetic information! We must transform before absorbing more." - return - return 1 - -/obj/effect/proc_holder/changeling/hivemind_download/sting_action(var/mob/user) - var/datum/changeling/changeling = user.mind.changeling - var/list/names = list() - for(var/datum/dna/DNA in hivemind_bank) - if(!(DNA in changeling.absorbed_dna)) - names[DNA.real_name] = DNA - - if(names.len <= 0) - user << "There's no new DNA to absorb from the air." - return - - var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names - if(!S) return - var/datum/dna/chosen_dna = names[S] - if(!chosen_dna) - return - - if(changeling.absorbed_dna.len) - changeling.absorbed_dna.Cut(1,2) - changeling.absorbed_dna |= chosen_dna - user << "We absorb the DNA of [S] from the air." - feedback_add_details("changeling_powers","HD") +// HIVE MIND UPLOAD/DOWNLOAD DNA +var/list/datum/dna/hivemind_bank = list() + +/obj/effect/proc_holder/changeling/hivemind_upload + name = "Hive Channel" + desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." + chemical_cost = 10 + dna_cost = 0 + +/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/user) + var/datum/changeling/changeling = user.mind.changeling + var/list/names = list() + for(var/datum/dna/DNA in changeling.absorbed_dna) + if(!(DNA in hivemind_bank)) + names += DNA.real_name + + if(names.len <= 0) + user << "The airwaves already have all of our DNA." + return + + var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/dna/chosen_dna = changeling.get_dna(chosen_name) + if(!chosen_dna) + return + + hivemind_bank += chosen_dna + user << "We channel the DNA of [chosen_name] to the air." + feedback_add_details("changeling_powers","HU") + return 1 + +/obj/effect/proc_holder/changeling/hivemind_download + name = "Hive Absorb" + desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." + chemical_cost = 20 + dna_cost = 0 + +/obj/effect/proc_holder/changeling/hivemind_download/can_sting(var/mob/living/carbon/user) + if(!..()) + return + var/datum/changeling/changeling = user.mind.changeling + if(changeling.absorbed_dna[1] == user.dna)//If our current DNA is the stalest, we gotta ditch it. + user << "We have reached our capacity to store genetic information! We must transform before absorbing more." + return + return 1 + +/obj/effect/proc_holder/changeling/hivemind_download/sting_action(var/mob/user) + var/datum/changeling/changeling = user.mind.changeling + var/list/names = list() + for(var/datum/dna/DNA in hivemind_bank) + if(!(DNA in changeling.absorbed_dna)) + names[DNA.real_name] = DNA + + if(names.len <= 0) + user << "There's no new DNA to absorb from the air." + return + + var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names + if(!S) return + var/datum/dna/chosen_dna = names[S] + if(!chosen_dna) + return + + if(changeling.absorbed_dna.len) + changeling.absorbed_dna.Cut(1,2) + changeling.absorbed_dna |= chosen_dna + user << "We absorb the DNA of [S] from the air." + feedback_add_details("changeling_powers","HD") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm index cd9a6620bd6..06c59138291 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/game/gamemodes/changeling/powers/humanform.dm @@ -1,33 +1,33 @@ -/obj/effect/proc_holder/changeling/humanform - name = "Human form" - desc = "We change into a human." - chemical_cost = 5 - genetic_damage = 3 - req_dna = 1 - max_genetic_damage = 3 - -//Transform into a human. -/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/user) - var/datum/changeling/changeling = user.mind.changeling - var/list/names = list() - for(var/datum/dna/DNA in changeling.absorbed_dna) - names += "[DNA.real_name]" - - var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/dna/chosen_dna = changeling.get_dna(chosen_name) - if(!chosen_dna) - return - - user << "We transform our appearance." - user.dna = chosen_dna - - user.humanize((TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSRC),chosen_dna.real_name) - - changeling.purchasedpowers -= src - feedback_add_details("changeling_powers","LFT") - qdel(user) - return 1 - +/obj/effect/proc_holder/changeling/humanform + name = "Human form" + desc = "We change into a human." + chemical_cost = 5 + genetic_damage = 3 + req_dna = 1 + max_genetic_damage = 3 + +//Transform into a human. +/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/user) + var/datum/changeling/changeling = user.mind.changeling + var/list/names = list() + for(var/datum/dna/DNA in changeling.absorbed_dna) + names += "[DNA.real_name]" + + var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/dna/chosen_dna = changeling.get_dna(chosen_name) + if(!chosen_dna) + return + + user << "We transform our appearance." + user.dna = chosen_dna + + user.humanize((TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSRC),chosen_dna.real_name) + + changeling.purchasedpowers -= src + feedback_add_details("changeling_powers","LFT") + qdel(user) + return 1 + diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index 33f96e6a6df..1b46d1aca9d 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -1,18 +1,18 @@ -/obj/effect/proc_holder/changeling/lesserform - name = "Lesser form" - desc = "We debase ourselves and become lesser. We become a monkey." - chemical_cost = 5 - dna_cost = 1 - genetic_damage = 3 - req_human = 1 - -//Transform into a monkey. -/obj/effect/proc_holder/changeling/lesserform/sting_action(var/mob/living/carbon/human/user) - user << "Our genes cry out!" - - var/mob/living/carbon/monkey/O = user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC) - - O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) - feedback_add_details("changeling_powers","LF") - .=1 - qdel(user) +/obj/effect/proc_holder/changeling/lesserform + name = "Lesser form" + desc = "We debase ourselves and become lesser. We become a monkey." + chemical_cost = 5 + dna_cost = 1 + genetic_damage = 3 + req_human = 1 + +//Transform into a monkey. +/obj/effect/proc_holder/changeling/lesserform/sting_action(var/mob/living/carbon/human/user) + user << "Our genes cry out!" + + var/mob/living/carbon/monkey/O = user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC) + + O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) + feedback_add_details("changeling_powers","LF") + .=1 + qdel(user) diff --git a/code/game/gamemodes/changeling/powers/mimic_voice.dm b/code/game/gamemodes/changeling/powers/mimic_voice.dm index 6bf264e3e24..bb8ed8e6ea6 100644 --- a/code/game/gamemodes/changeling/powers/mimic_voice.dm +++ b/code/game/gamemodes/changeling/powers/mimic_voice.dm @@ -1,28 +1,28 @@ -/obj/effect/proc_holder/changeling/mimicvoice - name = "Mimic Voice" - desc = "We shape our vocal glands to sound like a desired voice." - helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." - chemical_cost = 0 //constant chemical drain hardcoded - dna_cost = 1 - req_human = 1 - - -// Fake Voice -/obj/effect/proc_holder/changeling/mimicvoice/sting_action(var/mob/user) - var/datum/changeling/changeling=user.mind.changeling - if(changeling.mimicing) - changeling.mimicing = "" - changeling.chem_recharge_slowdown -= 0.5 - user << "We return our vocal glands to their original position." - return - - var/mimic_voice = input("Enter a name to mimic.", "Mimic Voice", null) as text - if(!mimic_voice) - return - - changeling.mimicing = mimic_voice - changeling.chem_recharge_slowdown += 0.5 - user << "We shape our glands to take the voice of [mimic_voice], this will stop us from regenerating chemicals while active." - user << "Use this power again to return to our original voice and reproduce chemicals again." - +/obj/effect/proc_holder/changeling/mimicvoice + name = "Mimic Voice" + desc = "We shape our vocal glands to sound like a desired voice." + helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." + chemical_cost = 0 //constant chemical drain hardcoded + dna_cost = 1 + req_human = 1 + + +// Fake Voice +/obj/effect/proc_holder/changeling/mimicvoice/sting_action(var/mob/user) + var/datum/changeling/changeling=user.mind.changeling + if(changeling.mimicing) + changeling.mimicing = "" + changeling.chem_recharge_slowdown -= 0.5 + user << "We return our vocal glands to their original position." + return + + var/mimic_voice = input("Enter a name to mimic.", "Mimic Voice", null) as text + if(!mimic_voice) + return + + changeling.mimicing = mimic_voice + changeling.chem_recharge_slowdown += 0.5 + user << "We shape our glands to take the voice of [mimic_voice], this will stop us from regenerating chemicals while active." + user << "Use this power again to return to our original voice and reproduce chemicals again." + feedback_add_details("changeling_powers","MV") \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 11c824b5c2b..6ab4db1fe08 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -1,170 +1,170 @@ -/* - Changeling Mutations! ~By Miauw - Contains: - Arm Blade - Space Suit - TODO: - Shield - Armor -*/ - -/obj/effect/proc_holder/changeling/arm_blade - name = "Arm Blade" - desc = "We reform one of our arms into a deadly blade." - helptext = "Cannot be used while in lesser form." - chemical_cost = 20 - dna_cost = 1 - genetic_damage = 8 - req_human = 1 - - -/obj/effect/proc_holder/changeling/arm_blade/try_to_sting(var/mob/user, var/mob/target) - if(istype(user.l_hand, /obj/item/weapon/melee/arm_blade)) //Not the nicest way to do it, but eh - qdel(user.l_hand) - user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!") - -/obj/item/weapon/melee/arm_blade/dropped(mob/user) - visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "" - return - - else if(A.locked) - user << "The airlock's bolts prevent it from being forced." - return - - else - //user.say("Heeeeeeeeeerrre's Johnny!") - user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.") - A.open(1) - -//Space Suit & Helmet -/obj/effect/proc_holder/changeling/organic_space_suit - name = "Organic Space Suit" - desc = "We grow an organic suit to protect ourselves from space exposure." - helptext = "We must constantly repair our form to make it space-proof, reducing chemical production while we are protected. Retreating the suit damages our genomes. Cannot be used in lesser form." - chemical_cost = 20 - dna_cost = 1 - genetic_damage = 8 - req_human = 1 - -/obj/effect/proc_holder/changeling/organic_space_suit/try_to_sting(var/mob/user, var/mob/target) - var/datum/changeling/changeling = user.mind.changeling - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - if(changeling.space_suit_active) - changeling.space_suit_active = 0 - H.visible_message("[H] casts off their flesh shell!", "We cast off our protective organic shell, temporarily weakening our genomes.", "You hear the organic matter ripping and tearing!") - qdel(H.wear_suit) - qdel(H.head) - H.update_inv_wear_suit() - H.update_inv_head() - H.update_hair() - - var/turf/simulated/T = get_turf(H) - if(istype(T)) - T.add_blood(H) //So real blood decals - playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds - changeling.geneticdamage += 8 //Casting off a space suit leaves you weak for a few seconds. - changeling.chem_recharge_slowdown -= 0.5 - return - ..(H, target) - -/obj/effect/proc_holder/changeling/organic_space_suit/sting_action(var/mob/living/carbon/human/user) - if(!user.canUnEquip(user.wear_suit)) - user << "\the [user.wear_suit] is stuck to your body, you cannot grow a space suit over it!" - return - if(!user.canUnEquip(user.head)) - user << "\the [user.head] is stuck on your head, you cannot grow a space helmet over it!" - return - user.unEquip(user.head) - user.unEquip(user.wear_suit) - user.equip_to_slot_if_possible(new /obj/item/clothing/suit/space/changeling(user), slot_wear_suit, 1, 1, 1) - user.equip_to_slot_if_possible(new /obj/item/clothing/head/helmet/space/changeling(user), slot_head, 1, 1, 1) - user.visible_message("[user]'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!") - var/datum/changeling/changeling = user.mind.changeling - changeling.space_suit_active = 1 - changeling.chem_recharge_slowdown +=0.5 - return 1 - -/obj/item/clothing/suit/space/changeling - name = "flesh mass" - icon_state = "lingspacesuit" - desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." - flags = STOPSPRESSUREDMAGE | NODROP //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/tank/oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all. - -/obj/item/clothing/suit/space/changeling/New() - processing_objects += src - -/obj/item/clothing/suit/space/changeling/dropped() - qdel(src) - -/obj/item/clothing/suit/space/changeling/process() - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - H.reagents.add_reagent("dexalinp", REAGENTS_METABOLISM) - -/obj/item/clothing/head/helmet/space/changeling - name = "flesh mass" - icon_state = "lingspacehelmet" - desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL. - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - -/obj/item/clothing/head/helmet/space/changeling/dropped() - qdel(src) +/* + Changeling Mutations! ~By Miauw + Contains: + Arm Blade + Space Suit + TODO: + Shield + Armor +*/ + +/obj/effect/proc_holder/changeling/arm_blade + name = "Arm Blade" + desc = "We reform one of our arms into a deadly blade." + helptext = "Cannot be used while in lesser form." + chemical_cost = 20 + dna_cost = 1 + genetic_damage = 8 + req_human = 1 + + +/obj/effect/proc_holder/changeling/arm_blade/try_to_sting(var/mob/user, var/mob/target) + if(istype(user.l_hand, /obj/item/weapon/melee/arm_blade)) //Not the nicest way to do it, but eh + qdel(user.l_hand) + user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!") + +/obj/item/weapon/melee/arm_blade/dropped(mob/user) + visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate our blade into our body", "" + return + + else if(A.locked) + user << "The airlock's bolts prevent it from being forced." + return + + else + //user.say("Heeeeeeeeeerrre's Johnny!") + user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.") + A.open(1) + +//Space Suit & Helmet +/obj/effect/proc_holder/changeling/organic_space_suit + name = "Organic Space Suit" + desc = "We grow an organic suit to protect ourselves from space exposure." + helptext = "We must constantly repair our form to make it space-proof, reducing chemical production while we are protected. Retreating the suit damages our genomes. Cannot be used in lesser form." + chemical_cost = 20 + dna_cost = 1 + genetic_damage = 8 + req_human = 1 + +/obj/effect/proc_holder/changeling/organic_space_suit/try_to_sting(var/mob/user, var/mob/target) + var/datum/changeling/changeling = user.mind.changeling + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(changeling.space_suit_active) + changeling.space_suit_active = 0 + H.visible_message("[H] casts off their flesh shell!", "We cast off our protective organic shell, temporarily weakening our genomes.", "You hear the organic matter ripping and tearing!") + qdel(H.wear_suit) + qdel(H.head) + H.update_inv_wear_suit() + H.update_inv_head() + H.update_hair() + + var/turf/simulated/T = get_turf(H) + if(istype(T)) + T.add_blood(H) //So real blood decals + playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds + changeling.geneticdamage += 8 //Casting off a space suit leaves you weak for a few seconds. + changeling.chem_recharge_slowdown -= 0.5 + return + ..(H, target) + +/obj/effect/proc_holder/changeling/organic_space_suit/sting_action(var/mob/living/carbon/human/user) + if(!user.canUnEquip(user.wear_suit)) + user << "\the [user.wear_suit] is stuck to your body, you cannot grow a space suit over it!" + return + if(!user.canUnEquip(user.head)) + user << "\the [user.head] is stuck on your head, you cannot grow a space helmet over it!" + return + user.unEquip(user.head) + user.unEquip(user.wear_suit) + user.equip_to_slot_if_possible(new /obj/item/clothing/suit/space/changeling(user), slot_wear_suit, 1, 1, 1) + user.equip_to_slot_if_possible(new /obj/item/clothing/head/helmet/space/changeling(user), slot_head, 1, 1, 1) + user.visible_message("[user]'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!") + var/datum/changeling/changeling = user.mind.changeling + changeling.space_suit_active = 1 + changeling.chem_recharge_slowdown +=0.5 + return 1 + +/obj/item/clothing/suit/space/changeling + name = "flesh mass" + icon_state = "lingspacesuit" + desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." + flags = STOPSPRESSUREDMAGE | NODROP //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/tank/oxygen) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all. + +/obj/item/clothing/suit/space/changeling/New() + processing_objects += src + +/obj/item/clothing/suit/space/changeling/dropped() + qdel(src) + +/obj/item/clothing/suit/space/changeling/process() + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.reagents.add_reagent("dexalinp", REAGENTS_METABOLISM) + +/obj/item/clothing/head/helmet/space/changeling + name = "flesh mass" + icon_state = "lingspacehelmet" + desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." + flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL. + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/head/helmet/space/changeling/dropped() + qdel(src) diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index d3b4f724a02..d18d2e33a7a 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -1,21 +1,21 @@ -/obj/effect/proc_holder/changeling/panacea - name = "Anatomic Panacea" - desc = "Expels impurifications from our form; curing diseases, genetic disabilities, and removing toxins and radiation." - helptext = "Can be used while unconscious." - chemical_cost = 25 - dna_cost = 1 - req_stat = UNCONSCIOUS - -//Heals the things that the other regenerative abilities don't. -/obj/effect/proc_holder/changeling/panacea/sting_action(var/mob/user) - - user << "We cleanse impurities from our form." - user.reagents.add_reagent("ryetalyn", 10) - user.reagents.add_reagent("hyronalin", 10) - user.reagents.add_reagent("anti_toxin", 20) - - for(var/datum/disease/D in user.viruses) - D.cure() - - feedback_add_details("changeling_powers","AP") +/obj/effect/proc_holder/changeling/panacea + name = "Anatomic Panacea" + desc = "Expels impurifications from our form; curing diseases, genetic disabilities, and removing toxins and radiation." + helptext = "Can be used while unconscious." + chemical_cost = 25 + dna_cost = 1 + req_stat = UNCONSCIOUS + +//Heals the things that the other regenerative abilities don't. +/obj/effect/proc_holder/changeling/panacea/sting_action(var/mob/user) + + user << "We cleanse impurities from our form." + user.reagents.add_reagent("ryetalyn", 10) + user.reagents.add_reagent("hyronalin", 10) + user.reagents.add_reagent("anti_toxin", 20) + + for(var/datum/disease/D in user.viruses) + D.cure() + + feedback_add_details("changeling_powers","AP") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 0738c58ab38..69c09bd383f 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -1,30 +1,30 @@ -/obj/effect/proc_holder/changeling/revive - name = "Regenerate" - desc = "We regenerate, healing all damage from our form." - chemical_cost = 10 - req_stat = DEAD - -//Revive from regenerative stasis -/obj/effect/proc_holder/changeling/revive/sting_action(var/mob/living/carbon/user) - - if(user.stat == DEAD) - dead_mob_list -= user - living_mob_list += user - user.stat = CONSCIOUS - user.tod = null - user.setToxLoss(0) - user.setOxyLoss(0) - user.setCloneLoss(0) - user.SetParalysis(0) - user.SetStunned(0) - user.SetWeakened(0) - user.radiation = 0 - user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) - user.reagents.clear_reagents() - user << "We have regenerated." - - user.status_flags &= ~(FAKEDEATH) - user.update_canmove() - user.mind.changeling.purchasedpowers -= src - feedback_add_details("changeling_powers","CR") +/obj/effect/proc_holder/changeling/revive + name = "Regenerate" + desc = "We regenerate, healing all damage from our form." + chemical_cost = 10 + req_stat = DEAD + +//Revive from regenerative stasis +/obj/effect/proc_holder/changeling/revive/sting_action(var/mob/living/carbon/user) + + if(user.stat == DEAD) + dead_mob_list -= user + living_mob_list += user + user.stat = CONSCIOUS + user.tod = null + user.setToxLoss(0) + user.setOxyLoss(0) + user.setCloneLoss(0) + user.SetParalysis(0) + user.SetStunned(0) + user.SetWeakened(0) + user.radiation = 0 + user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) + user.reagents.clear_reagents() + user << "We have regenerated." + + user.status_flags &= ~(FAKEDEATH) + user.update_canmove() + user.mind.changeling.purchasedpowers -= src + feedback_add_details("changeling_powers","CR") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 0d0b52eea4d..046d8f9512e 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -1,45 +1,45 @@ -/obj/effect/proc_holder/changeling/resonant_shriek - name = "Resonant Shriek" - desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." - helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." - chemical_cost = 25 - dna_cost = 1 - req_human = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(var/mob/user) - for(var/mob/living/M in hearers(4, user)) - if(iscarbon(M)) - if(!M.mind || !M.mind.changeling) - M.ear_deaf += 30 - M.confused += 20 - M.Jitter(50) - else - M << sound('sound/effects/screech.ogg') - - if(issilicon(M)) - M << sound('sound/weapons/flash.ogg') - M.Weaken(rand(5,10)) - - for(var/obj/machinery/light/L in range(4, user)) - L.on = 1 - L.broken() - - feedback_add_details("changeling_powers","RS") - return 1 - -/obj/effect/proc_holder/changeling/dissonant_shriek - name = "Dissonant Shriek" - desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." - chemical_cost = 20 - dna_cost = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(var/mob/user) - for(var/obj/machinery/light/L in range(5, usr)) - L.on = 1 - L.broken() - empulse(get_turf(user), 2, 5, 1) - return 1 - - +/obj/effect/proc_holder/changeling/resonant_shriek + name = "Resonant Shriek" + desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." + helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." + chemical_cost = 25 + dna_cost = 1 + req_human = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(var/mob/user) + for(var/mob/living/M in hearers(4, user)) + if(iscarbon(M)) + if(!M.mind || !M.mind.changeling) + M.ear_deaf += 30 + M.confused += 20 + M.Jitter(50) + else + M << sound('sound/effects/screech.ogg') + + if(issilicon(M)) + M << sound('sound/weapons/flash.ogg') + M.Weaken(rand(5,10)) + + for(var/obj/machinery/light/L in range(4, user)) + L.on = 1 + L.broken() + + feedback_add_details("changeling_powers","RS") + return 1 + +/obj/effect/proc_holder/changeling/dissonant_shriek + name = "Dissonant Shriek" + desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." + chemical_cost = 20 + dna_cost = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(var/mob/user) + for(var/obj/machinery/light/L in range(5, usr)) + L.on = 1 + L.broken() + empulse(get_turf(user), 2, 5, 1) + return 1 + + diff --git a/code/game/gamemodes/changeling/powers/spiders.dm b/code/game/gamemodes/changeling/powers/spiders.dm index bb61f84258d..cc4bcea557a 100644 --- a/code/game/gamemodes/changeling/powers/spiders.dm +++ b/code/game/gamemodes/changeling/powers/spiders.dm @@ -1,16 +1,16 @@ -/obj/effect/proc_holder/changeling/spiders - name = "Spread Infestation" - desc = "Our form divides, creating arachnids which will grow into deadly beasts." - helptext = "The spiders are thoughtless creatures, and may attack their creators when fully grown. Requires at least 5 DNA absorptions." - chemical_cost = 50 - dna_cost = 1 - req_dna = 5 - -//Makes some spiderlings. Good for setting traps and causing general trouble. -/obj/effect/proc_holder/changeling/spiders/sting_action(var/mob/user) - for(var/i=0, i<2, i++) - var/obj/effect/spider/spiderling/S = new(user.loc) - S.grow_as = /mob/living/simple_animal/hostile/giant_spider/hunter - - feedback_add_details("changeling_powers","SI") - return 1 +/obj/effect/proc_holder/changeling/spiders + name = "Spread Infestation" + desc = "Our form divides, creating arachnids which will grow into deadly beasts." + helptext = "The spiders are thoughtless creatures, and may attack their creators when fully grown. Requires at least 5 DNA absorptions." + chemical_cost = 50 + dna_cost = 1 + req_dna = 5 + +//Makes some spiderlings. Good for setting traps and causing general trouble. +/obj/effect/proc_holder/changeling/spiders/sting_action(var/mob/user) + for(var/i=0, i<2, i++) + var/obj/effect/spider/spiderling/S = new(user.loc) + S.grow_as = /mob/living/simple_animal/hostile/giant_spider/hunter + + feedback_add_details("changeling_powers","SI") + return 1 diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 4c9b9fafdb8..d6cddbfff25 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -1,163 +1,163 @@ -/obj/effect/proc_holder/changeling/sting - name = "Tiny Prick" - desc = "Stabby stabby" - var/sting_icon = null - -/obj/effect/proc_holder/changeling/sting/Click() - var/mob/user = usr - if(!user || !user.mind || !user.mind.changeling) - return - if(!(user.mind.changeling.chosen_sting)) - set_sting(user) - else - unset_sting(user) - return - -/obj/effect/proc_holder/changeling/sting/proc/set_sting(var/mob/user) - user << "We prepare our sting, use alt+click or middle mouse button on target to sting them." - user.mind.changeling.chosen_sting = src - user.hud_used.lingstingdisplay.icon_state = sting_icon - user.hud_used.lingstingdisplay.invisibility = 0 - -/obj/effect/proc_holder/changeling/sting/proc/unset_sting(var/mob/user) - user << "We retract our sting, we can't sting anyone for now." - user.mind.changeling.chosen_sting = null - user.hud_used.lingstingdisplay.icon_state = null - user.hud_used.lingstingdisplay.invisibility = 101 - -/mob/living/carbon/proc/unset_sting() - if(mind && mind.changeling && mind.changeling.chosen_sting) - src.mind.changeling.chosen_sting.unset_sting(src) - -/obj/effect/proc_holder/changeling/sting/can_sting(var/mob/user, var/mob/target) - if(!..()) - return - if(!user.mind.changeling.chosen_sting) - user << "We haven't prepared our sting yet!" - if(!iscarbon(target)) - return - if(!isturf(user.loc)) - return - if(get_dist(user, target) > (user.mind.changeling.sting_range)) - return //sanity check as AStar is still throwing insane stunts - if(!AStar(user.loc, target.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, user.mind.changeling.sting_range)) - return //hope this ancient magic still works - return 1 - -/obj/effect/proc_holder/changeling/sting/sting_feedback(var/mob/user, var/mob/target) - user << "We stealthily sting [target.name]." - if(target.mind && target.mind.changeling) - target << "You feel a tiny prick." - add_logs(user, target, "unsuccessfully stung") - return 1 - - -/obj/effect/proc_holder/changeling/sting/transformation - name = "Transformation Sting" - desc = "We silently sting a human, injecting a retrovirus that forces them to transform." - helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." - sting_icon = "sting_transform" - chemical_cost = 40 - dna_cost = 1 - var/datum/dna/selected_dna = null - -/obj/effect/proc_holder/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target) - if(!..()) - return - var/datum/changeling/changeling = user.mind.changeling - selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") - if(!selected_dna) - return - if((HUSK in target.mutations) || !check_dna_integrity(target)) - user << "Our sting appears ineffective against its DNA." - return 0 - return 1 - -/obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target) - add_logs(user, target, "stung", object="transformation sting", addition=" new identity is [selected_dna.real_name]") - var/datum/dna/NewDNA = selected_dna - hardset_dna(target, NewDNA.uni_identity, NewDNA.struc_enzymes, NewDNA.real_name, NewDNA.mutantrace, NewDNA.blood_type) - updateappearance(target) - feedback_add_details("changeling_powers","TS") - return 1 - -obj/effect/proc_holder/changeling/sting/extract_dna - name = "Extract DNA Sting" - desc = "We stealthily sting a target and extract their DNA." - helptext = "Will give you the DNA of your target, allowing you to transform into them." - sting_icon = "sting_extract" - chemical_cost = 25 - dna_cost = 0 - -/obj/effect/proc_holder/changeling/sting/extract_dna/can_sting(var/mob/user, var/mob/target) - if(..()) - return user.mind.changeling.can_absorb_dna(user, target) - -/obj/effect/proc_holder/changeling/sting/extract_dna/sting_action(var/mob/user, var/mob/target) - add_logs(user, target, "stung", object="extraction sting") - user.mind.changeling.absorb_dna(target, user) - feedback_add_details("changeling_powers","ED") - return 1 - -obj/effect/proc_holder/changeling/sting/mute - name = "Mute Sting" - desc = "We silently sting a human, completely silencing them for a short time." - helptext = "Does not provide a warning to the victim that they have been stung, until they try to speak and cannot." - sting_icon = "sting_mute" - chemical_cost = 20 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target) - add_logs(user, target, "stung", object="mute sting") - target.silent += 30 - feedback_add_details("changeling_powers","MS") - return 1 - -obj/effect/proc_holder/changeling/sting/blind - name = "Blind Sting" - desc = "Temporarily blinds the target." - helptext = "This sting completely blinds a target for a short time. The target does not notice they have been stung." - sting_icon = "sting_blind" - chemical_cost = 25 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/user, var/mob/target) - add_logs(user, target, "stung", object="blind sting") - target << "Your eyes burn horrifically!" - target.disabilities |= NEARSIGHTED - target.eye_blind = 20 - target.eye_blurry = 40 - feedback_add_details("changeling_powers","BS") - return 1 - -obj/effect/proc_holder/changeling/sting/LSD - name = "Hallucination Sting" - desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung. The effect occurs after 30 to 60 seconds." - sting_icon = "sting_lsd" - chemical_cost = 5 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/LSD/sting_action(var/mob/user, var/mob/living/carbon/target) - add_logs(user, target, "stung", object="LSD sting") - spawn(rand(300,600)) - if(target) - target.hallucination += 400 - feedback_add_details("changeling_powers","HS") - return 1 - -obj/effect/proc_holder/changeling/sting/cryo - name = "Cryogenic Sting" - desc = "We silently sting a human with a cocktail of chemicals that freeze them." - helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." - sting_icon = "sting_cryo" - chemical_cost = 15 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/cryo/sting_action(var/mob/user, var/mob/target) - add_logs(user, target, "stung", object="cryo sting") - if(target.reagents) - target.reagents.add_reagent("frostoil", 30) - target.reagents.add_reagent("ice", 30) - feedback_add_details("changeling_powers","CS") +/obj/effect/proc_holder/changeling/sting + name = "Tiny Prick" + desc = "Stabby stabby" + var/sting_icon = null + +/obj/effect/proc_holder/changeling/sting/Click() + var/mob/user = usr + if(!user || !user.mind || !user.mind.changeling) + return + if(!(user.mind.changeling.chosen_sting)) + set_sting(user) + else + unset_sting(user) + return + +/obj/effect/proc_holder/changeling/sting/proc/set_sting(var/mob/user) + user << "We prepare our sting, use alt+click or middle mouse button on target to sting them." + user.mind.changeling.chosen_sting = src + user.hud_used.lingstingdisplay.icon_state = sting_icon + user.hud_used.lingstingdisplay.invisibility = 0 + +/obj/effect/proc_holder/changeling/sting/proc/unset_sting(var/mob/user) + user << "We retract our sting, we can't sting anyone for now." + user.mind.changeling.chosen_sting = null + user.hud_used.lingstingdisplay.icon_state = null + user.hud_used.lingstingdisplay.invisibility = 101 + +/mob/living/carbon/proc/unset_sting() + if(mind && mind.changeling && mind.changeling.chosen_sting) + src.mind.changeling.chosen_sting.unset_sting(src) + +/obj/effect/proc_holder/changeling/sting/can_sting(var/mob/user, var/mob/target) + if(!..()) + return + if(!user.mind.changeling.chosen_sting) + user << "We haven't prepared our sting yet!" + if(!iscarbon(target)) + return + if(!isturf(user.loc)) + return + if(get_dist(user, target) > (user.mind.changeling.sting_range)) + return //sanity check as AStar is still throwing insane stunts + if(!AStar(user.loc, target.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, user.mind.changeling.sting_range)) + return //hope this ancient magic still works + return 1 + +/obj/effect/proc_holder/changeling/sting/sting_feedback(var/mob/user, var/mob/target) + user << "We stealthily sting [target.name]." + if(target.mind && target.mind.changeling) + target << "You feel a tiny prick." + add_logs(user, target, "unsuccessfully stung") + return 1 + + +/obj/effect/proc_holder/changeling/sting/transformation + name = "Transformation Sting" + desc = "We silently sting a human, injecting a retrovirus that forces them to transform." + helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." + sting_icon = "sting_transform" + chemical_cost = 40 + dna_cost = 1 + var/datum/dna/selected_dna = null + +/obj/effect/proc_holder/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target) + if(!..()) + return + var/datum/changeling/changeling = user.mind.changeling + selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") + if(!selected_dna) + return + if((HUSK in target.mutations) || !check_dna_integrity(target)) + user << "Our sting appears ineffective against its DNA." + return 0 + return 1 + +/obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target) + add_logs(user, target, "stung", object="transformation sting", addition=" new identity is [selected_dna.real_name]") + var/datum/dna/NewDNA = selected_dna + hardset_dna(target, NewDNA.uni_identity, NewDNA.struc_enzymes, NewDNA.real_name, NewDNA.mutantrace, NewDNA.blood_type) + updateappearance(target) + feedback_add_details("changeling_powers","TS") + return 1 + +obj/effect/proc_holder/changeling/sting/extract_dna + name = "Extract DNA Sting" + desc = "We stealthily sting a target and extract their DNA." + helptext = "Will give you the DNA of your target, allowing you to transform into them." + sting_icon = "sting_extract" + chemical_cost = 25 + dna_cost = 0 + +/obj/effect/proc_holder/changeling/sting/extract_dna/can_sting(var/mob/user, var/mob/target) + if(..()) + return user.mind.changeling.can_absorb_dna(user, target) + +/obj/effect/proc_holder/changeling/sting/extract_dna/sting_action(var/mob/user, var/mob/target) + add_logs(user, target, "stung", object="extraction sting") + user.mind.changeling.absorb_dna(target, user) + feedback_add_details("changeling_powers","ED") + return 1 + +obj/effect/proc_holder/changeling/sting/mute + name = "Mute Sting" + desc = "We silently sting a human, completely silencing them for a short time." + helptext = "Does not provide a warning to the victim that they have been stung, until they try to speak and cannot." + sting_icon = "sting_mute" + chemical_cost = 20 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target) + add_logs(user, target, "stung", object="mute sting") + target.silent += 30 + feedback_add_details("changeling_powers","MS") + return 1 + +obj/effect/proc_holder/changeling/sting/blind + name = "Blind Sting" + desc = "Temporarily blinds the target." + helptext = "This sting completely blinds a target for a short time. The target does not notice they have been stung." + sting_icon = "sting_blind" + chemical_cost = 25 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/user, var/mob/target) + add_logs(user, target, "stung", object="blind sting") + target << "Your eyes burn horrifically!" + target.disabilities |= NEARSIGHTED + target.eye_blind = 20 + target.eye_blurry = 40 + feedback_add_details("changeling_powers","BS") + return 1 + +obj/effect/proc_holder/changeling/sting/LSD + name = "Hallucination Sting" + desc = "Causes terror in the target." + helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung. The effect occurs after 30 to 60 seconds." + sting_icon = "sting_lsd" + chemical_cost = 5 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/LSD/sting_action(var/mob/user, var/mob/living/carbon/target) + add_logs(user, target, "stung", object="LSD sting") + spawn(rand(300,600)) + if(target) + target.hallucination += 400 + feedback_add_details("changeling_powers","HS") + return 1 + +obj/effect/proc_holder/changeling/sting/cryo + name = "Cryogenic Sting" + desc = "We silently sting a human with a cocktail of chemicals that freeze them." + helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." + sting_icon = "sting_cryo" + chemical_cost = 15 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/cryo/sting_action(var/mob/user, var/mob/target) + add_logs(user, target, "stung", object="cryo sting") + if(target.reagents) + target.reagents.add_reagent("frostoil", 30) + target.reagents.add_reagent("ice", 30) + feedback_add_details("changeling_powers","CS") return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index d3ebd5bbe3c..612d7871abc 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -1,36 +1,36 @@ -/obj/effect/proc_holder/changeling/transform - name = "Transform" - desc = "We take on the appearance and voice of one we have absorbed." - chemical_cost = 5 - dna_cost = 0 - req_dna = 1 - req_human = 1 - max_genetic_damage = 3 - -//Change our DNA to that of somebody we've absorbed. -/obj/effect/proc_holder/changeling/transform/sting_action(var/mob/living/carbon/user) - var/datum/changeling/changeling = user.mind.changeling - var/datum/dna/chosen_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") - - if(!chosen_dna) - return - - - user.dna = chosen_dna - user.real_name = chosen_dna.real_name - updateappearance(user) - domutcheck(user, null) - - feedback_add_details("changeling_powers","TR") - return 1 - -/datum/changeling/proc/select_dna(var/prompt, var/title) - var/list/names = list() - for(var/datum/dna/DNA in absorbed_dna) - names += "[DNA.real_name]" - - var/chosen_name = input(prompt, title, null) as null|anything in names - if(!chosen_name) - return - var/datum/dna/chosen_dna = get_dna(chosen_name) +/obj/effect/proc_holder/changeling/transform + name = "Transform" + desc = "We take on the appearance and voice of one we have absorbed." + chemical_cost = 5 + dna_cost = 0 + req_dna = 1 + req_human = 1 + max_genetic_damage = 3 + +//Change our DNA to that of somebody we've absorbed. +/obj/effect/proc_holder/changeling/transform/sting_action(var/mob/living/carbon/user) + var/datum/changeling/changeling = user.mind.changeling + var/datum/dna/chosen_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") + + if(!chosen_dna) + return + + + user.dna = chosen_dna + user.real_name = chosen_dna.real_name + updateappearance(user) + domutcheck(user, null) + + feedback_add_details("changeling_powers","TR") + return 1 + +/datum/changeling/proc/select_dna(var/prompt, var/title) + var/list/names = list() + for(var/datum/dna/DNA in absorbed_dna) + names += "[DNA.real_name]" + + var/chosen_name = input(prompt, title, null) as null|anything in names + if(!chosen_name) + return + var/datum/dna/chosen_dna = get_dna(chosen_name) return chosen_dna \ No newline at end of file diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 0219844aa32..2391bf5f283 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -1,190 +1,190 @@ -//Contains the target item datums for Steal objectives. - -datum/objective_item - var/name = "A silly bike horn! Honk!" - var/targetitem = /obj/item/weapon/bikehorn //typepath of the objective item - var/difficulty = 9001 //vaguely how hard it is to do this objective - var/list/excludefromjob = list() //If you don't want a job to get a certain objective (no captain stealing his own medal, etcetc) - var/list/altitems = list() //Items which can serve as an alternative to the objective (darn you blueprints) - -datum/proc/check_special_completion() //for objectives with special checks (is that slime extract unused? does that intellicard have an ai in it? etcetc) - return 1 - - -datum/objective_item/steal/caplaser - name = "the captain's antique laser gun" - targetitem = /obj/item/weapon/gun/energy/laser/captain - difficulty = 5 - excludefromjob = list("Captain") - -datum/objective_item/steal/handtele - name = "a hand teleporter" - targetitem = /obj/item/weapon/hand_tele - difficulty = 5 - excludefromjob = list("Captain") - -datum/objective_item/steal/rcd - name = "a rapid-construction-device" - targetitem = /obj/item/weapon/rcd - difficulty = 3 - -datum/objective_item/steal/jetpack - name = "a jetpack" - targetitem = /obj/item/weapon/tank/jetpack - difficulty = 3 - -datum/objective_item/steal/magboots - name = "a pair of magboots" - targetitem = /obj/item/clothing/shoes/magboots - difficulty = 5 - excludefromjob = list("Chief Engineer") - -datum/objective_item/steal/corgimeat - name = "a piece of corgi meat" - targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi - difficulty = 5 - excludefromjob = list("Head of Personnel") //>hurting your little buddy ever - -datum/objective_item/steal/capmedal - name = "the medal of captaincy" - targetitem = /obj/item/clothing/tie/medal/gold/captain - difficulty = 5 - excludefromjob = list("Captain") - -datum/objective_item/steal/hypo - name = "the hypospray" - targetitem = /obj/item/weapon/reagent_containers/hypospray - difficulty = 5 - excludefromjob = list("Chief Medical Officer") - -datum/objective_item/steal/nukedisc - name = "the nuclear authentication disk" - targetitem = /obj/item/weapon/disk/nuclear - difficulty = 5 - excludefromjob = list("Captain") - -datum/objective_item/steal/ablative - name = "an ablative armor vest" - targetitem = /obj/item/clothing/suit/armor/laserproof - difficulty = 3 - excludefromjob = list("Head of Security", "Warden") - -datum/objective_item/steal/reactive - name = "the reactive teleport armor" - targetitem = /obj/item/clothing/suit/armor/reactive - difficulty = 5 - excludefromjob = list("Research Director") - - -//Items with special checks! -datum/objective_item/steal/plasma - name = "28 moles of plasma (full tank)" - targetitem = /obj/item/weapon/tank - difficulty = 3 - excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician") - -datum/objective_item/plasma/check_special_completion(var/obj/item/weapon/tank/T) - var/target_amount = text2num(name) - var/found_amount = 0 - found_amount += T.air_contents.toxins - return found_amount>=target_amount - - -datum/objective_item/steal/functionalai - name = "a functional AI" - targetitem = /obj/item/device/aicard - difficulty = 20 //beyond the impossible - -datum/objective_item/functionalai/check_special_completion(var/obj/item/device/aicard/C) - for(var/mob/living/silicon/ai/A in C) - if(istype(A, /mob/living/silicon/ai) && A.stat != 2) //See if any AI's are alive inside that card. - return 1 - return 0 - -datum/objective_item/steal/blueprints - name = "the station blueprints" - targetitem = /obj/item/blueprints - difficulty = 10 - excludefromjob = list("Chief Engineer") - altitems = list(/obj/item/weapon/photo) - -datum/objective_item/blueprints/check_special_completion(var/obj/item/I) - if(istype(I, /obj/item/blueprints)) - return 1 - if(istype(I, /obj/item/weapon/photo)) - var/obj/item/weapon/photo/P = I - if(P.blueprints) //if the blueprints are in frame - return 1 - return 0 - -datum/objective_item/steal/slime - name = "an unused sample of slime extract" - targetitem = /obj/item/slime_extract - difficulty = 3 - excludefromjob = list("Research Director","Scientist") - -datum/objective_item/slime/check_special_completion(var/obj/item/slime_extract/E) - if(E.Uses > 0) - return 1 - return 0 - - -//Old ninja objectives. -datum/objective_item/special/pinpointer - name = "the captain's pinpointer" - targetitem = /obj/item/weapon/pinpointer - difficulty = 10 - -datum/objective_item/special/aegun - name = "an advanced energy gun" - targetitem = /obj/item/weapon/gun/energy/gun/nuclear - difficulty = 10 - -datum/objective_item/special/ddrill - name = "a diamond drill" - targetitem = /obj/item/weapon/pickaxe/diamonddrill - difficulty = 10 - -datum/objective_item/special/boh - name = "a bag of holding" - targetitem = /obj/item/weapon/storage/backpack/holding - difficulty = 10 - -datum/objective_item/special/hypercell - name = "a hyper-capacity cell" - targetitem = /obj/item/weapon/stock_parts/cell/hyper - difficulty = 5 - -datum/objective_item/special/laserpointer - name = "a laser pointer" - targetitem = /obj/item/device/laser_pointer - difficulty = 5 - -//Stack objectives get their own subtype -datum/objective_item/stack - name = "5 cardboards" - targetitem = /obj/item/stack/sheet/cardboard - difficulty = 9001 - -datum/objective_item/stack/check_special_completion(var/obj/item/stack/S) - var/target_amount = text2num(name) - var/found_amount = 0 - - if(istype(S, targetitem)) - found_amount = S.amount - return found_amount>=target_amount - -datum/objective_item/stack/diamond - name = "10 diamonds" - targetitem = /obj/item/stack/sheet/mineral/diamond - difficulty = 10 - -datum/objective_item/stack/gold - name = "50 gold bars" - targetitem = /obj/item/stack/sheet/mineral/gold - difficulty = 15 - -datum/objective_item/stack/uranium - name = "25 refined uranium bars" - targetitem = /obj/item/stack/sheet/mineral/uranium +//Contains the target item datums for Steal objectives. + +datum/objective_item + var/name = "A silly bike horn! Honk!" + var/targetitem = /obj/item/weapon/bikehorn //typepath of the objective item + var/difficulty = 9001 //vaguely how hard it is to do this objective + var/list/excludefromjob = list() //If you don't want a job to get a certain objective (no captain stealing his own medal, etcetc) + var/list/altitems = list() //Items which can serve as an alternative to the objective (darn you blueprints) + +datum/proc/check_special_completion() //for objectives with special checks (is that slime extract unused? does that intellicard have an ai in it? etcetc) + return 1 + + +datum/objective_item/steal/caplaser + name = "the captain's antique laser gun" + targetitem = /obj/item/weapon/gun/energy/laser/captain + difficulty = 5 + excludefromjob = list("Captain") + +datum/objective_item/steal/handtele + name = "a hand teleporter" + targetitem = /obj/item/weapon/hand_tele + difficulty = 5 + excludefromjob = list("Captain") + +datum/objective_item/steal/rcd + name = "a rapid-construction-device" + targetitem = /obj/item/weapon/rcd + difficulty = 3 + +datum/objective_item/steal/jetpack + name = "a jetpack" + targetitem = /obj/item/weapon/tank/jetpack + difficulty = 3 + +datum/objective_item/steal/magboots + name = "a pair of magboots" + targetitem = /obj/item/clothing/shoes/magboots + difficulty = 5 + excludefromjob = list("Chief Engineer") + +datum/objective_item/steal/corgimeat + name = "a piece of corgi meat" + targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi + difficulty = 5 + excludefromjob = list("Head of Personnel") //>hurting your little buddy ever + +datum/objective_item/steal/capmedal + name = "the medal of captaincy" + targetitem = /obj/item/clothing/tie/medal/gold/captain + difficulty = 5 + excludefromjob = list("Captain") + +datum/objective_item/steal/hypo + name = "the hypospray" + targetitem = /obj/item/weapon/reagent_containers/hypospray + difficulty = 5 + excludefromjob = list("Chief Medical Officer") + +datum/objective_item/steal/nukedisc + name = "the nuclear authentication disk" + targetitem = /obj/item/weapon/disk/nuclear + difficulty = 5 + excludefromjob = list("Captain") + +datum/objective_item/steal/ablative + name = "an ablative armor vest" + targetitem = /obj/item/clothing/suit/armor/laserproof + difficulty = 3 + excludefromjob = list("Head of Security", "Warden") + +datum/objective_item/steal/reactive + name = "the reactive teleport armor" + targetitem = /obj/item/clothing/suit/armor/reactive + difficulty = 5 + excludefromjob = list("Research Director") + + +//Items with special checks! +datum/objective_item/steal/plasma + name = "28 moles of plasma (full tank)" + targetitem = /obj/item/weapon/tank + difficulty = 3 + excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician") + +datum/objective_item/plasma/check_special_completion(var/obj/item/weapon/tank/T) + var/target_amount = text2num(name) + var/found_amount = 0 + found_amount += T.air_contents.toxins + return found_amount>=target_amount + + +datum/objective_item/steal/functionalai + name = "a functional AI" + targetitem = /obj/item/device/aicard + difficulty = 20 //beyond the impossible + +datum/objective_item/functionalai/check_special_completion(var/obj/item/device/aicard/C) + for(var/mob/living/silicon/ai/A in C) + if(istype(A, /mob/living/silicon/ai) && A.stat != 2) //See if any AI's are alive inside that card. + return 1 + return 0 + +datum/objective_item/steal/blueprints + name = "the station blueprints" + targetitem = /obj/item/blueprints + difficulty = 10 + excludefromjob = list("Chief Engineer") + altitems = list(/obj/item/weapon/photo) + +datum/objective_item/blueprints/check_special_completion(var/obj/item/I) + if(istype(I, /obj/item/blueprints)) + return 1 + if(istype(I, /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = I + if(P.blueprints) //if the blueprints are in frame + return 1 + return 0 + +datum/objective_item/steal/slime + name = "an unused sample of slime extract" + targetitem = /obj/item/slime_extract + difficulty = 3 + excludefromjob = list("Research Director","Scientist") + +datum/objective_item/slime/check_special_completion(var/obj/item/slime_extract/E) + if(E.Uses > 0) + return 1 + return 0 + + +//Old ninja objectives. +datum/objective_item/special/pinpointer + name = "the captain's pinpointer" + targetitem = /obj/item/weapon/pinpointer + difficulty = 10 + +datum/objective_item/special/aegun + name = "an advanced energy gun" + targetitem = /obj/item/weapon/gun/energy/gun/nuclear + difficulty = 10 + +datum/objective_item/special/ddrill + name = "a diamond drill" + targetitem = /obj/item/weapon/pickaxe/diamonddrill + difficulty = 10 + +datum/objective_item/special/boh + name = "a bag of holding" + targetitem = /obj/item/weapon/storage/backpack/holding + difficulty = 10 + +datum/objective_item/special/hypercell + name = "a hyper-capacity cell" + targetitem = /obj/item/weapon/stock_parts/cell/hyper + difficulty = 5 + +datum/objective_item/special/laserpointer + name = "a laser pointer" + targetitem = /obj/item/device/laser_pointer + difficulty = 5 + +//Stack objectives get their own subtype +datum/objective_item/stack + name = "5 cardboards" + targetitem = /obj/item/stack/sheet/cardboard + difficulty = 9001 + +datum/objective_item/stack/check_special_completion(var/obj/item/stack/S) + var/target_amount = text2num(name) + var/found_amount = 0 + + if(istype(S, targetitem)) + found_amount = S.amount + return found_amount>=target_amount + +datum/objective_item/stack/diamond + name = "10 diamonds" + targetitem = /obj/item/stack/sheet/mineral/diamond + difficulty = 10 + +datum/objective_item/stack/gold + name = "50 gold bars" + targetitem = /obj/item/stack/sheet/mineral/gold + difficulty = 15 + +datum/objective_item/stack/uranium + name = "25 refined uranium bars" + targetitem = /obj/item/stack/sheet/mineral/uranium difficulty = 10 \ No newline at end of file diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index f07cd2a5437..e5c41aa12e2 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -1,91 +1,91 @@ -/datum/game_mode/traitor/double_agents - name = "double agents" - config_tag = "double_agents" - restricted_jobs = list("Cyborg", "AI", "Captain", "Head of Personnel", "Chief Medical Officer", "Research Director", "Chief Engineer", "Head of Security") // Human / Minor roles only. - required_players = 25 - required_enemies = 5 - recommended_enemies = 8 - - traitor_name = "double agent" - - traitors_possible = 8 //hard limit on traitors if scaling is turned off - scale_modifier = 0.5 // Nearly twice as many double agents - - var/list/target_list = list() - var/list/late_joining_list = list() - -/datum/game_mode/traitor/double_agents/announce() - world << "The current game mode is - Double Agents!" - world << "There are double agents killing eachother! Do not let them succeed!" - -/datum/game_mode/traitor/double_agents/post_setup() - var/i = 0 - for(var/datum/mind/traitor in traitors) - i++ - if(i + 1 > traitors.len) - i = 0 - target_list[traitor] = traitors[i + 1] - ..() - -/datum/game_mode/traitor/double_agents/forge_traitor_objectives(var/datum/mind/traitor) - - if(target_list.len && target_list[traitor]) // Is a double agent - - // Assassinate - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = traitor - kill_objective.target = target_list[traitor] - kill_objective.explanation_text = "Assassinate [kill_objective.target.current.real_name], the [kill_objective.target.special_role]." - traitor.objectives += kill_objective - - // Escape - var/datum/objective/escape/escape_objective = new - escape_objective.owner = traitor - traitor.objectives += escape_objective - - else - ..() // Give them standard objectives. - return - -/datum/game_mode/traitor/double_agents/add_latejoin_traitor(var/datum/mind/character) - - check_potential_agents() - - // As soon as we get 3 or 4 extra latejoin traitors, make them traitors and kill each other. - if(late_joining_list.len >= rand(3, 4)) - // True randomness - shuffle(late_joining_list) - // Reset the target_list, it'll be used again in force_traitor_objectives - target_list = list() - - // Basically setting the target_list for who is killing who - var/i = 0 - for(var/datum/mind/traitor in late_joining_list) - i++ - if(i + 1 > late_joining_list.len) - i = 0 - target_list[traitor] = late_joining_list[i + 1] - traitor.special_role = traitor_name - - // Now, give them their targets - for(var/datum/mind/traitor in target_list) - ..(traitor) - - late_joining_list = list() - else - late_joining_list += character - return - -/datum/game_mode/traitor/double_agents/proc/check_potential_agents() - - for(var/M in late_joining_list) - if(istype(M, /datum/mind)) - var/datum/mind/agent_mind = M - if(ishuman(agent_mind.current)) - var/mob/living/carbon/human/H = agent_mind.current - if(H.stat != DEAD) - if(H.client) - continue // It all checks out. - - // If any check fails, remove them from our list +/datum/game_mode/traitor/double_agents + name = "double agents" + config_tag = "double_agents" + restricted_jobs = list("Cyborg", "AI", "Captain", "Head of Personnel", "Chief Medical Officer", "Research Director", "Chief Engineer", "Head of Security") // Human / Minor roles only. + required_players = 25 + required_enemies = 5 + recommended_enemies = 8 + + traitor_name = "double agent" + + traitors_possible = 8 //hard limit on traitors if scaling is turned off + scale_modifier = 0.5 // Nearly twice as many double agents + + var/list/target_list = list() + var/list/late_joining_list = list() + +/datum/game_mode/traitor/double_agents/announce() + world << "The current game mode is - Double Agents!" + world << "There are double agents killing eachother! Do not let them succeed!" + +/datum/game_mode/traitor/double_agents/post_setup() + var/i = 0 + for(var/datum/mind/traitor in traitors) + i++ + if(i + 1 > traitors.len) + i = 0 + target_list[traitor] = traitors[i + 1] + ..() + +/datum/game_mode/traitor/double_agents/forge_traitor_objectives(var/datum/mind/traitor) + + if(target_list.len && target_list[traitor]) // Is a double agent + + // Assassinate + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = traitor + kill_objective.target = target_list[traitor] + kill_objective.explanation_text = "Assassinate [kill_objective.target.current.real_name], the [kill_objective.target.special_role]." + traitor.objectives += kill_objective + + // Escape + var/datum/objective/escape/escape_objective = new + escape_objective.owner = traitor + traitor.objectives += escape_objective + + else + ..() // Give them standard objectives. + return + +/datum/game_mode/traitor/double_agents/add_latejoin_traitor(var/datum/mind/character) + + check_potential_agents() + + // As soon as we get 3 or 4 extra latejoin traitors, make them traitors and kill each other. + if(late_joining_list.len >= rand(3, 4)) + // True randomness + shuffle(late_joining_list) + // Reset the target_list, it'll be used again in force_traitor_objectives + target_list = list() + + // Basically setting the target_list for who is killing who + var/i = 0 + for(var/datum/mind/traitor in late_joining_list) + i++ + if(i + 1 > late_joining_list.len) + i = 0 + target_list[traitor] = late_joining_list[i + 1] + traitor.special_role = traitor_name + + // Now, give them their targets + for(var/datum/mind/traitor in target_list) + ..(traitor) + + late_joining_list = list() + else + late_joining_list += character + return + +/datum/game_mode/traitor/double_agents/proc/check_potential_agents() + + for(var/M in late_joining_list) + if(istype(M, /datum/mind)) + var/datum/mind/agent_mind = M + if(ishuman(agent_mind.current)) + var/mob/living/carbon/human/H = agent_mind.current + if(H.stat != DEAD) + if(H.client) + continue // It all checks out. + + // If any check fails, remove them from our list late_joining_list -= M \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 8f90db9ba41..97ea9dd91d1 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -336,4 +336,4 @@ var/global/lawyer = 0//Checks for another lawyer else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - return 1 + return 1 diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index fb1a05ff1dd..f59ff9c6f1e 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -1,93 +1,93 @@ -/obj/machinery/pdapainter - name = "\improper PDA painter" - desc = "A PDA painting machine. To use, simply insert your PDA and choose the desired preset paint scheme." - icon = 'icons/obj/pda.dmi' - icon_state = "pdapainter" - density = 1 - anchored = 1 - var/obj/item/device/pda/storedpda = null - var/list/colorlist = list() - - -/obj/machinery/pdapainter/update_icon() - overlays.Cut() - - if(stat & BROKEN) - icon_state = "[initial(icon_state)]-broken" - return - - if(storedpda) - overlays += "[initial(icon_state)]-closed" - - if(powered()) - icon_state = initial(icon_state) - else - icon_state = "[initial(icon_state)]-off" - - return - -/obj/machinery/pdapainter/New() - ..() - var/blocked = list(/obj/item/device/pda/ai/pai, /obj/item/device/pda/ai, /obj/item/device/pda/heads, - /obj/item/device/pda/clear, /obj/item/device/pda/syndicate) - - for(var/P in typesof(/obj/item/device/pda)-blocked) - var/obj/item/device/pda/D = new P - - //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" - D.name = D.icon_state //PDAs don't have unique names, but using the sprite names works. - - src.colorlist += D - - -/obj/machinery/pdapainter/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/device/pda)) - if(storedpda) - user << "There is already a PDA inside." - return - else - var/obj/item/device/pda/P = usr.get_active_hand() - if(istype(P)) - user.drop_item() - storedpda = P - P.loc = src - P.add_fingerprint(usr) - update_icon() - - -/obj/machinery/pdapainter/attack_hand(mob/user as mob) - ..() - - src.add_fingerprint(user) - - if(storedpda) - var/obj/item/device/pda/P - P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist - if(!P) - return - if(!in_range(src, user)) - return - - storedpda.icon_state = P.icon_state - storedpda.desc = P.desc - - else - user << "The [src] is empty." - - -/obj/machinery/pdapainter/verb/ejectpda() - set name = "Eject PDA" - set category = "Object" - set src in oview(1) - - if(storedpda) - storedpda.loc = get_turf(src.loc) - storedpda = null - update_icon() - else - usr << "The [src] is empty." - - -/obj/machinery/pdapainter/power_change() - ..() +/obj/machinery/pdapainter + name = "\improper PDA painter" + desc = "A PDA painting machine. To use, simply insert your PDA and choose the desired preset paint scheme." + icon = 'icons/obj/pda.dmi' + icon_state = "pdapainter" + density = 1 + anchored = 1 + var/obj/item/device/pda/storedpda = null + var/list/colorlist = list() + + +/obj/machinery/pdapainter/update_icon() + overlays.Cut() + + if(stat & BROKEN) + icon_state = "[initial(icon_state)]-broken" + return + + if(storedpda) + overlays += "[initial(icon_state)]-closed" + + if(powered()) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-off" + + return + +/obj/machinery/pdapainter/New() + ..() + var/blocked = list(/obj/item/device/pda/ai/pai, /obj/item/device/pda/ai, /obj/item/device/pda/heads, + /obj/item/device/pda/clear, /obj/item/device/pda/syndicate) + + for(var/P in typesof(/obj/item/device/pda)-blocked) + var/obj/item/device/pda/D = new P + + //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" + D.name = D.icon_state //PDAs don't have unique names, but using the sprite names works. + + src.colorlist += D + + +/obj/machinery/pdapainter/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/device/pda)) + if(storedpda) + user << "There is already a PDA inside." + return + else + var/obj/item/device/pda/P = usr.get_active_hand() + if(istype(P)) + user.drop_item() + storedpda = P + P.loc = src + P.add_fingerprint(usr) + update_icon() + + +/obj/machinery/pdapainter/attack_hand(mob/user as mob) + ..() + + src.add_fingerprint(user) + + if(storedpda) + var/obj/item/device/pda/P + P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist + if(!P) + return + if(!in_range(src, user)) + return + + storedpda.icon_state = P.icon_state + storedpda.desc = P.desc + + else + user << "The [src] is empty." + + +/obj/machinery/pdapainter/verb/ejectpda() + set name = "Eject PDA" + set category = "Object" + set src in oview(1) + + if(storedpda) + storedpda.loc = get_turf(src.loc) + storedpda = null + update_icon() + else + usr << "The [src] is empty." + + +/obj/machinery/pdapainter/power_change() + ..() update_icon() \ No newline at end of file diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 9b030f21d60..23352d566ac 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -1,124 +1,124 @@ -/obj/machinery/ai_slipper - name = "\improper AI liquid dispenser" - icon = 'icons/obj/device.dmi' - icon_state = "motion3" - layer = 3 - anchored = 1.0 - var/uses = 20 - var/disabled = 1 - var/lethal = 0 - var/locked = 1 - var/cooldown_time = 0 - var/cooldown_timeleft = 0 - var/cooldown_on = 0 - req_access = list(access_ai_upload) - -/obj/machinery/ai_slipper/power_change() - if(stat & BROKEN) - return - else - if( powered() ) - stat &= ~NOPOWER - else - icon_state = "motion0" - stat |= NOPOWER - -/obj/machinery/ai_slipper/proc/setState(var/enabled, var/uses) - src.disabled = disabled - src.uses = uses - src.power_change() - -/obj/machinery/ai_slipper/attackby(obj/item/weapon/W, mob/user) - if(stat & (NOPOWER|BROKEN)) - return - if (istype(user, /mob/living/silicon)) - return src.attack_hand(user) - else // trying to unlock the interface - if (src.allowed(usr)) - locked = !locked - user << "You [ locked ? "lock" : "unlock"] the device." - if (locked) - if (user.machine==src) - user.unset_machine() - user << browse(null, "window=ai_slipper") - else - if (user.machine==src) - src.attack_hand(usr) - else - user << "\red Access denied." - return - return - -/obj/machinery/ai_slipper/attack_ai(mob/user as mob) - return attack_hand(user) - -/obj/machinery/ai_slipper/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - if ( (get_dist(src, user) > 1 )) - if (!istype(user, /mob/living/silicon)) - user << text("Too far away.") - user.unset_machine() - user << browse(null, "window=ai_slipper") - return - - user.set_machine(src) - var/loc = src.loc - if (istype(loc, /turf)) - loc = loc:loc - if (!istype(loc, /area)) - user << text("Turret badly positioned - loc.loc is [].", loc) - return - var/area/area = loc - var/t = "AI Liquid Dispenser ([format_text(area.name)])
    " - - if(src.locked && (!istype(user, /mob/living/silicon))) - t += "(Swipe ID card to unlock control panel.)
    " - else - t += text("Dispenser [] - []?
    \n", src.disabled?"deactivated":"activated", src, src.disabled?"Enable":"Disable") - t += text("Uses Left: [uses]. Activate the dispenser?
    \n") - - user << browse(t, "window=computer;size=575x450") - onclose(user, "computer") - return - -/obj/machinery/ai_slipper/Topic(href, href_list) - if(..()) - return - if (src.locked) - if (!istype(usr, /mob/living/silicon)) - usr << "Control panel is locked!" - return - if (href_list["toggleOn"]) - src.disabled = !src.disabled - icon_state = src.disabled? "motion0":"motion3" - if (href_list["toggleUse"]) - if(cooldown_on || disabled) - return - else - new /obj/effect/effect/foam(src.loc) - src.uses-- - cooldown_on = 1 - cooldown_time = world.timeofday + 100 - slip_process() - return - - src.attack_hand(usr) - return - -/obj/machinery/ai_slipper/proc/slip_process() - while(cooldown_time - world.timeofday > 0) - var/ticksleft = cooldown_time - world.timeofday - - if(ticksleft > 1e5) - cooldown_time = world.timeofday + 10 // midnight rollover - - - cooldown_timeleft = (ticksleft / 10) - sleep(5) - if (uses <= 0) - return - if (uses >= 0) - cooldown_on = 0 - src.power_change() +/obj/machinery/ai_slipper + name = "\improper AI liquid dispenser" + icon = 'icons/obj/device.dmi' + icon_state = "motion3" + layer = 3 + anchored = 1.0 + var/uses = 20 + var/disabled = 1 + var/lethal = 0 + var/locked = 1 + var/cooldown_time = 0 + var/cooldown_timeleft = 0 + var/cooldown_on = 0 + req_access = list(access_ai_upload) + +/obj/machinery/ai_slipper/power_change() + if(stat & BROKEN) + return + else + if( powered() ) + stat &= ~NOPOWER + else + icon_state = "motion0" + stat |= NOPOWER + +/obj/machinery/ai_slipper/proc/setState(var/enabled, var/uses) + src.disabled = disabled + src.uses = uses + src.power_change() + +/obj/machinery/ai_slipper/attackby(obj/item/weapon/W, mob/user) + if(stat & (NOPOWER|BROKEN)) + return + if (istype(user, /mob/living/silicon)) + return src.attack_hand(user) + else // trying to unlock the interface + if (src.allowed(usr)) + locked = !locked + user << "You [ locked ? "lock" : "unlock"] the device." + if (locked) + if (user.machine==src) + user.unset_machine() + user << browse(null, "window=ai_slipper") + else + if (user.machine==src) + src.attack_hand(usr) + else + user << "\red Access denied." + return + return + +/obj/machinery/ai_slipper/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/ai_slipper/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + if ( (get_dist(src, user) > 1 )) + if (!istype(user, /mob/living/silicon)) + user << text("Too far away.") + user.unset_machine() + user << browse(null, "window=ai_slipper") + return + + user.set_machine(src) + var/loc = src.loc + if (istype(loc, /turf)) + loc = loc:loc + if (!istype(loc, /area)) + user << text("Turret badly positioned - loc.loc is [].", loc) + return + var/area/area = loc + var/t = "AI Liquid Dispenser ([format_text(area.name)])
    " + + if(src.locked && (!istype(user, /mob/living/silicon))) + t += "(Swipe ID card to unlock control panel.)
    " + else + t += text("Dispenser [] - []?
    \n", src.disabled?"deactivated":"activated", src, src.disabled?"Enable":"Disable") + t += text("Uses Left: [uses]. Activate the dispenser?
    \n") + + user << browse(t, "window=computer;size=575x450") + onclose(user, "computer") + return + +/obj/machinery/ai_slipper/Topic(href, href_list) + if(..()) + return + if (src.locked) + if (!istype(usr, /mob/living/silicon)) + usr << "Control panel is locked!" + return + if (href_list["toggleOn"]) + src.disabled = !src.disabled + icon_state = src.disabled? "motion0":"motion3" + if (href_list["toggleUse"]) + if(cooldown_on || disabled) + return + else + new /obj/effect/effect/foam(src.loc) + src.uses-- + cooldown_on = 1 + cooldown_time = world.timeofday + 100 + slip_process() + return + + src.attack_hand(usr) + return + +/obj/machinery/ai_slipper/proc/slip_process() + while(cooldown_time - world.timeofday > 0) + var/ticksleft = cooldown_time - world.timeofday + + if(ticksleft > 1e5) + cooldown_time = world.timeofday + 10 // midnight rollover + + + cooldown_timeleft = (ticksleft / 10) + sleep(5) + if (uses <= 0) + return + if (uses >= 0) + cooldown_on = 0 + src.power_change() return \ No newline at end of file diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 6dfa1f4dd5f..993f8e03777 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -1,137 +1,137 @@ -/obj/machinery/computer/aifixer - name = "\improper AI system integrity restorer" - icon = 'icons/obj/computer.dmi' - icon_state = "ai-fixer" - req_access = list(access_captain, access_robotics, access_heads) - var/mob/living/silicon/ai/occupier = null - var/active = 0 - circuit = /obj/item/weapon/circuitboard/aifixer - -/obj/machinery/computer/aifixer/New() - src.overlays += image('icons/obj/computer.dmi', "ai-fixer-empty") - ..() - - -/obj/machinery/computer/aifixer/attackby(I as obj, user as mob) - if(occupier && istype(I, /obj/item/weapon/screwdriver)) - if(stat & (NOPOWER|BROKEN)) - user << "The screws on [name]'s screen won't budge." - else - user << "The screws on [name]'s screen won't budge and it emits a warning beep." - return - - if(istype(I, /obj/item/device/aicard)) - var/obj/item/device/aicard/AIcard = I - if(stat & (NOPOWER|BROKEN)) - if(occupier) - AIcard.transfer_ai("AIFIXER","AICARD",src,user) - overlays.Cut() - return - user << "This terminal isn't functioning right now, get it working!" - return - AIcard.transfer_ai("AIFIXER","AICARD",src,user) - else - ..() - return - -/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob) - if(..()) - return - interact(user) - -/obj/machinery/computer/aifixer/interact(mob/user) - - var/dat = "" - - if (src.occupier) - var/laws - dat += "

    Stored AI: [src.occupier.name]

    " - dat += "System integrity: [(src.occupier.health+100)/2]%
    " - - if (src.occupier.laws.zeroth) - laws += "0: [src.occupier.laws.zeroth]
    " - - var/number = 1 - for (var/index = 1, index <= src.occupier.laws.inherent.len, index++) - var/law = src.occupier.laws.inherent[index] - if (length(law) > 0) - laws += "[number]: [law]
    " - number++ - - for (var/index = 1, index <= src.occupier.laws.supplied.len, index++) - var/law = src.occupier.laws.supplied[index] - if (length(law) > 0) - laws += "[number]: [law]
    " - number++ - - dat += "Laws:
    [laws]
    " - - if (src.occupier.stat == 2) - dat += "AI non-functional" - else - dat += "AI functional" - if (!src.active) - dat += {"

    Begin Reconstruction"} - else - dat += "

    Reconstruction in process, please wait.
    " - dat += {"
    Close"} - - //user << browse(dat, "window=computer;size=400x500") - //onclose(user, "computer") - var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/aifixer/process() - if(..()) - src.updateDialog() - return - -/obj/machinery/computer/aifixer/Topic(href, href_list) - if(..()) - return - if (href_list["fix"]) - src.active = 1 - src.overlays += image('icons/obj/computer.dmi', "ai-fixer-on") - while (src.occupier.health < 100) - src.occupier.adjustOxyLoss(-1) - src.occupier.adjustFireLoss(-1) - src.occupier.adjustToxLoss(-1) - src.occupier.adjustBruteLoss(-1) - src.occupier.updatehealth() - if (src.occupier.health >= 0 && src.occupier.stat == 2) - src.occupier.stat = 0 - src.occupier.lying = 0 - dead_mob_list -= src.occupier - living_mob_list += src.occupier - src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-404") - src.overlays += image('icons/obj/computer.dmi', "ai-fixer-full") - src.updateUsrDialog() - sleep(10) - src.active = 0 - src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-on") - - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/machinery/computer/aifixer/update_icon() - ..() - // Broken / Unpowered - if((stat & BROKEN) || (stat & NOPOWER)) - overlays.Cut() - - // Working / Powered - else - if (occupier) - switch (occupier.stat) - if (0) - overlays += image('icons/obj/computer.dmi', "ai-fixer-full") - if (2) - overlays += image('icons/obj/computer.dmi', "ai-fixer-404") - else - overlays += image('icons/obj/computer.dmi', "ai-fixer-empty") +/obj/machinery/computer/aifixer + name = "\improper AI system integrity restorer" + icon = 'icons/obj/computer.dmi' + icon_state = "ai-fixer" + req_access = list(access_captain, access_robotics, access_heads) + var/mob/living/silicon/ai/occupier = null + var/active = 0 + circuit = /obj/item/weapon/circuitboard/aifixer + +/obj/machinery/computer/aifixer/New() + src.overlays += image('icons/obj/computer.dmi', "ai-fixer-empty") + ..() + + +/obj/machinery/computer/aifixer/attackby(I as obj, user as mob) + if(occupier && istype(I, /obj/item/weapon/screwdriver)) + if(stat & (NOPOWER|BROKEN)) + user << "The screws on [name]'s screen won't budge." + else + user << "The screws on [name]'s screen won't budge and it emits a warning beep." + return + + if(istype(I, /obj/item/device/aicard)) + var/obj/item/device/aicard/AIcard = I + if(stat & (NOPOWER|BROKEN)) + if(occupier) + AIcard.transfer_ai("AIFIXER","AICARD",src,user) + overlays.Cut() + return + user << "This terminal isn't functioning right now, get it working!" + return + AIcard.transfer_ai("AIFIXER","AICARD",src,user) + else + ..() + return + +/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob) + if(..()) + return + interact(user) + +/obj/machinery/computer/aifixer/interact(mob/user) + + var/dat = "" + + if (src.occupier) + var/laws + dat += "

    Stored AI: [src.occupier.name]

    " + dat += "System integrity: [(src.occupier.health+100)/2]%
    " + + if (src.occupier.laws.zeroth) + laws += "0: [src.occupier.laws.zeroth]
    " + + var/number = 1 + for (var/index = 1, index <= src.occupier.laws.inherent.len, index++) + var/law = src.occupier.laws.inherent[index] + if (length(law) > 0) + laws += "[number]: [law]
    " + number++ + + for (var/index = 1, index <= src.occupier.laws.supplied.len, index++) + var/law = src.occupier.laws.supplied[index] + if (length(law) > 0) + laws += "[number]: [law]
    " + number++ + + dat += "Laws:
    [laws]
    " + + if (src.occupier.stat == 2) + dat += "AI non-functional" + else + dat += "AI functional" + if (!src.active) + dat += {"

    Begin Reconstruction"} + else + dat += "

    Reconstruction in process, please wait.
    " + dat += {"
    Close"} + + //user << browse(dat, "window=computer;size=400x500") + //onclose(user, "computer") + var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/aifixer/process() + if(..()) + src.updateDialog() + return + +/obj/machinery/computer/aifixer/Topic(href, href_list) + if(..()) + return + if (href_list["fix"]) + src.active = 1 + src.overlays += image('icons/obj/computer.dmi', "ai-fixer-on") + while (src.occupier.health < 100) + src.occupier.adjustOxyLoss(-1) + src.occupier.adjustFireLoss(-1) + src.occupier.adjustToxLoss(-1) + src.occupier.adjustBruteLoss(-1) + src.occupier.updatehealth() + if (src.occupier.health >= 0 && src.occupier.stat == 2) + src.occupier.stat = 0 + src.occupier.lying = 0 + dead_mob_list -= src.occupier + living_mob_list += src.occupier + src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-404") + src.overlays += image('icons/obj/computer.dmi', "ai-fixer-full") + src.updateUsrDialog() + sleep(10) + src.active = 0 + src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-on") + + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + +/obj/machinery/computer/aifixer/update_icon() + ..() + // Broken / Unpowered + if((stat & BROKEN) || (stat & NOPOWER)) + overlays.Cut() + + // Working / Powered + else + if (occupier) + switch (occupier.stat) + if (0) + overlays += image('icons/obj/computer.dmi', "ai-fixer-full") + if (2) + overlays += image('icons/obj/computer.dmi', "ai-fixer-404") + else + overlays += image('icons/obj/computer.dmi', "ai-fixer-empty") diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index bdf58f727dc..d387102becf 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -140,4 +140,4 @@ return user.visible_message("[user.name] smashes against the [src.name] with its claws.",\ "You smash against the [src.name] with your claws.",\ - "You hear a clicking sound.") + "You hear a clicking sound.") diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 5409ba20ff0..9f9c32260d2 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -1,221 +1,221 @@ -#define NUKESCALINGMODIFIER 0.5 - -var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","Foxtrot","Zero", "Niner") - - -/obj/machinery/computer/telecrystals - name = "\improper Telecrystal assignment station" - desc = "A device used to manage telecrystals during group operations. You shouldn't be looking at this particular one..." - icon_state = "tcstation" - -///////////////////////////////////////////// -/obj/machinery/computer/telecrystals/uplinker - name = "\improper Telecrystal upload/recieve station" - desc = "A device used to manage telecrystals during group operations. To use, simply insert your uplink. With your uplink installed \ - you can upload your telecrystals to the group's pool using the console, or be assigned additional telecrystals by your lieutenant." - icon_state = "tcstation" - var/obj/item/uplinkholder = null - var/obj/machinery/computer/telecrystals/boss/linkedboss = null - -/obj/machinery/computer/telecrystals/uplinker/New() - ..() - - var/ID - if(possible_uplinker_IDs.len) - ID = pick(possible_uplinker_IDs) - possible_uplinker_IDs -= ID - name = "[name] [ID]" - else - name = "[name] [rand(1,999)]" - - -/obj/machinery/computer/telecrystals/uplinker/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, /obj/item)) - - if(uplinkholder) - user << "The [src] already has an uplink in it." - return - - if(O.hidden_uplink) - var/obj/item/P = user.get_active_hand() - user.drop_item() - uplinkholder = P - P.loc = src - P.add_fingerprint(user) - update_icon() - updateUsrDialog() - else - user << "The [O] doesn't appear to be an uplink..." - - - -/obj/machinery/computer/telecrystals/uplinker/update_icon() - overlays.Cut() - if(uplinkholder) - overlays += "[initial(icon_state)]-closed" - - -/obj/machinery/computer/telecrystals/uplinker/proc/ejectuplink() - if(uplinkholder) - uplinkholder.loc = get_turf(src.loc) - uplinkholder = null - update_icon() - -/obj/machinery/computer/telecrystals/uplinker/proc/donateTC(var/amt, var/addLog = 1) - if(uplinkholder && linkedboss) - if(amt <= uplinkholder.hidden_uplink.uses) - uplinkholder.hidden_uplink.uses -= amt - linkedboss.storedcrystals += amt - if(addLog) - linkedboss.logTransfer("[src] donated [amt] telecrystals to [linkedboss].") - -/obj/machinery/computer/telecrystals/uplinker/proc/giveTC(var/amt, var/addLog = 1) - if(uplinkholder && linkedboss) - if(amt <= linkedboss.storedcrystals) - uplinkholder.hidden_uplink.uses += amt - linkedboss.storedcrystals -= amt - if(addLog) - linkedboss.logTransfer("[src] recieved [amt] telecrystals from [linkedboss].") - -/////// - -/obj/machinery/computer/telecrystals/uplinker/attack_hand(mob/user as mob) - if(..()) - return - src.add_fingerprint(user) - user.set_machine(src) - - var/dat = "" - if(linkedboss) - dat += "[linkedboss] has [linkedboss.storedcrystals] telecrystals available for distribution.

    " - else - dat += "No linked management consoles detected. Scan for uplink stations using the management console.

    " - - if(uplinkholder) - dat += "[uplinkholder.hidden_uplink.uses] telecrystals remain in this uplink.
    " - if(linkedboss) - dat += "Donate TC: 1 | 5" - dat += "
    Eject Uplink" - - - var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Recieve Station", 700, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/telecrystals/uplinker/Topic(href, href_list) - if(..()) - return - - if(href_list["donate1"]) - donateTC(1) - - if(href_list["donate5"]) - donateTC(5) - - if(href_list["eject"]) - ejectuplink() - - src.updateUsrDialog() - - -///////////////////////////////////////// -/obj/machinery/computer/telecrystals/boss - name = "team Telecrystal management console" - desc = "A device used to manage telecrystals during group operations. To use, simply initialize the machine by scanning for nearby uplink stations. \ - Once the consoles are linked up, you can assign any telecrystals amongst your operatives; be they donated by your agents or rationed to the squad \ - based on the danger rating of the mission." - icon_state = "tcboss" - var/virgin = 1 - var/scanrange = 10 - var/storedcrystals = 0 - var/list/TCstations = list() - var/list/transferlog = list() - -/obj/machinery/computer/telecrystals/boss/proc/logTransfer(var/logmessage) - transferlog += ("[worldtime2text()] [logmessage]") - -/obj/machinery/computer/telecrystals/boss/proc/scanUplinkers() - for(var/obj/machinery/computer/telecrystals/uplinker/A in range(scanrange, src.loc)) - if(!A.linkedboss) - TCstations += A - A.linkedboss = src - if(virgin) - getDangerous() - virgin = 0 - -/obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population. - ..() - var/danger - danger = player_list.len - while(!IsMultiple(++danger,10))//Just round up to the nearest multiple of ten. - scaleTC(danger) - -/obj/machinery/computer/telecrystals/boss/proc/scaleTC(var/amt)//Its own proc, since it'll probably need a lot of tweaks for balance, use a fancier algorhithm, etc. - storedcrystals += amt * NUKESCALINGMODIFIER - -///////// - -/obj/machinery/computer/telecrystals/boss/attack_hand(var/mob/user as mob) - if(..()) - return - src.add_fingerprint(user) - user.set_machine(src) - - - var/dat = "" - dat += "Scan for TC stations.
    " - dat += "This [src] has [storedcrystals] telecrystals available for distribution.
    " - dat += "

    " - - - for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) - dat += "[A.name] | " - if(A.uplinkholder) - dat += "[A.uplinkholder.hidden_uplink.uses] telecrystals." - if(storedcrystals) - dat+= "
    Add TC: 1 | 5" - dat += "
    " - - if(TCstations.len) - dat += "

    Evenly distribute remaining TC.

    " - - - for(var/entry in transferlog) - dat += "[entry]
    " - - - var/datum/browser/popup = new(user, "computer", "Team Telecrystal Management Console", 700, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/telecrystals/boss/Topic(href, href_list) - if(..()) - return - - if(href_list["scan"]) - scanUplinkers() - - if(href_list["give1"]) - var/obj/machinery/computer/telecrystals/uplinker/A = locate(href_list["give1"]) - A.giveTC(1) - - if(href_list["give5"]) - var/obj/machinery/computer/telecrystals/uplinker/A = locate(href_list["give5"]) - A.giveTC(5) - - if(href_list["distrib"]) - var/sanity = 0 - while(storedcrystals && sanity < 100) - for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) - A.giveTC(1,0) - sanity++ - logTransfer("[src] evenly distributed telecrystals.") - - src.updateUsrDialog() - return - +#define NUKESCALINGMODIFIER 0.5 + +var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","Foxtrot","Zero", "Niner") + + +/obj/machinery/computer/telecrystals + name = "\improper Telecrystal assignment station" + desc = "A device used to manage telecrystals during group operations. You shouldn't be looking at this particular one..." + icon_state = "tcstation" + +///////////////////////////////////////////// +/obj/machinery/computer/telecrystals/uplinker + name = "\improper Telecrystal upload/recieve station" + desc = "A device used to manage telecrystals during group operations. To use, simply insert your uplink. With your uplink installed \ + you can upload your telecrystals to the group's pool using the console, or be assigned additional telecrystals by your lieutenant." + icon_state = "tcstation" + var/obj/item/uplinkholder = null + var/obj/machinery/computer/telecrystals/boss/linkedboss = null + +/obj/machinery/computer/telecrystals/uplinker/New() + ..() + + var/ID + if(possible_uplinker_IDs.len) + ID = pick(possible_uplinker_IDs) + possible_uplinker_IDs -= ID + name = "[name] [ID]" + else + name = "[name] [rand(1,999)]" + + +/obj/machinery/computer/telecrystals/uplinker/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item)) + + if(uplinkholder) + user << "The [src] already has an uplink in it." + return + + if(O.hidden_uplink) + var/obj/item/P = user.get_active_hand() + user.drop_item() + uplinkholder = P + P.loc = src + P.add_fingerprint(user) + update_icon() + updateUsrDialog() + else + user << "The [O] doesn't appear to be an uplink..." + + + +/obj/machinery/computer/telecrystals/uplinker/update_icon() + overlays.Cut() + if(uplinkholder) + overlays += "[initial(icon_state)]-closed" + + +/obj/machinery/computer/telecrystals/uplinker/proc/ejectuplink() + if(uplinkholder) + uplinkholder.loc = get_turf(src.loc) + uplinkholder = null + update_icon() + +/obj/machinery/computer/telecrystals/uplinker/proc/donateTC(var/amt, var/addLog = 1) + if(uplinkholder && linkedboss) + if(amt <= uplinkholder.hidden_uplink.uses) + uplinkholder.hidden_uplink.uses -= amt + linkedboss.storedcrystals += amt + if(addLog) + linkedboss.logTransfer("[src] donated [amt] telecrystals to [linkedboss].") + +/obj/machinery/computer/telecrystals/uplinker/proc/giveTC(var/amt, var/addLog = 1) + if(uplinkholder && linkedboss) + if(amt <= linkedboss.storedcrystals) + uplinkholder.hidden_uplink.uses += amt + linkedboss.storedcrystals -= amt + if(addLog) + linkedboss.logTransfer("[src] recieved [amt] telecrystals from [linkedboss].") + +/////// + +/obj/machinery/computer/telecrystals/uplinker/attack_hand(mob/user as mob) + if(..()) + return + src.add_fingerprint(user) + user.set_machine(src) + + var/dat = "" + if(linkedboss) + dat += "[linkedboss] has [linkedboss.storedcrystals] telecrystals available for distribution.

    " + else + dat += "No linked management consoles detected. Scan for uplink stations using the management console.

    " + + if(uplinkholder) + dat += "[uplinkholder.hidden_uplink.uses] telecrystals remain in this uplink.
    " + if(linkedboss) + dat += "Donate TC: 1 | 5" + dat += "
    Eject Uplink" + + + var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Recieve Station", 700, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/telecrystals/uplinker/Topic(href, href_list) + if(..()) + return + + if(href_list["donate1"]) + donateTC(1) + + if(href_list["donate5"]) + donateTC(5) + + if(href_list["eject"]) + ejectuplink() + + src.updateUsrDialog() + + +///////////////////////////////////////// +/obj/machinery/computer/telecrystals/boss + name = "team Telecrystal management console" + desc = "A device used to manage telecrystals during group operations. To use, simply initialize the machine by scanning for nearby uplink stations. \ + Once the consoles are linked up, you can assign any telecrystals amongst your operatives; be they donated by your agents or rationed to the squad \ + based on the danger rating of the mission." + icon_state = "tcboss" + var/virgin = 1 + var/scanrange = 10 + var/storedcrystals = 0 + var/list/TCstations = list() + var/list/transferlog = list() + +/obj/machinery/computer/telecrystals/boss/proc/logTransfer(var/logmessage) + transferlog += ("[worldtime2text()] [logmessage]") + +/obj/machinery/computer/telecrystals/boss/proc/scanUplinkers() + for(var/obj/machinery/computer/telecrystals/uplinker/A in range(scanrange, src.loc)) + if(!A.linkedboss) + TCstations += A + A.linkedboss = src + if(virgin) + getDangerous() + virgin = 0 + +/obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population. + ..() + var/danger + danger = player_list.len + while(!IsMultiple(++danger,10))//Just round up to the nearest multiple of ten. + scaleTC(danger) + +/obj/machinery/computer/telecrystals/boss/proc/scaleTC(var/amt)//Its own proc, since it'll probably need a lot of tweaks for balance, use a fancier algorhithm, etc. + storedcrystals += amt * NUKESCALINGMODIFIER + +///////// + +/obj/machinery/computer/telecrystals/boss/attack_hand(var/mob/user as mob) + if(..()) + return + src.add_fingerprint(user) + user.set_machine(src) + + + var/dat = "" + dat += "Scan for TC stations.
    " + dat += "This [src] has [storedcrystals] telecrystals available for distribution.
    " + dat += "

    " + + + for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) + dat += "[A.name] | " + if(A.uplinkholder) + dat += "[A.uplinkholder.hidden_uplink.uses] telecrystals." + if(storedcrystals) + dat+= "
    Add TC: 1 | 5" + dat += "
    " + + if(TCstations.len) + dat += "

    Evenly distribute remaining TC.

    " + + + for(var/entry in transferlog) + dat += "[entry]
    " + + + var/datum/browser/popup = new(user, "computer", "Team Telecrystal Management Console", 700, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/telecrystals/boss/Topic(href, href_list) + if(..()) + return + + if(href_list["scan"]) + scanUplinkers() + + if(href_list["give1"]) + var/obj/machinery/computer/telecrystals/uplinker/A = locate(href_list["give1"]) + A.giveTC(1) + + if(href_list["give5"]) + var/obj/machinery/computer/telecrystals/uplinker/A = locate(href_list["give5"]) + A.giveTC(5) + + if(href_list["distrib"]) + var/sanity = 0 + while(storedcrystals && sanity < 100) + for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) + A.giveTC(1,0) + sanity++ + logTransfer("[src] evenly distributed telecrystals.") + + src.updateUsrDialog() + return + #undef NUKESCALINGMODIFIER \ No newline at end of file diff --git a/code/game/machinery/kitchen/icecream_vat.dm b/code/game/machinery/kitchen/icecream_vat.dm index cb949c00eec..0108b1f8fd3 100644 --- a/code/game/machinery/kitchen/icecream_vat.dm +++ b/code/game/machinery/kitchen/icecream_vat.dm @@ -1,246 +1,246 @@ -#define ICECREAM_VANILLA 1 -#define FLAVOUR_CHOCOLATE 2 -#define FLAVOUR_STRAWBERRY 3 -#define FLAVOUR_BLUE 4 -#define CONE_WAFFLE 5 -#define CONE_CHOC 6 -#define INGR_MILK 7 -#define INGR_FLOUR 8 -#define INGR_SUGAR 9 -#define INGR_ICE 10 -#define MUCK 11 - -var/list/ingredients_source = list( -"berryjuice" = FLAVOUR_STRAWBERRY,\ -"coco" = FLAVOUR_CHOCOLATE,\ -"singulo" = FLAVOUR_BLUE,\ -"milk" = INGR_MILK,\ -"soymilk" = INGR_MILK,\ -"ice" = INGR_ICE,\ -"flour" = INGR_FLOUR,\ -"sugar" = INGR_SUGAR,\ -) - -/proc/get_icecream_flavour_string(var/flavour_type) - switch(flavour_type) - if(FLAVOUR_CHOCOLATE) - return "chocolate" - if(FLAVOUR_STRAWBERRY) - return "strawberry" - if(FLAVOUR_BLUE) - return "blue" - if(CONE_WAFFLE) - return "waffle" - if(CONE_CHOC) - return "chocolate" - if(INGR_MILK) - return "milk" - if(INGR_FLOUR) - return "flour" - if(INGR_SUGAR) - return "sugar" - if(INGR_ICE) - return "ice" - if(MUCK) - return "muck" - else - return "vanilla" - -/obj/machinery/icecream_vat - name = "icecream vat" - desc = "Ding-aling ding dong. Get your Nanotrasen-approved ice cream!" - icon = 'icons/obj/kitchen.dmi' - icon_state = "icecream_vat" - density = 1 - anchored = 0 - var/list/ingredients = list() - var/dispense_flavour = ICECREAM_VANILLA - var/obj/item/weapon/reagent_containers/glass/held_container - -/obj/machinery/icecream_vat/New() - ..() - - while(ingredients.len < 11) - ingredients.Add(5) - -/obj/machinery/icecream_vat/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/obj/machinery/icecream_vat/interact(mob/user as mob) - var/dat - dat += "Dispense vanilla icecream There is [ingredients[ICECREAM_VANILLA]] scoops of vanilla icecream left (made from milk and ice).
    " - dat += "Dispense strawberry icecream There is [ingredients[FLAVOUR_STRAWBERRY]] dollops of strawberry flavouring left (obtained from berry juice.
    " - dat += "Dispense chocolate icecream There is [ingredients[FLAVOUR_CHOCOLATE]] dollops of chocolate flavouring left (obtained from cocoa powder).
    " - dat += "Dispense blue icecream There is [ingredients[FLAVOUR_BLUE]] dollops of blue flavouring left (obtained from bluespace tomato singulo).
    " - dat += "
    " - dat += "Dispense waffle cones There are [ingredients[CONE_WAFFLE]] waffle cones left.
    " - dat += "Dispense chocolate cones There are [ingredients[CONE_CHOC]] chocolate cones left.
    " - dat += "
    " - dat += "Make waffle cones There is [ingredients[INGR_FLOUR]]/[ingredients[INGR_SUGAR]] of flour and sugar left.
    " - dat += "Make chocolate cones There is [ingredients[FLAVOUR_CHOCOLATE]]/[ingredients[CONE_WAFFLE]] of chocolate flavouring and waffle cones left.
    " - dat += "Make vanilla icecream There is [ingredients[INGR_MILK]]/[ingredients[INGR_ICE]] of milk and ice left.
    " - dat += "
    " - if(held_container) - dat += "Eject [held_container] " - else - dat += "No beaker inserted. " - dat += "Refresh Close" - - var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 400, src) - popup.set_content(dat) - popup.open() - -/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/weapon/reagent_containers)) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream)) - var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O - if(!I.ice_creamed) - if(ingredients[ICECREAM_VANILLA] > 0) - var/flavour_name = get_icecream_flavour_string(dispense_flavour) - if(ingredients[dispense_flavour] > 0) - src.visible_message("\icon[src] [user] scoops delicious [flavour_name] flavoured icecream into [I].") - ingredients[dispense_flavour] -= 1 - ingredients[ICECREAM_VANILLA] -= 1 - - I.add_ice_cream(dispense_flavour) - if(held_container) - held_container.reagents.trans_to(I, 10) - if(I.reagents.total_volume < 10) - I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) - else - user << "There is not enough [flavour_name] flavouring left! Insert more of the required ingredients." - else - user << "There is not enough icecream left! Insert more milk and ice." - else - user << "[O] already has icecream in it." - else if(istype(O, /obj/item/weapon/reagent_containers/glass)) - if(held_container) - user << "You must remove [held_container] from [src] first." - else - user << "You insert [O] into [src]." - user.drop_item() - O.loc = src - held_container = O - else - var/obj/item/weapon/reagent_containers/R = O - if(R.reagents) - src.visible_message("[user] has emptied all of [R] into [src].") - for (var/datum/reagent/current_reagent in R.reagents.reagent_list) - if(ingredients_source[current_reagent.id]) - add(ingredients_source[current_reagent.id], current_reagent.volume / 2) - else - add(MUCK, current_reagent.volume / 5) - R.reagents.clear_reagents() - return 1 - else - ..() - -/obj/machinery/icecream_vat/proc/add(var/add_type, var/amount) - if(add_type <= ingredients.len) - ingredients[add_type] += amount - updateDialog() - -/obj/machinery/icecream_vat/proc/make(var/mob/user, var/make_type) - switch(make_type) - if(CONE_WAFFLE) - if(ingredients[INGR_FLOUR] > 0 && ingredients[INGR_SUGAR] > 0) - var/amount = max( min(ingredients[INGR_FLOUR], ingredients[INGR_SUGAR]), 5) - ingredients[INGR_FLOUR] -= amount - ingredients[INGR_SUGAR] -= amount - ingredients[CONE_WAFFLE] += amount - src.visible_message("[user] cooks up some waffle cones.") - else - user << "You require sugar and flour to make waffle cones." - if(CONE_CHOC) - if(ingredients[FLAVOUR_CHOCOLATE] > 0 && ingredients[CONE_WAFFLE] > 0) - var/amount = min(ingredients[CONE_WAFFLE], ingredients[FLAVOUR_CHOCOLATE]) - ingredients[CONE_WAFFLE] -= amount - ingredients[FLAVOUR_CHOCOLATE] -= amount - ingredients[CONE_CHOC] += amount - src.visible_message("[user] cooks up some chocolate cones.") - else - user << "You require waffle cones and chocolate flavouring to make chocolate cones." - if(ICECREAM_VANILLA) - if(ingredients[INGR_ICE] > 0 && ingredients[INGR_MILK] > 0) - var/amount = min(ingredients[INGR_ICE], ingredients[INGR_MILK]) - ingredients[INGR_ICE] -= amount - ingredients[INGR_MILK] -= amount - ingredients[ICECREAM_VANILLA] += amount - src.visible_message("[user] whips up some vanilla icecream.") - else - user << "You require milk and ice to make vanilla icecream." - updateDialog() - -/obj/machinery/icecream_vat/Topic(href, href_list) - if(..()) - return - if(href_list["dispense"]) - dispense_flavour = text2num(href_list["dispense"]) - src.visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") - - if(href_list["cone"]) - var/dispense_cone = text2num(href_list["cone"]) - if(ingredients[dispense_cone] <= ingredients.len) - var/cone_name = get_icecream_flavour_string(dispense_cone) - if(ingredients[dispense_cone] >= 1) - ingredients[dispense_cone] -= 1 - var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) - I.cone_type = cone_name - I.icon_state = "icecream_cone_[cone_name]" - I.desc = "Delicious [cone_name] cone, but no ice cream." - src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") - else - usr << "There are no [cone_name] cones left!" - updateDialog() - - if(href_list["make"]) - make( usr, text2num(href_list["make"]) ) - updateDialog() - - if(href_list["eject"]) - if(held_container) - held_container.loc = src.loc - held_container = null - updateDialog() - - if(href_list["refresh"]) - updateDialog() - - if(href_list["close"]) - usr.unset_machine() - usr << browse(null,"window=icecreamvat") - return - -/obj/item/weapon/reagent_containers/food/snacks/icecream - name = "ice cream cone" - desc = "Delicious waffle cone, but no ice cream." - icon = 'icons/obj/kitchen.dmi' - icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time - layer = 3.1 - var/ice_creamed = 0 - var/cone_type - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/icecream/New() - create_reagents(20) - reagents.add_reagent("nutriment", 5) - -/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour) - var/flavour_name = get_icecream_flavour_string(flavour) - name = "[flavour_name] icecream" - src.overlays += "icecream_[flavour_name]" - desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." - ice_creamed = 1 - -#undef ICECREAM_VANILLA -#undef FLAVOUR_CHOCOLATE -#undef FLAVOUR_STRAWBERRY -#undef FLAVOUR_BLUE -#undef CONE_WAFFLE -#undef CONE_CHOC -#undef INGR_MILK -#undef INGR_FLOUR -#undef INGR_SUGAR -#undef INGR_ICE -#undef MUCK +#define ICECREAM_VANILLA 1 +#define FLAVOUR_CHOCOLATE 2 +#define FLAVOUR_STRAWBERRY 3 +#define FLAVOUR_BLUE 4 +#define CONE_WAFFLE 5 +#define CONE_CHOC 6 +#define INGR_MILK 7 +#define INGR_FLOUR 8 +#define INGR_SUGAR 9 +#define INGR_ICE 10 +#define MUCK 11 + +var/list/ingredients_source = list( +"berryjuice" = FLAVOUR_STRAWBERRY,\ +"coco" = FLAVOUR_CHOCOLATE,\ +"singulo" = FLAVOUR_BLUE,\ +"milk" = INGR_MILK,\ +"soymilk" = INGR_MILK,\ +"ice" = INGR_ICE,\ +"flour" = INGR_FLOUR,\ +"sugar" = INGR_SUGAR,\ +) + +/proc/get_icecream_flavour_string(var/flavour_type) + switch(flavour_type) + if(FLAVOUR_CHOCOLATE) + return "chocolate" + if(FLAVOUR_STRAWBERRY) + return "strawberry" + if(FLAVOUR_BLUE) + return "blue" + if(CONE_WAFFLE) + return "waffle" + if(CONE_CHOC) + return "chocolate" + if(INGR_MILK) + return "milk" + if(INGR_FLOUR) + return "flour" + if(INGR_SUGAR) + return "sugar" + if(INGR_ICE) + return "ice" + if(MUCK) + return "muck" + else + return "vanilla" + +/obj/machinery/icecream_vat + name = "icecream vat" + desc = "Ding-aling ding dong. Get your Nanotrasen-approved ice cream!" + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_vat" + density = 1 + anchored = 0 + var/list/ingredients = list() + var/dispense_flavour = ICECREAM_VANILLA + var/obj/item/weapon/reagent_containers/glass/held_container + +/obj/machinery/icecream_vat/New() + ..() + + while(ingredients.len < 11) + ingredients.Add(5) + +/obj/machinery/icecream_vat/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/obj/machinery/icecream_vat/interact(mob/user as mob) + var/dat + dat += "Dispense vanilla icecream There is [ingredients[ICECREAM_VANILLA]] scoops of vanilla icecream left (made from milk and ice).
    " + dat += "Dispense strawberry icecream There is [ingredients[FLAVOUR_STRAWBERRY]] dollops of strawberry flavouring left (obtained from berry juice.
    " + dat += "Dispense chocolate icecream There is [ingredients[FLAVOUR_CHOCOLATE]] dollops of chocolate flavouring left (obtained from cocoa powder).
    " + dat += "Dispense blue icecream There is [ingredients[FLAVOUR_BLUE]] dollops of blue flavouring left (obtained from bluespace tomato singulo).
    " + dat += "
    " + dat += "Dispense waffle cones There are [ingredients[CONE_WAFFLE]] waffle cones left.
    " + dat += "Dispense chocolate cones There are [ingredients[CONE_CHOC]] chocolate cones left.
    " + dat += "
    " + dat += "Make waffle cones There is [ingredients[INGR_FLOUR]]/[ingredients[INGR_SUGAR]] of flour and sugar left.
    " + dat += "Make chocolate cones There is [ingredients[FLAVOUR_CHOCOLATE]]/[ingredients[CONE_WAFFLE]] of chocolate flavouring and waffle cones left.
    " + dat += "Make vanilla icecream There is [ingredients[INGR_MILK]]/[ingredients[INGR_ICE]] of milk and ice left.
    " + dat += "
    " + if(held_container) + dat += "Eject [held_container] " + else + dat += "No beaker inserted. " + dat += "Refresh Close" + + var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 400, src) + popup.set_content(dat) + popup.open() + +/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers)) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream)) + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O + if(!I.ice_creamed) + if(ingredients[ICECREAM_VANILLA] > 0) + var/flavour_name = get_icecream_flavour_string(dispense_flavour) + if(ingredients[dispense_flavour] > 0) + src.visible_message("\icon[src] [user] scoops delicious [flavour_name] flavoured icecream into [I].") + ingredients[dispense_flavour] -= 1 + ingredients[ICECREAM_VANILLA] -= 1 + + I.add_ice_cream(dispense_flavour) + if(held_container) + held_container.reagents.trans_to(I, 10) + if(I.reagents.total_volume < 10) + I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) + else + user << "There is not enough [flavour_name] flavouring left! Insert more of the required ingredients." + else + user << "There is not enough icecream left! Insert more milk and ice." + else + user << "[O] already has icecream in it." + else if(istype(O, /obj/item/weapon/reagent_containers/glass)) + if(held_container) + user << "You must remove [held_container] from [src] first." + else + user << "You insert [O] into [src]." + user.drop_item() + O.loc = src + held_container = O + else + var/obj/item/weapon/reagent_containers/R = O + if(R.reagents) + src.visible_message("[user] has emptied all of [R] into [src].") + for (var/datum/reagent/current_reagent in R.reagents.reagent_list) + if(ingredients_source[current_reagent.id]) + add(ingredients_source[current_reagent.id], current_reagent.volume / 2) + else + add(MUCK, current_reagent.volume / 5) + R.reagents.clear_reagents() + return 1 + else + ..() + +/obj/machinery/icecream_vat/proc/add(var/add_type, var/amount) + if(add_type <= ingredients.len) + ingredients[add_type] += amount + updateDialog() + +/obj/machinery/icecream_vat/proc/make(var/mob/user, var/make_type) + switch(make_type) + if(CONE_WAFFLE) + if(ingredients[INGR_FLOUR] > 0 && ingredients[INGR_SUGAR] > 0) + var/amount = max( min(ingredients[INGR_FLOUR], ingredients[INGR_SUGAR]), 5) + ingredients[INGR_FLOUR] -= amount + ingredients[INGR_SUGAR] -= amount + ingredients[CONE_WAFFLE] += amount + src.visible_message("[user] cooks up some waffle cones.") + else + user << "You require sugar and flour to make waffle cones." + if(CONE_CHOC) + if(ingredients[FLAVOUR_CHOCOLATE] > 0 && ingredients[CONE_WAFFLE] > 0) + var/amount = min(ingredients[CONE_WAFFLE], ingredients[FLAVOUR_CHOCOLATE]) + ingredients[CONE_WAFFLE] -= amount + ingredients[FLAVOUR_CHOCOLATE] -= amount + ingredients[CONE_CHOC] += amount + src.visible_message("[user] cooks up some chocolate cones.") + else + user << "You require waffle cones and chocolate flavouring to make chocolate cones." + if(ICECREAM_VANILLA) + if(ingredients[INGR_ICE] > 0 && ingredients[INGR_MILK] > 0) + var/amount = min(ingredients[INGR_ICE], ingredients[INGR_MILK]) + ingredients[INGR_ICE] -= amount + ingredients[INGR_MILK] -= amount + ingredients[ICECREAM_VANILLA] += amount + src.visible_message("[user] whips up some vanilla icecream.") + else + user << "You require milk and ice to make vanilla icecream." + updateDialog() + +/obj/machinery/icecream_vat/Topic(href, href_list) + if(..()) + return + if(href_list["dispense"]) + dispense_flavour = text2num(href_list["dispense"]) + src.visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") + + if(href_list["cone"]) + var/dispense_cone = text2num(href_list["cone"]) + if(ingredients[dispense_cone] <= ingredients.len) + var/cone_name = get_icecream_flavour_string(dispense_cone) + if(ingredients[dispense_cone] >= 1) + ingredients[dispense_cone] -= 1 + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) + I.cone_type = cone_name + I.icon_state = "icecream_cone_[cone_name]" + I.desc = "Delicious [cone_name] cone, but no ice cream." + src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") + else + usr << "There are no [cone_name] cones left!" + updateDialog() + + if(href_list["make"]) + make( usr, text2num(href_list["make"]) ) + updateDialog() + + if(href_list["eject"]) + if(held_container) + held_container.loc = src.loc + held_container = null + updateDialog() + + if(href_list["refresh"]) + updateDialog() + + if(href_list["close"]) + usr.unset_machine() + usr << browse(null,"window=icecreamvat") + return + +/obj/item/weapon/reagent_containers/food/snacks/icecream + name = "ice cream cone" + desc = "Delicious waffle cone, but no ice cream." + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time + layer = 3.1 + var/ice_creamed = 0 + var/cone_type + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/icecream/New() + create_reagents(20) + reagents.add_reagent("nutriment", 5) + +/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour) + var/flavour_name = get_icecream_flavour_string(flavour) + name = "[flavour_name] icecream" + src.overlays += "icecream_[flavour_name]" + desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." + ice_creamed = 1 + +#undef ICECREAM_VANILLA +#undef FLAVOUR_CHOCOLATE +#undef FLAVOUR_STRAWBERRY +#undef FLAVOUR_BLUE +#undef CONE_WAFFLE +#undef CONE_CHOC +#undef INGR_MILK +#undef INGR_FLOUR +#undef INGR_SUGAR +#undef INGR_ICE +#undef MUCK diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index b3ce20d7a9d..ca98373bad7 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -1,1028 +1,1028 @@ -//############################################## -//################### NEWSCASTERS BE HERE! #### -//###-Agouri################################### - -/datum/feed_message - var/author ="" - var/body ="" - //var/parent_channel - var/backup_body ="" - var/backup_author ="" - var/is_admin_message = 0 - var/icon/img = null - -/datum/feed_channel - var/channel_name="" - var/list/datum/feed_message/messages = list() - //var/message_count = 0 - var/locked=0 - var/author="" - var/backup_author="" - var/censored=0 - var/is_admin_channel=0 - //var/page = null //For newspapers - -/datum/feed_message/proc/clear() - src.author = "" - src.body = "" - src.backup_body = "" - src.backup_author = "" - src.img = null - -/datum/feed_channel/proc/clear() - src.channel_name = "" - src.messages = list() - src.locked = 0 - src.author = "" - src.backup_author = "" - src.censored = 0 - src.is_admin_channel = 0 - -/datum/feed_network - var/list/datum/feed_channel/network_channels = list() - var/datum/feed_message/wanted_issue - -var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list. - -var/list/obj/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence. - - -/obj/item/newscaster_frame - name = "newscaster frame" - desc = "Used to build newscasters, just secure to the wall." - icon_state = "newscaster" - item_state = "syringe_kit" - m_amt = 25000 - g_amt = 15000 - -/obj/item/newscaster_frame/proc/try_build(turf/on_wall) - if (get_dist(on_wall,usr)>1) - return - var/ndir = get_dir(usr,on_wall) - if (!(ndir in cardinal)) - return - var/turf/loc = get_turf(usr) - var/area/A = loc.loc - if (!istype(loc, /turf/simulated/floor)) - usr << "Newscaster cannot be placed on this spot." - return - if (A.requires_power == 0 || A.name == "Space") - usr << "Newscaster cannot be placed in this area." - return - for(var/obj/machinery/newscaster/T in loc) - usr << "There is another newscaster here." - return - var/obj/machinery/newscaster/N = new(loc) - N.pixel_y -= (loc.y - on_wall.y) * 32 - N.pixel_x -= (loc.x - on_wall.x) * 32 - qdel(src) - - - - -/obj/machinery/newscaster - name = "newscaster" - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!" - icon = 'icons/obj/terminals.dmi' - icon_state = "newscaster_normal" - var/isbroken = 0 //1 if someone banged it with something heavy - var/ispowered = 1 //starts powered, changes with power_change() - //var/list/datum/feed_channel/channel_list = list() //This list will contain the names of the feed channels. Each name will refer to a data region where the messages of the feed channels are stored. - //OBSOLETE: We're now using a global news network - var/screen = 0 //Or maybe I'll make it into a list within a list afterwards... whichever I prefer, go fuck yourselves :3 - // 0 = welcome screen - main menu - // 1 = view feed channels - // 2 = create feed channel - // 3 = create feed story - // 4 = feed story submited sucessfully - // 5 = feed channel created successfully - // 6 = ERROR: Cannot create feed story - // 7 = ERROR: Cannot create feed channel - // 8 = print newspaper - // 9 = viewing channel feeds - // 10 = censor feed story - // 11 = censor feed channel - //Holy shit this is outdated, made this when I was still starting newscasters :3 - var/paper_remaining = 0 - var/securityCaster = 0 - // 0 = Caster cannot be used to issue wanted posters - // 1 = the opposite - var/unit_no = 0 //Each newscaster has a unit number - //var/datum/feed_message/wanted //We're gonna use a feed_message to store data of the wanted person because fields are similar - //var/wanted_issue = 0 //OBSOLETE - // 0 = there's no WANTED issued, we don't need a special icon_state - // 1 = Guess what. - var/alert_delay = 500 - var/alert = 0 - // 0 = there hasn't been a news/wanted update in the last alert_delay - // 1 = there has - var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster - var/msg = ""; //Feed message - var/obj/item/weapon/photo/photo = null - var/channel_name = ""; //the feed channel which will be receiving the feed, or being created - var/c_locked=0; //Will our new channel be locked to public submissions? - var/hitstaken = 0 //Death at 3 hits from an item with force>=15 - var/datum/feed_channel/viewing_channel = null - luminosity = 0 - anchored = 1 - - -/obj/machinery/newscaster/security_unit //Security unit - name = "security newscaster" - securityCaster = 1 - -/obj/machinery/newscaster/New() //Constructor, ho~ - allCasters += src - src.paper_remaining = 15 // Will probably change this to something better - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) // Let's give it an appropriate unit number - src.unit_no++ - src.update_icon() //for any custom ones on the map... - ..() //I just realised the newscasters weren't in the global machines list. The superconstructor call will tend to that - -/obj/machinery/newscaster/Destroy() - allCasters -= src - ..() - -/obj/machinery/newscaster/update_icon() - if(!ispowered || isbroken) - icon_state = "newscaster_off" - if(isbroken) //If the thing is smashed, add crack overlay on top of the unpowered sprite. - src.overlays.Cut() - src.overlays += image(src.icon, "crack3") - return - - src.overlays.Cut() //reset overlays - - if(news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message - icon_state = "newscaster_wanted" - return - - if(alert) //new message alert overlay - src.overlays += "newscaster_alert" - - if(hitstaken > 0) //Cosmetic damage overlay - src.overlays += image(src.icon, "crack[hitstaken]") - - icon_state = "newscaster_normal" - return - -/obj/machinery/newscaster/power_change() - if(isbroken) //Broken shit can't be powered. - return - if( src.powered() ) - src.ispowered = 1 - stat &= ~NOPOWER - src.update_icon() - else - spawn(rand(0, 15)) - src.ispowered = 0 - stat |= NOPOWER - src.update_icon() - - -/obj/machinery/newscaster/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - src.isbroken=1 - if(prob(50)) - qdel(src) - else - src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in. - return - else - if(prob(50)) - src.isbroken=1 - src.update_icon() - return - return - -/obj/machinery/newscaster/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ - if(!src.ispowered || src.isbroken) - return - if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) - var/mob/living/human_or_robot_user = user - var/dat - - src.scan_user(human_or_robot_user) //Newscaster scans you - - switch(screen) - if(0) - dat += "Welcome to Newscasting Unit #[src.unit_no].
    Interface & News networks Operational." - dat += "
    Property of Nanotransen Inc" - if(news_network.wanted_issue) - dat+= "
    Read Wanted Issue" - dat+= "

    Create Feed Channel" - dat+= "
    View Feed Channels" - dat+= "
    Submit new Feed story" - dat+= "
    Print newspaper" - dat+= "
    Re-scan User" - dat+= "

    Exit" - if(src.securityCaster) - var/wanted_already = 0 - if(news_network.wanted_issue) - wanted_already = 1 - - dat+="
    Feed Security functions:
    " - dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
    Censor Feed Stories" - dat+="
    Mark Feed Channel with Nanotrasen D-Notice" - dat+="

    The newscaster recognises you as: [src.scanned_user]" - if(1) - dat+= "Station Feed Channels
    " - if( isemptylist(news_network.network_channels) ) - dat+="No active channels found..." - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
    " - else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - /*for(var/datum/feed_channel/CHANNEL in src.channel_list) - dat+="[CHANNEL.channel_name]:
    \[created by: [CHANNEL.author]\]

    " - if( isemptylist(CHANNEL.messages) ) - dat+="No feed messages found in channel...

    " - else - for(var/datum/feed_message/MESSAGE in CHANNEL.messages) - dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    "*/ - - dat+="

    Refresh" - dat+="
    Back" - if(2) - dat+="Creating new Feed Channel..." - dat+="
    Channel Name: [src.channel_name]
    " - dat+="Channel Author: [src.scanned_user]
    " - dat+="Will Accept Public Feeds: [(src.c_locked) ? ("NO") : ("YES")]

    " - dat+="
    Submit

    Cancel
    " - if(3) - dat+="Creating new Feed Message..." - dat+="
    Receiving Channel: [src.channel_name]
    " //MARK - dat+="Message Author: [src.scanned_user]
    " - dat+="Message Body: [src.msg]
    " - dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
    " - dat+="
    Submit

    Cancel
    " - if(4) - dat+="Feed story successfully submitted to [src.channel_name].

    " - dat+="
    Return
    " - if(5) - dat+="Feed Channel [src.channel_name] created successfully.

    " - dat+="
    Return
    " - if(6) - dat+="ERROR: Could not submit Feed story to Network.

    " - if(src.channel_name=="") - dat+="•Invalid receiving channel name.
    " - if(src.scanned_user=="Unknown") - dat+="•Channel author unverified.
    " - if(src.msg == "" || src.msg == "\[REDACTED\]") - dat+="•Invalid message body.
    " - - dat+="
    Return
    " - if(7) - dat+="ERROR: Could not submit Feed Channel to Network.

    " - //var/list/existing_channels = list() //Let's get dem existing channels - OBSOLETE - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in news_network.network_channels) - //existing_channels += FC.channel_name //OBSOLETE - if(FC.author == "\[REDACTED\]") - existing_authors += FC.backup_author - else - existing_authors += FC.author - if(src.scanned_user in existing_authors) - dat+="•There already exists a Feed channel under your name.
    " - if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") - dat+="•Invalid channel name.
    " - var/check = 0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - check = 1 - break - if(check) - dat+="•Channel name already in use.
    " - if(src.scanned_user=="Unknown") - dat+="•Channel author unverified.
    " - dat+="
    Return
    " - if(8) - var/total_num=length(news_network.network_channels) - var/active_num=total_num - var/message_num=0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(!FC.censored) - message_num += length(FC.messages) //Dont forget, datum/feed_channel's var messages is a list of datum/feed_message - else - active_num-- - dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." //TODO: CONTINUE - dat+="

    Liquid Paper remaining: [(src.paper_remaining) *100 ] cm^3" - dat+="

    Print Paper" - dat+="
    Cancel" - if(9) - dat+="[src.viewing_channel.channel_name]: \[created by: [src.viewing_channel.author]\]
    " - if(src.viewing_channel.censored) - dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " - dat+="No further feed story additions are allowed while the D-Notice is in effect.

    " - else - if( isemptylist(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
    " - else - var/i = 0 - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - i++ - dat+="-[MESSAGE.body]
    " - if(MESSAGE.img) - usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png") - dat+="

    " - dat+="\[Story by [MESSAGE.author]\]
    " - dat+="

    Refresh" - dat+="
    Back" - if(10) - dat+="Nanotrasen Feed Censorship Tool
    " - dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    " - dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.
    " - dat+="
    Select Feed channel to get Stories from:
    " - if(isemptylist(news_network.network_channels)) - dat+="No feed channels found active...
    " - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="
    Cancel" - if(11) - dat+="Nanotrasen D-Notice Handler
    " - dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" - dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed" - dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.
    " - if(isemptylist(news_network.network_channels)) - dat+="No feed channels found active...
    " - else - for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - - dat+="
    Back" - if(12) - dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
    " - dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
    " - - - if( isemptylist(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
    " - else - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    " - dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
    " - dat+="
    Back" - if(13) - dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
    " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " - if(src.viewing_channel.censored) - dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " - dat+="No further feed story additions are allowed while the D-Notice is in effect.

    " - else - if( isemptylist(src.viewing_channel.messages) ) - dat+="No feed messages found in channel...
    " - else - for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) - dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    " - - dat+="
    Back" - if(14) - dat+="Wanted Issue Handler:" - var/wanted_already = 0 - var/end_param = 1 - if(news_network.wanted_issue) - wanted_already = 1 - end_param = 2 - - if(wanted_already) - dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " - dat+="
    " - dat+="Criminal Name: [src.channel_name]
    " - dat+="Description: [src.msg]
    " - dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
    " - if(wanted_already) - dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
    " - else - dat+="Wanted Issue will be created under prosecutor: [src.scanned_user]
    " - dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" - if(wanted_already) - dat+="
    Take down Issue" - dat+="
    Cancel" - if(15) - dat+="Wanted issue for [src.channel_name] is now in Network Circulation.

    " - dat+="
    Return
    " - if(16) - dat+="ERROR: Wanted Issue rejected by Network.

    " - if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") - dat+="•Invalid name for person wanted.
    " - if(src.scanned_user=="Unknown") - dat+="•Issue author unverified.
    " - if(src.msg == "" || src.msg == "\[REDACTED\]") - dat+="•Invalid description.
    " - dat+="
    Return
    " - if(17) - dat+="Wanted Issue successfully deleted from Circulation
    " - dat+="
    Return
    " - if(18) - if(news_network.wanted_issue) - dat+="-- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [news_network.wanted_issue.backup_author]\]
    " - dat+="Criminal: [news_network.wanted_issue.author]
    " - dat+="Description: [news_network.wanted_issue.body]
    " - dat+="Photo:: " - if(news_network.wanted_issue.img) - usr << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") - dat+="
    " - else - dat+="None" - else - dat+="No current wanted issue found.

    " - dat+="

    Back
    " - if(19) - dat+="Wanted issue for [src.channel_name] successfully edited.

    " - dat+="
    Return
    " - if(20) - dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

    " - dat+="Return" - if(21) - dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

    " - dat+="Return" - else - dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - - //human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600") - //onclose(human_or_robot_user, "newscaster_main") - - var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[src.unit_no]", 400, 600) - popup.set_content(dat) - popup.set_title_image(human_or_robot_user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - - /*if(src.isbroken) //debugging shit - return - src.hitstaken++ - if(src.hitstaken==3) - src.isbroken = 1 - src.update_icon()*/ - - -/obj/machinery/newscaster/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["set_channel_name"]) - src.channel_name = strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["set_channel_lock"]) - src.c_locked = !src.c_locked - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["submit_new_channel"]) - //var/list/existing_channels = list() //OBSOLETE - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in news_network.network_channels) - //existing_channels += FC.channel_name - if(FC.author == "\[REDACTED\]") - existing_authors += FC.backup_author - else - existing_authors +=FC.author - var/check = 0 - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - check = 1 - break - if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) ) - src.screen=7 - else - var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") - if(choice=="Confirm") - var/datum/feed_channel/newChannel = new /datum/feed_channel - newChannel.channel_name = src.channel_name - newChannel.author = src.scanned_user - newChannel.locked = c_locked - feedback_inc("newscaster_channels",1) - /*for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) //Let's add the new channel in all casters. - NEWSCASTER.channel_list += newChannel*/ //Now that it is sane, get it into the list. -OBSOLETE - news_network.network_channels += newChannel //Adding channel to the global network - src.screen=5 - src.updateUsrDialog() - //src.update_icon() - - else if(href_list["set_channel_receiving"]) - //var/list/datum/feed_channel/available_channels = list() - var/list/available_channels = list() - for(var/datum/feed_channel/F in news_network.network_channels) - if( (!F.locked || F.author == scanned_user) && !F.censored) - available_channels += F.channel_name - src.channel_name = strip_html(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels ) - src.updateUsrDialog() - - else if(href_list["set_new_message"]) - src.msg = strip_html(input(usr, "Write your Feed story", "Network Channel Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,lentext(src.msg)+1) - src.updateUsrDialog() - - else if(href_list["set_attachment"]) - AttachPhoto(usr) - src.updateUsrDialog() - - else if(href_list["submit_new_message"]) - if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" ) - src.screen=6 - else - var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = src.scanned_user - newMsg.body = src.msg - if(photo) - newMsg.img = photo.img - feedback_inc("newscaster_stories",1) - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - FC.messages += newMsg //Adding message to the network's appropriate feed_channel - break - src.screen=4 - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert(src.channel_name) - - src.updateUsrDialog() - - else if(href_list["create_channel"]) - src.screen=2 - src.updateUsrDialog() - - else if(href_list["create_feed_story"]) - src.screen=3 - src.updateUsrDialog() - - else if(href_list["menu_paper"]) - src.screen=8 - src.updateUsrDialog() - else if(href_list["print_paper"]) - if(!src.paper_remaining) - src.screen=21 - else - src.print_paper() - src.screen = 20 - src.updateUsrDialog() - - else if(href_list["menu_censor_story"]) - src.screen=10 - src.updateUsrDialog() - - else if(href_list["menu_censor_channel"]) - src.screen=11 - src.updateUsrDialog() - - else if(href_list["menu_wanted"]) - var/already_wanted = 0 - if(news_network.wanted_issue) - already_wanted = 1 - - if(already_wanted) - src.channel_name = news_network.wanted_issue.author - src.msg = news_network.wanted_issue.body - src.screen = 14 - src.updateUsrDialog() - - else if(href_list["set_wanted_name"]) - src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) - src.updateUsrDialog() - - else if(href_list["set_wanted_desc"]) - src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,lentext(src.msg)+1) - src.updateUsrDialog() - - else if(href_list["submit_wanted"]) - var/input_param = text2num(href_list["submit_wanted"]) - if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown") - src.screen = 16 - else - var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel") - if(choice=="Confirm") - if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below - var/datum/feed_message/WANTED = new /datum/feed_message - WANTED.author = src.channel_name - WANTED.body = src.msg - WANTED.backup_author = src.scanned_user //I know, a bit wacky - if(photo) - WANTED.img = photo.img - news_network.wanted_issue = WANTED - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert() - NEWSCASTER.update_icon() - src.screen = 15 - else - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok") - return - news_network.wanted_issue.author = src.channel_name - news_network.wanted_issue.body = src.msg - news_network.wanted_issue.backup_author = src.scanned_user - if(photo) - news_network.wanted_issue.img = photo.img - src.screen = 19 - - src.updateUsrDialog() - - else if(href_list["cancel_wanted"]) - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok") - return - var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") - if(choice=="Confirm") - news_network.wanted_issue = null - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.update_icon() - src.screen=17 - src.updateUsrDialog() - - else if(href_list["view_wanted"]) - src.screen=18 - src.updateUsrDialog() - else if(href_list["censor_channel_author"]) - var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) - if(FC.is_admin_channel) - alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") - return - if(FC.author != "\[REDACTED\]") - FC.backup_author = FC.author - FC.author = "\[REDACTED\]" - else - FC.author = FC.backup_author - src.updateUsrDialog() - - else if(href_list["censor_channel_story_author"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) - if(MSG.is_admin_message) - alert("This message was created by a Nanotrasen Officer. You cannot censor its author.","Ok") - return - if(MSG.author != "\[REDACTED\]") - MSG.backup_author = MSG.author - MSG.author = "\[REDACTED\]" - else - MSG.author = MSG.backup_author - src.updateUsrDialog() - - else if(href_list["censor_channel_story_body"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) - if(MSG.is_admin_message) - alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") - return - if(MSG.body != "\[REDACTED\]") - MSG.backup_body = MSG.body - MSG.body = "\[REDACTED\]" - else - MSG.body = MSG.backup_body - src.updateUsrDialog() - - else if(href_list["pick_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["pick_d_notice"]) - src.viewing_channel = FC - src.screen=13 - src.updateUsrDialog() - - else if(href_list["toggle_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) - if(FC.is_admin_channel) - alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok") - return - FC.censored = !FC.censored - src.updateUsrDialog() - - else if(href_list["view"]) - src.screen=1 - src.updateUsrDialog() - - else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~ - src.screen = text2num(href_list["setScreen"]) - if (src.screen == 0) - src.scanned_user = "Unknown"; - msg = ""; - src.c_locked=0; - channel_name=""; - src.viewing_channel = null - src.updateUsrDialog() - - else if(href_list["show_channel"]) - var/datum/feed_channel/FC = locate(href_list["show_channel"]) - src.viewing_channel = FC - src.screen = 9 - src.updateUsrDialog() - - else if(href_list["pick_censor_channel"]) - var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"]) - src.viewing_channel = FC - src.screen = 12 - src.updateUsrDialog() - - else if(href_list["refresh"]) - src.updateUsrDialog() - - -/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob) - -/* if (istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda) ) //Name verification for channels or messages - if(src.screen == 4 || src.screen == 5) - if( istype(I, /obj/item/device/pda) ) - var/obj/item/device/pda/P = I - if(P.id) - src.scanned_user = "[P.id.registered_name] ([P.id.assignment])" - src.screen=2 - else - var/obj/item/weapon/card/id/T = I - src.scanned_user = text("[T.registered_name] ([T.assignment])") - src.screen=2*/ //Obsolete after autorecognition - - if(istype(I, /obj/item/weapon/wrench)) - user << "Now [anchored ? "un" : ""]securing [name]" - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 60)) - new /obj/item/newscaster_frame(loc) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - qdel(src) - return - - if (src.isbroken) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] further abuses the shattered [src.name].") - else - if(istype(I, /obj/item/weapon) ) - var/obj/item/weapon/W = I - if(W.force <15) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] hits the [src.name] with the [W.name] with no visible effect." ) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) - else - src.hitstaken++ - if(src.hitstaken==3) - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] smashes the [src.name]!" ) - src.isbroken=1 - playsound(src.loc, 'sound/effects/Glassbr3.ogg', 100, 1) - else - for (var/mob/O in hearers(5, src.loc)) - O.show_message("[user.name] forcefully slams the [src.name] with the [I.name]!" ) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) - else - user << "This does nothing." - src.update_icon() - - -/obj/machinery/newscaster/attack_paw(mob/user as mob) - user << "The newscaster controls are far too complicated for your tiny brain!" - return - -/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob) - if(photo) - photo.loc = src.loc - user.put_in_inactive_hand(photo) - photo = null - if(istype(user.get_active_hand(), /obj/item/weapon/photo)) - photo = user.get_active_hand() - user.drop_item() - photo.loc = src - if(istype(usr,/mob/living/silicon/ai)) - var/list/nametemp = list() - var/find - var/datum/picture/selection - var/mob/living/silicon/ai/tempAI = user - if(tempAI.aicamera.aipictures.len == 0) - usr << "No images saved" - return - for(var/datum/picture/t in tempAI.aicamera.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() - for(var/datum/picture/q in tempAI.aicamera.aipictures) - if(q.fields["name"] == find) - selection = q - break // just in case some AI decides to take 10 thousand pictures in a round - P.icon = selection.fields["icon"] - P.img = selection.fields["img"] - P.desc = selection.fields["desc"] - photo = P - - - - - -//######################################################################################################################## -//###################################### NEWSPAPER! ###################################################################### -//######################################################################################################################## - -/obj/item/weapon/newspaper - name = "newspaper" - desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations." - icon = 'icons/obj/bureaucracy.dmi' - icon_state = "newspaper" - w_class = 2 //Let's make it fit in trashbags! - attack_verb = list("bapped") - var/screen = 0 - var/pages = 0 - var/curr_page = 0 - var/list/datum/feed_channel/news_content = list() - var/datum/feed_message/important_message = null - var/scribble="" - var/scribble_page = null - -/*obj/item/weapon/newspaper/attack_hand(mob/user as mob) - ..() - world << "derp"*/ - -obj/item/weapon/newspaper/attack_self(mob/user as mob) - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - var/dat - src.pages = 0 - switch(screen) - if(0) //Cover - dat+="
    The Griffon
    " - dat+="
    Nanotrasen-standard newspaper, for use on Nanotrasen© Space Facilities

    " - if(isemptylist(src.news_content)) - if(src.important_message) - dat+="Contents:
      **Important Security Announcement** \[page [src.pages+2]\]
    " - else - dat+="Other than the title, the rest of the newspaper is unprinted..." - else - dat+="Contents:
      " - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ - if(src.important_message) - dat+="**Important Security Announcement** \[page [src.pages+2]\]
      " - var/temp_page=0 - for(var/datum/feed_channel/NP in src.news_content) - temp_page++ - dat+="[NP.channel_name] \[page [temp_page+1]\]
      " - dat+="
    " - if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "
    " - if(1) // X channel pages inbetween. - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ //Let's get it right again. - var/datum/feed_channel/C = src.news_content[src.curr_page] - dat+="[C.channel_name] \[created by: [C.author]\]

    " - if(C.censored) - dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." - else - if(isemptylist(C.messages)) - dat+="No Feed stories stem from this channel..." - else - dat+="
      " - var/i = 0 - for(var/datum/feed_message/MESSAGE in C.messages) - i++ - dat+="-[MESSAGE.body]
      " - if(MESSAGE.img) - user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") - dat+="
      " - dat+="\[Story by [MESSAGE.author]\]

      " - dat+="
    " - if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "

    " - if(2) //Last page - for(var/datum/feed_channel/NP in src.news_content) - src.pages++ - if(src.important_message!=null) - dat+="
    Wanted Issue:


    " - dat+="Criminal name: [important_message.author]
    " - dat+="Description: [important_message.body]
    " - dat+="Photo:: " - if(important_message.img) - user << browse_rsc(important_message.img, "tmp_photow.png") - dat+="
    " - else - dat+="None" - else - dat+="Apart from some uninteresting Classified ads, there's nothing on this page..." - if(scribble_page==curr_page) - dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" - dat+= "
    " - else - dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - - dat+="

    [src.curr_page+1]
    " - human_user << browse(dat, "window=newspaper_main;size=300x400") - onclose(human_user, "newspaper_main") - else - user << "The paper is full of intelligible symbols!" - - -obj/item/weapon/newspaper/Topic(href, href_list) - var/mob/living/U = usr - ..() - if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) )) - U.set_machine(src) - if(href_list["next_page"]) - if(curr_page==src.pages+1) - return //Don't need that at all, but anyway. - if(src.curr_page == src.pages) //We're at the middle, get to the end - src.screen = 2 - else - if(curr_page == 0) //We're at the start, get to the middle - src.screen=1 - src.curr_page++ - playsound(src.loc, "pageturn", 50, 1) - - else if(href_list["prev_page"]) - if(curr_page == 0) - return - if(curr_page == 1) - src.screen = 0 - - else - if(curr_page == src.pages+1) //we're at the end, let's go back to the middle. - src.screen = 1 - src.curr_page-- - playsound(src.loc, "pageturn", 50, 1) - - if (istype(src.loc, /mob)) - src.attack_self(src.loc) - - -obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/pen)) - if(src.scribble_page == src.curr_page) - user << "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?" - else - var/s = strip_html( input(user, "Write something", "Newspaper", "") ) - s = copytext(sanitize(s), 1, MAX_MESSAGE_LEN) - if (!s) - return - if (!in_range(src, usr) && src.loc != usr) - return - src.scribble_page = src.curr_page - src.scribble = s - src.attack_self(user) - return - - -////////////////////////////////////helper procs - - -/obj/machinery/newscaster/proc/scan_user(mob/living/user as mob) - if(istype(user,/mob/living/carbon/human)) //User is a human - var/mob/living/carbon/human/human_user = user - if(human_user.wear_id) //Newscaster scans you - if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo! - var/obj/item/device/pda/P = human_user.wear_id - if(P.id) - src.scanned_user = "[P.id.registered_name] ([P.id.assignment])" - else - src.scanned_user = "Unknown" - else if(istype(human_user.wear_id, /obj/item/weapon/card/id) ) - var/obj/item/weapon/card/id/ID = human_user.wear_id - src.scanned_user ="[ID.registered_name] ([ID.assignment])" - else - src.scanned_user ="Unknown" - else - src.scanned_user ="Unknown" - else - var/mob/living/silicon/ai_user = user - src.scanned_user = "[ai_user.name] ([ai_user.job])" - - -/obj/machinery/newscaster/proc/print_paper() - feedback_inc("newscaster_newspapers_printed",1) - var/obj/item/weapon/newspaper/NEWSPAPER = new /obj/item/weapon/newspaper - for(var/datum/feed_channel/FC in news_network.network_channels) - NEWSPAPER.news_content += FC - if(news_network.wanted_issue) - NEWSPAPER.important_message = news_network.wanted_issue - NEWSPAPER.loc = get_turf(src) - src.paper_remaining-- - return - -//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later. -///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not -// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list. - -/obj/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile. - var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ - if(channel) - for(var/mob/O in hearers(world.view-1, T)) - O.show_message("[src.name] beeps, \"Breaking news from [channel]!\"",2) - src.alert = 1 - src.update_icon() - spawn(300) - src.alert = 0 - src.update_icon() - playsound(src.loc, 'sound/machines/twobeep.ogg', 75, 1) - else - for(var/mob/O in hearers(world.view-1, T)) - O.show_message("[src.name] beeps, \"Attention! Wanted issue distributed!\"",2) - playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 75, 1) +//############################################## +//################### NEWSCASTERS BE HERE! #### +//###-Agouri################################### + +/datum/feed_message + var/author ="" + var/body ="" + //var/parent_channel + var/backup_body ="" + var/backup_author ="" + var/is_admin_message = 0 + var/icon/img = null + +/datum/feed_channel + var/channel_name="" + var/list/datum/feed_message/messages = list() + //var/message_count = 0 + var/locked=0 + var/author="" + var/backup_author="" + var/censored=0 + var/is_admin_channel=0 + //var/page = null //For newspapers + +/datum/feed_message/proc/clear() + src.author = "" + src.body = "" + src.backup_body = "" + src.backup_author = "" + src.img = null + +/datum/feed_channel/proc/clear() + src.channel_name = "" + src.messages = list() + src.locked = 0 + src.author = "" + src.backup_author = "" + src.censored = 0 + src.is_admin_channel = 0 + +/datum/feed_network + var/list/datum/feed_channel/network_channels = list() + var/datum/feed_message/wanted_issue + +var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list. + +var/list/obj/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence. + + +/obj/item/newscaster_frame + name = "newscaster frame" + desc = "Used to build newscasters, just secure to the wall." + icon_state = "newscaster" + item_state = "syringe_kit" + m_amt = 25000 + g_amt = 15000 + +/obj/item/newscaster_frame/proc/try_build(turf/on_wall) + if (get_dist(on_wall,usr)>1) + return + var/ndir = get_dir(usr,on_wall) + if (!(ndir in cardinal)) + return + var/turf/loc = get_turf(usr) + var/area/A = loc.loc + if (!istype(loc, /turf/simulated/floor)) + usr << "Newscaster cannot be placed on this spot." + return + if (A.requires_power == 0 || A.name == "Space") + usr << "Newscaster cannot be placed in this area." + return + for(var/obj/machinery/newscaster/T in loc) + usr << "There is another newscaster here." + return + var/obj/machinery/newscaster/N = new(loc) + N.pixel_y -= (loc.y - on_wall.y) * 32 + N.pixel_x -= (loc.x - on_wall.x) * 32 + qdel(src) + + + + +/obj/machinery/newscaster + name = "newscaster" + desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!" + icon = 'icons/obj/terminals.dmi' + icon_state = "newscaster_normal" + var/isbroken = 0 //1 if someone banged it with something heavy + var/ispowered = 1 //starts powered, changes with power_change() + //var/list/datum/feed_channel/channel_list = list() //This list will contain the names of the feed channels. Each name will refer to a data region where the messages of the feed channels are stored. + //OBSOLETE: We're now using a global news network + var/screen = 0 //Or maybe I'll make it into a list within a list afterwards... whichever I prefer, go fuck yourselves :3 + // 0 = welcome screen - main menu + // 1 = view feed channels + // 2 = create feed channel + // 3 = create feed story + // 4 = feed story submited sucessfully + // 5 = feed channel created successfully + // 6 = ERROR: Cannot create feed story + // 7 = ERROR: Cannot create feed channel + // 8 = print newspaper + // 9 = viewing channel feeds + // 10 = censor feed story + // 11 = censor feed channel + //Holy shit this is outdated, made this when I was still starting newscasters :3 + var/paper_remaining = 0 + var/securityCaster = 0 + // 0 = Caster cannot be used to issue wanted posters + // 1 = the opposite + var/unit_no = 0 //Each newscaster has a unit number + //var/datum/feed_message/wanted //We're gonna use a feed_message to store data of the wanted person because fields are similar + //var/wanted_issue = 0 //OBSOLETE + // 0 = there's no WANTED issued, we don't need a special icon_state + // 1 = Guess what. + var/alert_delay = 500 + var/alert = 0 + // 0 = there hasn't been a news/wanted update in the last alert_delay + // 1 = there has + var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster + var/msg = ""; //Feed message + var/obj/item/weapon/photo/photo = null + var/channel_name = ""; //the feed channel which will be receiving the feed, or being created + var/c_locked=0; //Will our new channel be locked to public submissions? + var/hitstaken = 0 //Death at 3 hits from an item with force>=15 + var/datum/feed_channel/viewing_channel = null + luminosity = 0 + anchored = 1 + + +/obj/machinery/newscaster/security_unit //Security unit + name = "security newscaster" + securityCaster = 1 + +/obj/machinery/newscaster/New() //Constructor, ho~ + allCasters += src + src.paper_remaining = 15 // Will probably change this to something better + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) // Let's give it an appropriate unit number + src.unit_no++ + src.update_icon() //for any custom ones on the map... + ..() //I just realised the newscasters weren't in the global machines list. The superconstructor call will tend to that + +/obj/machinery/newscaster/Destroy() + allCasters -= src + ..() + +/obj/machinery/newscaster/update_icon() + if(!ispowered || isbroken) + icon_state = "newscaster_off" + if(isbroken) //If the thing is smashed, add crack overlay on top of the unpowered sprite. + src.overlays.Cut() + src.overlays += image(src.icon, "crack3") + return + + src.overlays.Cut() //reset overlays + + if(news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message + icon_state = "newscaster_wanted" + return + + if(alert) //new message alert overlay + src.overlays += "newscaster_alert" + + if(hitstaken > 0) //Cosmetic damage overlay + src.overlays += image(src.icon, "crack[hitstaken]") + + icon_state = "newscaster_normal" + return + +/obj/machinery/newscaster/power_change() + if(isbroken) //Broken shit can't be powered. + return + if( src.powered() ) + src.ispowered = 1 + stat &= ~NOPOWER + src.update_icon() + else + spawn(rand(0, 15)) + src.ispowered = 0 + stat |= NOPOWER + src.update_icon() + + +/obj/machinery/newscaster/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + src.isbroken=1 + if(prob(50)) + qdel(src) + else + src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in. + return + else + if(prob(50)) + src.isbroken=1 + src.update_icon() + return + return + +/obj/machinery/newscaster/attack_ai(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ + if(!src.ispowered || src.isbroken) + return + if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) + var/mob/living/human_or_robot_user = user + var/dat + + src.scan_user(human_or_robot_user) //Newscaster scans you + + switch(screen) + if(0) + dat += "Welcome to Newscasting Unit #[src.unit_no].
    Interface & News networks Operational." + dat += "
    Property of Nanotransen Inc" + if(news_network.wanted_issue) + dat+= "
    Read Wanted Issue" + dat+= "

    Create Feed Channel" + dat+= "
    View Feed Channels" + dat+= "
    Submit new Feed story" + dat+= "
    Print newspaper" + dat+= "
    Re-scan User" + dat+= "

    Exit" + if(src.securityCaster) + var/wanted_already = 0 + if(news_network.wanted_issue) + wanted_already = 1 + + dat+="
    Feed Security functions:
    " + dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" + dat+="
    Censor Feed Stories" + dat+="
    Mark Feed Channel with Nanotrasen D-Notice" + dat+="

    The newscaster recognises you as: [src.scanned_user]" + if(1) + dat+= "Station Feed Channels
    " + if( isemptylist(news_network.network_channels) ) + dat+="No active channels found..." + else + for(var/datum/feed_channel/CHANNEL in news_network.network_channels) + if(CHANNEL.is_admin_channel) + dat+="[CHANNEL.channel_name]
    " + else + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + /*for(var/datum/feed_channel/CHANNEL in src.channel_list) + dat+="[CHANNEL.channel_name]:
    \[created by: [CHANNEL.author]\]

    " + if( isemptylist(CHANNEL.messages) ) + dat+="No feed messages found in channel...

    " + else + for(var/datum/feed_message/MESSAGE in CHANNEL.messages) + dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    "*/ + + dat+="

    Refresh" + dat+="
    Back" + if(2) + dat+="Creating new Feed Channel..." + dat+="
    Channel Name: [src.channel_name]
    " + dat+="Channel Author: [src.scanned_user]
    " + dat+="Will Accept Public Feeds: [(src.c_locked) ? ("NO") : ("YES")]

    " + dat+="
    Submit

    Cancel
    " + if(3) + dat+="Creating new Feed Message..." + dat+="
    Receiving Channel: [src.channel_name]
    " //MARK + dat+="Message Author: [src.scanned_user]
    " + dat+="Message Body: [src.msg]
    " + dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
    " + dat+="
    Submit

    Cancel
    " + if(4) + dat+="Feed story successfully submitted to [src.channel_name].

    " + dat+="
    Return
    " + if(5) + dat+="Feed Channel [src.channel_name] created successfully.

    " + dat+="
    Return
    " + if(6) + dat+="ERROR: Could not submit Feed story to Network.

    " + if(src.channel_name=="") + dat+="•Invalid receiving channel name.
    " + if(src.scanned_user=="Unknown") + dat+="•Channel author unverified.
    " + if(src.msg == "" || src.msg == "\[REDACTED\]") + dat+="•Invalid message body.
    " + + dat+="
    Return
    " + if(7) + dat+="ERROR: Could not submit Feed Channel to Network.

    " + //var/list/existing_channels = list() //Let's get dem existing channels - OBSOLETE + var/list/existing_authors = list() + for(var/datum/feed_channel/FC in news_network.network_channels) + //existing_channels += FC.channel_name //OBSOLETE + if(FC.author == "\[REDACTED\]") + existing_authors += FC.backup_author + else + existing_authors += FC.author + if(src.scanned_user in existing_authors) + dat+="•There already exists a Feed channel under your name.
    " + if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") + dat+="•Invalid channel name.
    " + var/check = 0 + for(var/datum/feed_channel/FC in news_network.network_channels) + if(FC.channel_name == src.channel_name) + check = 1 + break + if(check) + dat+="•Channel name already in use.
    " + if(src.scanned_user=="Unknown") + dat+="•Channel author unverified.
    " + dat+="
    Return
    " + if(8) + var/total_num=length(news_network.network_channels) + var/active_num=total_num + var/message_num=0 + for(var/datum/feed_channel/FC in news_network.network_channels) + if(!FC.censored) + message_num += length(FC.messages) //Dont forget, datum/feed_channel's var messages is a list of datum/feed_message + else + active_num-- + dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." //TODO: CONTINUE + dat+="

    Liquid Paper remaining: [(src.paper_remaining) *100 ] cm^3" + dat+="

    Print Paper" + dat+="
    Cancel" + if(9) + dat+="[src.viewing_channel.channel_name]: \[created by: [src.viewing_channel.author]\]
    " + if(src.viewing_channel.censored) + dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " + dat+="No further feed story additions are allowed while the D-Notice is in effect.


    " + else + if( isemptylist(src.viewing_channel.messages) ) + dat+="No feed messages found in channel...
    " + else + var/i = 0 + for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) + i++ + dat+="-[MESSAGE.body]
    " + if(MESSAGE.img) + usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png") + dat+="

    " + dat+="\[Story by [MESSAGE.author]\]
    " + dat+="

    Refresh" + dat+="
    Back" + if(10) + dat+="Nanotrasen Feed Censorship Tool
    " + dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    " + dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.
    " + dat+="
    Select Feed channel to get Stories from:
    " + if(isemptylist(news_network.network_channels)) + dat+="No feed channels found active...
    " + else + for(var/datum/feed_channel/CHANNEL in news_network.network_channels) + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="
    Cancel" + if(11) + dat+="Nanotrasen D-Notice Handler
    " + dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" + dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed" + dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.
    " + if(isemptylist(news_network.network_channels)) + dat+="No feed channels found active...
    " + else + for(var/datum/feed_channel/CHANNEL in news_network.network_channels) + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + + dat+="
    Back" + if(12) + dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
    " + dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
    " + + + if( isemptylist(src.viewing_channel.messages) ) + dat+="No feed messages found in channel...
    " + else + for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) + dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    " + dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
    " + dat+="
    Back" + if(13) + dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
    " + dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " + if(src.viewing_channel.censored) + dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " + dat+="No further feed story additions are allowed while the D-Notice is in effect.

    " + else + if( isemptylist(src.viewing_channel.messages) ) + dat+="No feed messages found in channel...
    " + else + for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages) + dat+="-[MESSAGE.body]
    \[Story by [MESSAGE.author]\]
    " + + dat+="
    Back" + if(14) + dat+="Wanted Issue Handler:" + var/wanted_already = 0 + var/end_param = 1 + if(news_network.wanted_issue) + wanted_already = 1 + end_param = 2 + + if(wanted_already) + dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " + dat+="
    " + dat+="Criminal Name: [src.channel_name]
    " + dat+="Description: [src.msg]
    " + dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]
    " + if(wanted_already) + dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
    " + else + dat+="Wanted Issue will be created under prosecutor: [src.scanned_user]
    " + dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" + if(wanted_already) + dat+="
    Take down Issue" + dat+="
    Cancel" + if(15) + dat+="Wanted issue for [src.channel_name] is now in Network Circulation.

    " + dat+="
    Return
    " + if(16) + dat+="ERROR: Wanted Issue rejected by Network.

    " + if(src.channel_name=="" || src.channel_name == "\[REDACTED\]") + dat+="•Invalid name for person wanted.
    " + if(src.scanned_user=="Unknown") + dat+="•Issue author unverified.
    " + if(src.msg == "" || src.msg == "\[REDACTED\]") + dat+="•Invalid description.
    " + dat+="
    Return
    " + if(17) + dat+="Wanted Issue successfully deleted from Circulation
    " + dat+="
    Return
    " + if(18) + if(news_network.wanted_issue) + dat+="-- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [news_network.wanted_issue.backup_author]\]
    " + dat+="Criminal: [news_network.wanted_issue.author]
    " + dat+="Description: [news_network.wanted_issue.body]
    " + dat+="Photo:: " + if(news_network.wanted_issue.img) + usr << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") + dat+="
    " + else + dat+="None" + else + dat+="No current wanted issue found.

    " + dat+="

    Back
    " + if(19) + dat+="Wanted issue for [src.channel_name] successfully edited.

    " + dat+="
    Return
    " + if(20) + dat+="Printing successful. Please receive your newspaper from the bottom of the machine.

    " + dat+="Return" + if(21) + dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.

    " + dat+="Return" + else + dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" + + //human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600") + //onclose(human_or_robot_user, "newscaster_main") + + var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[src.unit_no]", 400, 600) + popup.set_content(dat) + popup.set_title_image(human_or_robot_user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + + /*if(src.isbroken) //debugging shit + return + src.hitstaken++ + if(src.hitstaken==3) + src.isbroken = 1 + src.update_icon()*/ + + +/obj/machinery/newscaster/Topic(href, href_list) + if(..()) + return + if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + if(href_list["set_channel_name"]) + src.channel_name = strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")) + while (findtext(src.channel_name," ") == 1) + src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) + src.updateUsrDialog() + //src.update_icon() + + else if(href_list["set_channel_lock"]) + src.c_locked = !src.c_locked + src.updateUsrDialog() + //src.update_icon() + + else if(href_list["submit_new_channel"]) + //var/list/existing_channels = list() //OBSOLETE + var/list/existing_authors = list() + for(var/datum/feed_channel/FC in news_network.network_channels) + //existing_channels += FC.channel_name + if(FC.author == "\[REDACTED\]") + existing_authors += FC.backup_author + else + existing_authors +=FC.author + var/check = 0 + for(var/datum/feed_channel/FC in news_network.network_channels) + if(FC.channel_name == src.channel_name) + check = 1 + break + if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) ) + src.screen=7 + else + var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") + if(choice=="Confirm") + var/datum/feed_channel/newChannel = new /datum/feed_channel + newChannel.channel_name = src.channel_name + newChannel.author = src.scanned_user + newChannel.locked = c_locked + feedback_inc("newscaster_channels",1) + /*for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) //Let's add the new channel in all casters. + NEWSCASTER.channel_list += newChannel*/ //Now that it is sane, get it into the list. -OBSOLETE + news_network.network_channels += newChannel //Adding channel to the global network + src.screen=5 + src.updateUsrDialog() + //src.update_icon() + + else if(href_list["set_channel_receiving"]) + //var/list/datum/feed_channel/available_channels = list() + var/list/available_channels = list() + for(var/datum/feed_channel/F in news_network.network_channels) + if( (!F.locked || F.author == scanned_user) && !F.censored) + available_channels += F.channel_name + src.channel_name = strip_html(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels ) + src.updateUsrDialog() + + else if(href_list["set_new_message"]) + src.msg = strip_html(input(usr, "Write your Feed story", "Network Channel Handler", "")) + while (findtext(src.msg," ") == 1) + src.msg = copytext(src.msg,2,lentext(src.msg)+1) + src.updateUsrDialog() + + else if(href_list["set_attachment"]) + AttachPhoto(usr) + src.updateUsrDialog() + + else if(href_list["submit_new_message"]) + if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" ) + src.screen=6 + else + var/datum/feed_message/newMsg = new /datum/feed_message + newMsg.author = src.scanned_user + newMsg.body = src.msg + if(photo) + newMsg.img = photo.img + feedback_inc("newscaster_stories",1) + for(var/datum/feed_channel/FC in news_network.network_channels) + if(FC.channel_name == src.channel_name) + FC.messages += newMsg //Adding message to the network's appropriate feed_channel + break + src.screen=4 + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.newsAlert(src.channel_name) + + src.updateUsrDialog() + + else if(href_list["create_channel"]) + src.screen=2 + src.updateUsrDialog() + + else if(href_list["create_feed_story"]) + src.screen=3 + src.updateUsrDialog() + + else if(href_list["menu_paper"]) + src.screen=8 + src.updateUsrDialog() + else if(href_list["print_paper"]) + if(!src.paper_remaining) + src.screen=21 + else + src.print_paper() + src.screen = 20 + src.updateUsrDialog() + + else if(href_list["menu_censor_story"]) + src.screen=10 + src.updateUsrDialog() + + else if(href_list["menu_censor_channel"]) + src.screen=11 + src.updateUsrDialog() + + else if(href_list["menu_wanted"]) + var/already_wanted = 0 + if(news_network.wanted_issue) + already_wanted = 1 + + if(already_wanted) + src.channel_name = news_network.wanted_issue.author + src.msg = news_network.wanted_issue.body + src.screen = 14 + src.updateUsrDialog() + + else if(href_list["set_wanted_name"]) + src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) + while (findtext(src.channel_name," ") == 1) + src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) + src.updateUsrDialog() + + else if(href_list["set_wanted_desc"]) + src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", "")) + while (findtext(src.msg," ") == 1) + src.msg = copytext(src.msg,2,lentext(src.msg)+1) + src.updateUsrDialog() + + else if(href_list["submit_wanted"]) + var/input_param = text2num(href_list["submit_wanted"]) + if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown") + src.screen = 16 + else + var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel") + if(choice=="Confirm") + if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below + var/datum/feed_message/WANTED = new /datum/feed_message + WANTED.author = src.channel_name + WANTED.body = src.msg + WANTED.backup_author = src.scanned_user //I know, a bit wacky + if(photo) + WANTED.img = photo.img + news_network.wanted_issue = WANTED + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.newsAlert() + NEWSCASTER.update_icon() + src.screen = 15 + else + if(news_network.wanted_issue.is_admin_message) + alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok") + return + news_network.wanted_issue.author = src.channel_name + news_network.wanted_issue.body = src.msg + news_network.wanted_issue.backup_author = src.scanned_user + if(photo) + news_network.wanted_issue.img = photo.img + src.screen = 19 + + src.updateUsrDialog() + + else if(href_list["cancel_wanted"]) + if(news_network.wanted_issue.is_admin_message) + alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok") + return + var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") + if(choice=="Confirm") + news_network.wanted_issue = null + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.update_icon() + src.screen=17 + src.updateUsrDialog() + + else if(href_list["view_wanted"]) + src.screen=18 + src.updateUsrDialog() + else if(href_list["censor_channel_author"]) + var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) + if(FC.is_admin_channel) + alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") + return + if(FC.author != "\[REDACTED\]") + FC.backup_author = FC.author + FC.author = "\[REDACTED\]" + else + FC.author = FC.backup_author + src.updateUsrDialog() + + else if(href_list["censor_channel_story_author"]) + var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) + if(MSG.is_admin_message) + alert("This message was created by a Nanotrasen Officer. You cannot censor its author.","Ok") + return + if(MSG.author != "\[REDACTED\]") + MSG.backup_author = MSG.author + MSG.author = "\[REDACTED\]" + else + MSG.author = MSG.backup_author + src.updateUsrDialog() + + else if(href_list["censor_channel_story_body"]) + var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) + if(MSG.is_admin_message) + alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") + return + if(MSG.body != "\[REDACTED\]") + MSG.backup_body = MSG.body + MSG.body = "\[REDACTED\]" + else + MSG.body = MSG.backup_body + src.updateUsrDialog() + + else if(href_list["pick_d_notice"]) + var/datum/feed_channel/FC = locate(href_list["pick_d_notice"]) + src.viewing_channel = FC + src.screen=13 + src.updateUsrDialog() + + else if(href_list["toggle_d_notice"]) + var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) + if(FC.is_admin_channel) + alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok") + return + FC.censored = !FC.censored + src.updateUsrDialog() + + else if(href_list["view"]) + src.screen=1 + src.updateUsrDialog() + + else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~ + src.screen = text2num(href_list["setScreen"]) + if (src.screen == 0) + src.scanned_user = "Unknown"; + msg = ""; + src.c_locked=0; + channel_name=""; + src.viewing_channel = null + src.updateUsrDialog() + + else if(href_list["show_channel"]) + var/datum/feed_channel/FC = locate(href_list["show_channel"]) + src.viewing_channel = FC + src.screen = 9 + src.updateUsrDialog() + + else if(href_list["pick_censor_channel"]) + var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"]) + src.viewing_channel = FC + src.screen = 12 + src.updateUsrDialog() + + else if(href_list["refresh"]) + src.updateUsrDialog() + + +/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob) + +/* if (istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda) ) //Name verification for channels or messages + if(src.screen == 4 || src.screen == 5) + if( istype(I, /obj/item/device/pda) ) + var/obj/item/device/pda/P = I + if(P.id) + src.scanned_user = "[P.id.registered_name] ([P.id.assignment])" + src.screen=2 + else + var/obj/item/weapon/card/id/T = I + src.scanned_user = text("[T.registered_name] ([T.assignment])") + src.screen=2*/ //Obsolete after autorecognition + + if(istype(I, /obj/item/weapon/wrench)) + user << "Now [anchored ? "un" : ""]securing [name]" + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 60)) + new /obj/item/newscaster_frame(loc) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + qdel(src) + return + + if (src.isbroken) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1) + for (var/mob/O in hearers(5, src.loc)) + O.show_message("[user.name] further abuses the shattered [src.name].") + else + if(istype(I, /obj/item/weapon) ) + var/obj/item/weapon/W = I + if(W.force <15) + for (var/mob/O in hearers(5, src.loc)) + O.show_message("[user.name] hits the [src.name] with the [W.name] with no visible effect." ) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) + else + src.hitstaken++ + if(src.hitstaken==3) + for (var/mob/O in hearers(5, src.loc)) + O.show_message("[user.name] smashes the [src.name]!" ) + src.isbroken=1 + playsound(src.loc, 'sound/effects/Glassbr3.ogg', 100, 1) + else + for (var/mob/O in hearers(5, src.loc)) + O.show_message("[user.name] forcefully slams the [src.name] with the [I.name]!" ) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1) + else + user << "This does nothing." + src.update_icon() + + +/obj/machinery/newscaster/attack_paw(mob/user as mob) + user << "The newscaster controls are far too complicated for your tiny brain!" + return + +/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob) + if(photo) + photo.loc = src.loc + user.put_in_inactive_hand(photo) + photo = null + if(istype(user.get_active_hand(), /obj/item/weapon/photo)) + photo = user.get_active_hand() + user.drop_item() + photo.loc = src + if(istype(usr,/mob/living/silicon/ai)) + var/list/nametemp = list() + var/find + var/datum/picture/selection + var/mob/living/silicon/ai/tempAI = user + if(tempAI.aicamera.aipictures.len == 0) + usr << "No images saved" + return + for(var/datum/picture/t in tempAI.aicamera.aipictures) + nametemp += t.fields["name"] + find = input("Select image (numbered in order taken)") in nametemp + var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() + for(var/datum/picture/q in tempAI.aicamera.aipictures) + if(q.fields["name"] == find) + selection = q + break // just in case some AI decides to take 10 thousand pictures in a round + P.icon = selection.fields["icon"] + P.img = selection.fields["img"] + P.desc = selection.fields["desc"] + photo = P + + + + + +//######################################################################################################################## +//###################################### NEWSPAPER! ###################################################################### +//######################################################################################################################## + +/obj/item/weapon/newspaper + name = "newspaper" + desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations." + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "newspaper" + w_class = 2 //Let's make it fit in trashbags! + attack_verb = list("bapped") + var/screen = 0 + var/pages = 0 + var/curr_page = 0 + var/list/datum/feed_channel/news_content = list() + var/datum/feed_message/important_message = null + var/scribble="" + var/scribble_page = null + +/*obj/item/weapon/newspaper/attack_hand(mob/user as mob) + ..() + world << "derp"*/ + +obj/item/weapon/newspaper/attack_self(mob/user as mob) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + var/dat + src.pages = 0 + switch(screen) + if(0) //Cover + dat+="
    The Griffon
    " + dat+="
    Nanotrasen-standard newspaper, for use on Nanotrasen© Space Facilities

    " + if(isemptylist(src.news_content)) + if(src.important_message) + dat+="Contents:
      **Important Security Announcement** \[page [src.pages+2]\]
    " + else + dat+="Other than the title, the rest of the newspaper is unprinted..." + else + dat+="Contents:
      " + for(var/datum/feed_channel/NP in src.news_content) + src.pages++ + if(src.important_message) + dat+="**Important Security Announcement** \[page [src.pages+2]\]
      " + var/temp_page=0 + for(var/datum/feed_channel/NP in src.news_content) + temp_page++ + dat+="[NP.channel_name] \[page [temp_page+1]\]
      " + dat+="
    " + if(scribble_page==curr_page) + dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" + dat+= "
    " + if(1) // X channel pages inbetween. + for(var/datum/feed_channel/NP in src.news_content) + src.pages++ //Let's get it right again. + var/datum/feed_channel/C = src.news_content[src.curr_page] + dat+="[C.channel_name] \[created by: [C.author]\]

    " + if(C.censored) + dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing." + else + if(isemptylist(C.messages)) + dat+="No Feed stories stem from this channel..." + else + dat+="
      " + var/i = 0 + for(var/datum/feed_message/MESSAGE in C.messages) + i++ + dat+="-[MESSAGE.body]
      " + if(MESSAGE.img) + user << browse_rsc(MESSAGE.img, "tmp_photo[i].png") + dat+="
      " + dat+="\[Story by [MESSAGE.author]\]

      " + dat+="
    " + if(scribble_page==curr_page) + dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" + dat+= "

    " + if(2) //Last page + for(var/datum/feed_channel/NP in src.news_content) + src.pages++ + if(src.important_message!=null) + dat+="
    Wanted Issue:


    " + dat+="Criminal name: [important_message.author]
    " + dat+="Description: [important_message.body]
    " + dat+="Photo:: " + if(important_message.img) + user << browse_rsc(important_message.img, "tmp_photow.png") + dat+="
    " + else + dat+="None" + else + dat+="Apart from some uninteresting Classified ads, there's nothing on this page..." + if(scribble_page==curr_page) + dat+="
    There is a small scribble near the end of this page... It reads: \"[src.scribble]\"" + dat+= "
    " + else + dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" + + dat+="

    [src.curr_page+1]
    " + human_user << browse(dat, "window=newspaper_main;size=300x400") + onclose(human_user, "newspaper_main") + else + user << "The paper is full of intelligible symbols!" + + +obj/item/weapon/newspaper/Topic(href, href_list) + var/mob/living/U = usr + ..() + if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) )) + U.set_machine(src) + if(href_list["next_page"]) + if(curr_page==src.pages+1) + return //Don't need that at all, but anyway. + if(src.curr_page == src.pages) //We're at the middle, get to the end + src.screen = 2 + else + if(curr_page == 0) //We're at the start, get to the middle + src.screen=1 + src.curr_page++ + playsound(src.loc, "pageturn", 50, 1) + + else if(href_list["prev_page"]) + if(curr_page == 0) + return + if(curr_page == 1) + src.screen = 0 + + else + if(curr_page == src.pages+1) //we're at the end, let's go back to the middle. + src.screen = 1 + src.curr_page-- + playsound(src.loc, "pageturn", 50, 1) + + if (istype(src.loc, /mob)) + src.attack_self(src.loc) + + +obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/pen)) + if(src.scribble_page == src.curr_page) + user << "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?" + else + var/s = strip_html( input(user, "Write something", "Newspaper", "") ) + s = copytext(sanitize(s), 1, MAX_MESSAGE_LEN) + if (!s) + return + if (!in_range(src, usr) && src.loc != usr) + return + src.scribble_page = src.curr_page + src.scribble = s + src.attack_self(user) + return + + +////////////////////////////////////helper procs + + +/obj/machinery/newscaster/proc/scan_user(mob/living/user as mob) + if(istype(user,/mob/living/carbon/human)) //User is a human + var/mob/living/carbon/human/human_user = user + if(human_user.wear_id) //Newscaster scans you + if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo! + var/obj/item/device/pda/P = human_user.wear_id + if(P.id) + src.scanned_user = "[P.id.registered_name] ([P.id.assignment])" + else + src.scanned_user = "Unknown" + else if(istype(human_user.wear_id, /obj/item/weapon/card/id) ) + var/obj/item/weapon/card/id/ID = human_user.wear_id + src.scanned_user ="[ID.registered_name] ([ID.assignment])" + else + src.scanned_user ="Unknown" + else + src.scanned_user ="Unknown" + else + var/mob/living/silicon/ai_user = user + src.scanned_user = "[ai_user.name] ([ai_user.job])" + + +/obj/machinery/newscaster/proc/print_paper() + feedback_inc("newscaster_newspapers_printed",1) + var/obj/item/weapon/newspaper/NEWSPAPER = new /obj/item/weapon/newspaper + for(var/datum/feed_channel/FC in news_network.network_channels) + NEWSPAPER.news_content += FC + if(news_network.wanted_issue) + NEWSPAPER.important_message = news_network.wanted_issue + NEWSPAPER.loc = get_turf(src) + src.paper_remaining-- + return + +//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later. +///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not +// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list. + +/obj/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile. + var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ + if(channel) + for(var/mob/O in hearers(world.view-1, T)) + O.show_message("[src.name] beeps, \"Breaking news from [channel]!\"",2) + src.alert = 1 + src.update_icon() + spawn(300) + src.alert = 0 + src.update_icon() + playsound(src.loc, 'sound/machines/twobeep.ogg', 75, 1) + else + for(var/mob/O in hearers(world.view-1, T)) + O.show_message("[src.name] beeps, \"Attention! Wanted issue distributed!\"",2) + playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 75, 1) return \ No newline at end of file diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 5c73bad1431..a476f19b843 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -1,157 +1,157 @@ -var/const/SAFETY_COOLDOWN = 100 - -/obj/machinery/recycler - name = "crusher" - desc = "A large crushing machine which is used to recycle small items ineffeciently; there are lights on the side of it." - icon = 'icons/obj/recycling.dmi' - icon_state = "grinder-o0" - layer = MOB_LAYER+1 // Overhead - anchored = 1 - density = 1 - var/safety_mode = 0 // Temporality stops the machine if it detects a mob - var/grinding = 0 - var/icon_name = "grinder-o" - var/blood = 0 - var/eat_dir = WEST - -/obj/machinery/recycler/New() - // On us - ..() - update_icon() - -/obj/machinery/recycler/examine() - set src in view() - ..() - usr << "The power light is [(stat & NOPOWER) ? "off" : "on"]." - usr << "The safety-mode light is [safety_mode ? "on" : "off"]." - usr << "The safety-sensors status light is [emagged ? "off" : "on"]." - -/obj/machinery/recycler/power_change() - ..() - update_icon() - - -/obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user) - if(istype(I, /obj/item/weapon/card/emag) && !emagged) - emagged = 1 - if(safety_mode) - safety_mode = 0 - update_icon() - playsound(src.loc, "sparks", 75, 1, -1) - else if(istype(I, /obj/item/weapon/screwdriver) && emagged) - emagged = 0 - update_icon() - user << "You reset the crusher to its default factory settings." - else - ..() - return - add_fingerprint(user) - -/obj/machinery/recycler/update_icon() - ..() - var/is_powered = !(stat & (BROKEN|NOPOWER)) - if(safety_mode) - is_powered = 0 - icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end - -// This is purely for admin possession !FUN!. -/obj/machinery/recycler/Bump(var/atom/movable/AM) - ..() - if(AM) - Bumped(AM) - - -/obj/machinery/recycler/Bumped(var/atom/movable/AM) - - if(stat & (BROKEN|NOPOWER)) - return - if(safety_mode) - return - // If we're not already grinding something. - if(!grinding) - grinding = 1 - spawn(1) - grinding = 0 - else - return - - var/move_dir = get_dir(loc, AM.loc) - if(move_dir == eat_dir) - if(isliving(AM)) - if(emagged) - eat(AM) - else - stop(AM) - else if(istype(AM, /obj/item)) - recycle(AM) - else // Can't recycle - playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) - AM.loc = src.loc - -/obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) - I.loc = src.loc - if(!istype(I, /obj/item/weapon/disk/nuclear)) - qdel(I) - if(prob(15)) - new /obj/item/stack/sheet/metal(loc) - if(prob(10)) - new /obj/item/stack/sheet/glass(loc) - if(prob(2)) - new /obj/item/stack/sheet/plasteel(loc) - if(prob(1)) - new /obj/item/stack/sheet/rglass(loc) - if(sound) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - - -/obj/machinery/recycler/proc/stop(var/mob/living/L) - playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) - safety_mode = 1 - update_icon() - L.loc = src.loc - - spawn(SAFETY_COOLDOWN) - playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) - safety_mode = 0 - update_icon() - -/obj/machinery/recycler/proc/eat(var/mob/living/L) - - L.loc = src.loc - - if(issilicon(L)) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - else - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - - var/gib = 1 - // By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count) - if(iscarbon(L)) - gib = 0 - if(L.stat == CONSCIOUS) - L.say("ARRRRRRRRRRRGH!!!") - add_blood(L) - - if(!blood && !issilicon(L)) - blood = 1 - update_icon() - - // Remove and recycle the equipped items. - for(var/obj/item/I in L.get_equipped_items()) - if(L.unEquip(I)) - recycle(I, 0) - - // Instantly lie down, also go unconscious from the pain, before you die. - L.Paralyse(5) - - // For admin fun, var edit emagged to 2. - if(gib || emagged == 2) - L.gib() - else if(emagged == 1) - L.adjustBruteLoss(1000) - - - -/obj/item/weapon/paper/recycler - name = "paper - 'garbage duty instructions'" +var/const/SAFETY_COOLDOWN = 100 + +/obj/machinery/recycler + name = "crusher" + desc = "A large crushing machine which is used to recycle small items ineffeciently; there are lights on the side of it." + icon = 'icons/obj/recycling.dmi' + icon_state = "grinder-o0" + layer = MOB_LAYER+1 // Overhead + anchored = 1 + density = 1 + var/safety_mode = 0 // Temporality stops the machine if it detects a mob + var/grinding = 0 + var/icon_name = "grinder-o" + var/blood = 0 + var/eat_dir = WEST + +/obj/machinery/recycler/New() + // On us + ..() + update_icon() + +/obj/machinery/recycler/examine() + set src in view() + ..() + usr << "The power light is [(stat & NOPOWER) ? "off" : "on"]." + usr << "The safety-mode light is [safety_mode ? "on" : "off"]." + usr << "The safety-sensors status light is [emagged ? "off" : "on"]." + +/obj/machinery/recycler/power_change() + ..() + update_icon() + + +/obj/machinery/recycler/attackby(var/obj/item/I, var/mob/user) + if(istype(I, /obj/item/weapon/card/emag) && !emagged) + emagged = 1 + if(safety_mode) + safety_mode = 0 + update_icon() + playsound(src.loc, "sparks", 75, 1, -1) + else if(istype(I, /obj/item/weapon/screwdriver) && emagged) + emagged = 0 + update_icon() + user << "You reset the crusher to its default factory settings." + else + ..() + return + add_fingerprint(user) + +/obj/machinery/recycler/update_icon() + ..() + var/is_powered = !(stat & (BROKEN|NOPOWER)) + if(safety_mode) + is_powered = 0 + icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end + +// This is purely for admin possession !FUN!. +/obj/machinery/recycler/Bump(var/atom/movable/AM) + ..() + if(AM) + Bumped(AM) + + +/obj/machinery/recycler/Bumped(var/atom/movable/AM) + + if(stat & (BROKEN|NOPOWER)) + return + if(safety_mode) + return + // If we're not already grinding something. + if(!grinding) + grinding = 1 + spawn(1) + grinding = 0 + else + return + + var/move_dir = get_dir(loc, AM.loc) + if(move_dir == eat_dir) + if(isliving(AM)) + if(emagged) + eat(AM) + else + stop(AM) + else if(istype(AM, /obj/item)) + recycle(AM) + else // Can't recycle + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) + AM.loc = src.loc + +/obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) + I.loc = src.loc + if(!istype(I, /obj/item/weapon/disk/nuclear)) + qdel(I) + if(prob(15)) + new /obj/item/stack/sheet/metal(loc) + if(prob(10)) + new /obj/item/stack/sheet/glass(loc) + if(prob(2)) + new /obj/item/stack/sheet/plasteel(loc) + if(prob(1)) + new /obj/item/stack/sheet/rglass(loc) + if(sound) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + + +/obj/machinery/recycler/proc/stop(var/mob/living/L) + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) + safety_mode = 1 + update_icon() + L.loc = src.loc + + spawn(SAFETY_COOLDOWN) + playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) + safety_mode = 0 + update_icon() + +/obj/machinery/recycler/proc/eat(var/mob/living/L) + + L.loc = src.loc + + if(issilicon(L)) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + else + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + + var/gib = 1 + // By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count) + if(iscarbon(L)) + gib = 0 + if(L.stat == CONSCIOUS) + L.say("ARRRRRRRRRRRGH!!!") + add_blood(L) + + if(!blood && !issilicon(L)) + blood = 1 + update_icon() + + // Remove and recycle the equipped items. + for(var/obj/item/I in L.get_equipped_items()) + if(L.unEquip(I)) + recycle(I, 0) + + // Instantly lie down, also go unconscious from the pain, before you die. + L.Paralyse(5) + + // For admin fun, var edit emagged to 2. + if(gib || emagged == 2) + L.gib() + else if(emagged == 1) + L.adjustBruteLoss(1000) + + + +/obj/item/weapon/paper/recycler + name = "paper - 'garbage duty instructions'" info = "

    New Assignment

    You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

    There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" \ No newline at end of file diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index a3098d0580e..d8d0b0c3e70 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -1,311 +1,311 @@ -/obj/machinery/syndicatebomb - icon = 'icons/obj/assemblies.dmi' - name = "syndicate bomb" - icon_state = "syndicate-bomb" - desc = "A large and menacing device. Can be bolted down with a wrench." - - anchored = 0 - density = 0 - layer = MOB_LAYER - 0.1 //so people can't hide it and it's REALLY OBVIOUS - unacidable = 1 - - var/datum/wires/syndicatebomb/wires = null - var/timer = 60 - var/open_panel = 0 //are the wires exposed? - var/active = 0 //is the bomb counting down? - var/defused = 0 //is the bomb capable of exploding? - var/obj/item/weapon/bombcore/payload = /obj/item/weapon/bombcore/ - var/beepsound = 'sound/items/timer.ogg' - -/obj/machinery/syndicatebomb/process() - if(active && !defused && (timer > 0)) //Tick Tock - var/volume = (timer <= 10 ? 30 : 5) // Tick louder when the bomb is closer to being detonated. - playsound(loc, beepsound, volume, 0) - timer-- - if(active && !defused && (timer <= 0)) //Boom - active = 0 - timer = 60 - update_icon() - if(payload in src) - payload.detonate() - return - if(!active || defused) //Counter terrorists win - if(defused && payload in src) - payload.defuse() - return - -/obj/machinery/syndicatebomb/New() - wires = new(src) - payload = new payload(src) - update_icon() - ..() - - -/obj/machinery/syndicatebomb/examine() - ..() - usr << "A digital display on it reads \"[timer]\"." - -/obj/machinery/syndicatebomb/update_icon() - icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]" - -/obj/machinery/syndicatebomb/attackby(var/obj/item/I, var/mob/user) - if(istype(I, /obj/item/weapon/wrench)) - if(!anchored) - if(!isturf(src.loc) || istype(src.loc, /turf/space)) - user << "The bomb must be placed on solid ground to attach it" - else - user << "You firmly wrench the bomb to the floor" - playsound(loc, 'sound/items/ratchet.ogg', 50, 1) - anchored = 1 - if(active) - user << "The bolts lock in place" - else - if(!active) - user << "You wrench the bomb from the floor" - playsound(loc, 'sound/items/ratchet.ogg', 50, 1) - anchored = 0 - else - user << "The bolts are locked down!" - - else if(istype(I, /obj/item/weapon/screwdriver)) - open_panel = !open_panel - update_icon() - user << "You [open_panel ? "open" : "close"] the wire panel." - - else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler )) - if(open_panel) - wires.Interact(user) - - else if(istype(I, /obj/item/weapon/crowbar)) - if(open_panel && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) - if(payload) - user << "You carefully pry out [payload]." - payload.loc = user.loc - payload = null - else - user << "There isn't anything in here to remove!" - else if (open_panel) - user << "The wires conneting the shell to the explosives are holding it down!" - else - user << "The cover is screwed on, it won't pry off!" - else if(istype(I, /obj/item/weapon/bombcore)) - if(!payload) - payload = I - user << "You place [payload] into [src]." - user.drop_item() - payload.loc = src - else - user << "[payload] is already loaded into [src], you'll have to remove it first." - else - ..() - -/obj/machinery/syndicatebomb/attack_hand(var/mob/user) - interact(user) - -/obj/machinery/syndicatebomb/attack_ai() - return - -/obj/machinery/syndicatebomb/interact(var/mob/user) - if(wires) - wires.Interact(user) - if(!open_panel) - if(!active) - settings(user) - return - else if(anchored) - user << "The bomb is bolted to the floor!" - return - -/obj/machinery/syndicatebomb/proc/settings(var/mob/user) - var/newtime = input(user, "Please set the timer.", "Timer", "[timer]") as num - newtime = Clamp(newtime, 60, 60000) - if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station - timer = newtime - src.loc.visible_message("\blue \icon[src] timer set for [timer] seconds.") - if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user)) - if(defused || active) - if(defused) - src.loc.visible_message("\blue \icon[src] Device error: User intervention required") - return - else - src.loc.visible_message("\red \icon[src] [timer] seconds until detonation, please clear the area.") - playsound(loc, 'sound/machines/click.ogg', 30, 1) - active = 1 - update_icon() - add_fingerprint(user) - - var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - if(payload && !istype(payload, /obj/item/weapon/bombcore/training)) - message_admins("[key_name(user)]? has primed a [name] ([payload]) for detonation at [A.name] (JMP).") - log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") - payload.adminlog = "The [src.name] that [key_name(user)] had primed detonated!" - -/obj/machinery/syndicatebomb/proc/isWireCut(var/index) - return wires.IsIndexCut(index) - -///Bomb Subtypes/// - -/obj/machinery/syndicatebomb/training - name = "training bomb" - icon_state = "training-bomb" - desc = "A salvaged syndicate device gutted of its explosives to be used as a training aid for aspiring bomb defusers." - payload = /obj/item/weapon/bombcore/training/ - -/obj/machinery/syndicatebomb/badmin - name = "generic summoning badmin bomb" - desc = "Oh god what is in this thing?" - payload = /obj/item/weapon/bombcore/badmin/summon/ - -/obj/machinery/syndicatebomb/badmin/clown - name = "clown bomb" - icon_state = "clown-bomb" - desc = "HONK." - payload = /obj/item/weapon/bombcore/badmin/summon/clown - beepsound = 'sound/items/bikehorn.ogg' - -/obj/machinery/syndicatebomb/badmin/varplosion - payload = /obj/item/weapon/bombcore/badmin/explosion/ - -///Bomb Cores/// - -/obj/item/weapon/bombcore - name = "bomb payload" - desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..." - icon = 'icons/obj/assemblies.dmi' - icon_state = "bombcore" - item_state = "eshield0" - w_class = 3.0 - origin_tech = "syndicate=6;combat=5" - var/adminlog = null - -/obj/item/weapon/bombcore/ex_act(severity) //Little boom can chain a big boom - src.detonate() - -/obj/item/weapon/bombcore/proc/detonate() - if(adminlog) - message_admins(adminlog) - log_game(adminlog) - explosion(get_turf(src),2,5,11, flame_range = 11) - qdel(src) - -/obj/item/weapon/bombcore/proc/defuse() -//Note: Because of how var/defused is used you shouldn't override this UNLESS you intend to set the var to 0 or -// otherwise remove the core/reset the wires before the end of defuse(). It will repeatedly be called otherwise. - -///Bomb Core Subtypes/// - -/obj/item/weapon/bombcore/training - name = "dummy payload" - desc = "A nanotrasen replica of a syndicate payload. Its not intended to explode but to announce that it WOULD have exploded, then rewire itself to allow for more training." - origin_tech = null - var/defusals = 0 - var/attempts = 0 - -/obj/item/weapon/bombcore/training/proc/reset() - var/obj/machinery/syndicatebomb/holder = src.loc - if(istype(holder)) - holder.open_panel = 0 - if(holder.wires) - holder.wires.Shuffle() - holder.defused = 0 - holder.update_icon() - holder.updateDialog() - -/obj/item/weapon/bombcore/training/detonate() - var/obj/machinery/syndicatebomb/holder = src.loc - if(istype(holder)) - attempts++ - holder.loc.visible_message("\red \icon[holder] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") - reset() - else - qdel(src) - -/obj/item/weapon/bombcore/training/defuse() - var/obj/machinery/syndicatebomb/holder = src.loc - if(istype(holder)) - attempts++ - defusals++ - holder.loc.visible_message("\blue \icon[holder] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires...") - reset() - -/obj/item/weapon/bombcore/badmin - name = "badmin payload" - desc = "If you're seeing this someone has either made a mistake or gotten dangerously savvy with var editing!" - origin_tech = null - -/obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players - var/obj/machinery/syndicatebomb/B = src.loc - qdel(B) - qdel(src) - -/obj/item/weapon/bombcore/badmin/summon/ - var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie - var/amt_summon = 1 - -/obj/item/weapon/bombcore/badmin/summon/detonate() - var/obj/machinery/syndicatebomb/B = src.loc - for(var/i = 0; i < amt_summon; i++) - var/atom/movable/X = new summon_path - X.loc = get_turf(src) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(X, pick(NORTH,SOUTH,EAST,WEST)) - qdel(B) - qdel(src) - -/obj/item/weapon/bombcore/badmin/summon/clown - summon_path = /mob/living/simple_animal/hostile/retaliate/clown - amt_summon = 100 - -/obj/item/weapon/bombcore/badmin/summon/clown/defuse() - playsound(src.loc, 'sound/misc/sadtrombone.ogg', 50) - ..() - -/obj/item/weapon/bombcore/badmin/explosion/ - var/HeavyExplosion = 2 - var/MediumExplosion = 5 - var/LightExplosion = 11 - var/Flames = 11 - -/obj/item/weapon/bombcore/badmin/explosion/detonate() - explosion(get_turf(src),HeavyExplosion,MediumExplosion,LightExplosion, flame_range = Flames) - -///Syndicate Detonator (aka the big red button)/// - -/obj/item/device/syndicatedetonator - name = "big red button" - desc = "Nothing good can come of pressing a button this garish..." - icon = 'icons/obj/assemblies.dmi' - icon_state = "bigred" - item_state = "electronic" - w_class = 1.0 - origin_tech = "syndicate=2" - var/cooldown = 0 - var/detonated = 0 - var/existant = 0 - -/obj/item/device/syndicatedetonator/attack_self(mob/user as mob) - if(!cooldown) - for(var/obj/machinery/syndicatebomb/B in machines) - if(B.active) - B.timer = 0 - detonated++ - existant++ - playsound(user, 'sound/machines/click.ogg', 20, 1) - user << "[existant] found, [detonated] triggered." - if(detonated) - var/turf/T = get_turf(src) - var/area/A = get_area(T) - detonated-- - var/log_str = "[key_name(user)]? has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP)." - bombers += log_str - message_admins(log_str) - log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name]([T.x],[T.y],[T.z])") - detonated = 0 - existant = 0 - cooldown = 1 - spawn(30) cooldown = 0 - - - +/obj/machinery/syndicatebomb + icon = 'icons/obj/assemblies.dmi' + name = "syndicate bomb" + icon_state = "syndicate-bomb" + desc = "A large and menacing device. Can be bolted down with a wrench." + + anchored = 0 + density = 0 + layer = MOB_LAYER - 0.1 //so people can't hide it and it's REALLY OBVIOUS + unacidable = 1 + + var/datum/wires/syndicatebomb/wires = null + var/timer = 60 + var/open_panel = 0 //are the wires exposed? + var/active = 0 //is the bomb counting down? + var/defused = 0 //is the bomb capable of exploding? + var/obj/item/weapon/bombcore/payload = /obj/item/weapon/bombcore/ + var/beepsound = 'sound/items/timer.ogg' + +/obj/machinery/syndicatebomb/process() + if(active && !defused && (timer > 0)) //Tick Tock + var/volume = (timer <= 10 ? 30 : 5) // Tick louder when the bomb is closer to being detonated. + playsound(loc, beepsound, volume, 0) + timer-- + if(active && !defused && (timer <= 0)) //Boom + active = 0 + timer = 60 + update_icon() + if(payload in src) + payload.detonate() + return + if(!active || defused) //Counter terrorists win + if(defused && payload in src) + payload.defuse() + return + +/obj/machinery/syndicatebomb/New() + wires = new(src) + payload = new payload(src) + update_icon() + ..() + + +/obj/machinery/syndicatebomb/examine() + ..() + usr << "A digital display on it reads \"[timer]\"." + +/obj/machinery/syndicatebomb/update_icon() + icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]" + +/obj/machinery/syndicatebomb/attackby(var/obj/item/I, var/mob/user) + if(istype(I, /obj/item/weapon/wrench)) + if(!anchored) + if(!isturf(src.loc) || istype(src.loc, /turf/space)) + user << "The bomb must be placed on solid ground to attach it" + else + user << "You firmly wrench the bomb to the floor" + playsound(loc, 'sound/items/ratchet.ogg', 50, 1) + anchored = 1 + if(active) + user << "The bolts lock in place" + else + if(!active) + user << "You wrench the bomb from the floor" + playsound(loc, 'sound/items/ratchet.ogg', 50, 1) + anchored = 0 + else + user << "The bolts are locked down!" + + else if(istype(I, /obj/item/weapon/screwdriver)) + open_panel = !open_panel + update_icon() + user << "You [open_panel ? "open" : "close"] the wire panel." + + else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler )) + if(open_panel) + wires.Interact(user) + + else if(istype(I, /obj/item/weapon/crowbar)) + if(open_panel && isWireCut(WIRE_BOOM) && isWireCut(WIRE_UNBOLT) && isWireCut(WIRE_DELAY) && isWireCut(WIRE_PROCEED) && isWireCut(WIRE_ACTIVATE)) + if(payload) + user << "You carefully pry out [payload]." + payload.loc = user.loc + payload = null + else + user << "There isn't anything in here to remove!" + else if (open_panel) + user << "The wires conneting the shell to the explosives are holding it down!" + else + user << "The cover is screwed on, it won't pry off!" + else if(istype(I, /obj/item/weapon/bombcore)) + if(!payload) + payload = I + user << "You place [payload] into [src]." + user.drop_item() + payload.loc = src + else + user << "[payload] is already loaded into [src], you'll have to remove it first." + else + ..() + +/obj/machinery/syndicatebomb/attack_hand(var/mob/user) + interact(user) + +/obj/machinery/syndicatebomb/attack_ai() + return + +/obj/machinery/syndicatebomb/interact(var/mob/user) + if(wires) + wires.Interact(user) + if(!open_panel) + if(!active) + settings(user) + return + else if(anchored) + user << "The bomb is bolted to the floor!" + return + +/obj/machinery/syndicatebomb/proc/settings(var/mob/user) + var/newtime = input(user, "Please set the timer.", "Timer", "[timer]") as num + newtime = Clamp(newtime, 60, 60000) + if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station + timer = newtime + src.loc.visible_message("\blue \icon[src] timer set for [timer] seconds.") + if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user)) + if(defused || active) + if(defused) + src.loc.visible_message("\blue \icon[src] Device error: User intervention required") + return + else + src.loc.visible_message("\red \icon[src] [timer] seconds until detonation, please clear the area.") + playsound(loc, 'sound/machines/click.ogg', 30, 1) + active = 1 + update_icon() + add_fingerprint(user) + + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + if(payload && !istype(payload, /obj/item/weapon/bombcore/training)) + message_admins("[key_name(user)]? has primed a [name] ([payload]) for detonation at [A.name] (JMP).") + log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") + payload.adminlog = "The [src.name] that [key_name(user)] had primed detonated!" + +/obj/machinery/syndicatebomb/proc/isWireCut(var/index) + return wires.IsIndexCut(index) + +///Bomb Subtypes/// + +/obj/machinery/syndicatebomb/training + name = "training bomb" + icon_state = "training-bomb" + desc = "A salvaged syndicate device gutted of its explosives to be used as a training aid for aspiring bomb defusers." + payload = /obj/item/weapon/bombcore/training/ + +/obj/machinery/syndicatebomb/badmin + name = "generic summoning badmin bomb" + desc = "Oh god what is in this thing?" + payload = /obj/item/weapon/bombcore/badmin/summon/ + +/obj/machinery/syndicatebomb/badmin/clown + name = "clown bomb" + icon_state = "clown-bomb" + desc = "HONK." + payload = /obj/item/weapon/bombcore/badmin/summon/clown + beepsound = 'sound/items/bikehorn.ogg' + +/obj/machinery/syndicatebomb/badmin/varplosion + payload = /obj/item/weapon/bombcore/badmin/explosion/ + +///Bomb Cores/// + +/obj/item/weapon/bombcore + name = "bomb payload" + desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "bombcore" + item_state = "eshield0" + w_class = 3.0 + origin_tech = "syndicate=6;combat=5" + var/adminlog = null + +/obj/item/weapon/bombcore/ex_act(severity) //Little boom can chain a big boom + src.detonate() + +/obj/item/weapon/bombcore/proc/detonate() + if(adminlog) + message_admins(adminlog) + log_game(adminlog) + explosion(get_turf(src),2,5,11, flame_range = 11) + qdel(src) + +/obj/item/weapon/bombcore/proc/defuse() +//Note: Because of how var/defused is used you shouldn't override this UNLESS you intend to set the var to 0 or +// otherwise remove the core/reset the wires before the end of defuse(). It will repeatedly be called otherwise. + +///Bomb Core Subtypes/// + +/obj/item/weapon/bombcore/training + name = "dummy payload" + desc = "A nanotrasen replica of a syndicate payload. Its not intended to explode but to announce that it WOULD have exploded, then rewire itself to allow for more training." + origin_tech = null + var/defusals = 0 + var/attempts = 0 + +/obj/item/weapon/bombcore/training/proc/reset() + var/obj/machinery/syndicatebomb/holder = src.loc + if(istype(holder)) + holder.open_panel = 0 + if(holder.wires) + holder.wires.Shuffle() + holder.defused = 0 + holder.update_icon() + holder.updateDialog() + +/obj/item/weapon/bombcore/training/detonate() + var/obj/machinery/syndicatebomb/holder = src.loc + if(istype(holder)) + attempts++ + holder.loc.visible_message("\red \icon[holder] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") + reset() + else + qdel(src) + +/obj/item/weapon/bombcore/training/defuse() + var/obj/machinery/syndicatebomb/holder = src.loc + if(istype(holder)) + attempts++ + defusals++ + holder.loc.visible_message("\blue \icon[holder] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires...") + reset() + +/obj/item/weapon/bombcore/badmin + name = "badmin payload" + desc = "If you're seeing this someone has either made a mistake or gotten dangerously savvy with var editing!" + origin_tech = null + +/obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players + var/obj/machinery/syndicatebomb/B = src.loc + qdel(B) + qdel(src) + +/obj/item/weapon/bombcore/badmin/summon/ + var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie + var/amt_summon = 1 + +/obj/item/weapon/bombcore/badmin/summon/detonate() + var/obj/machinery/syndicatebomb/B = src.loc + for(var/i = 0; i < amt_summon; i++) + var/atom/movable/X = new summon_path + X.loc = get_turf(src) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(X, pick(NORTH,SOUTH,EAST,WEST)) + qdel(B) + qdel(src) + +/obj/item/weapon/bombcore/badmin/summon/clown + summon_path = /mob/living/simple_animal/hostile/retaliate/clown + amt_summon = 100 + +/obj/item/weapon/bombcore/badmin/summon/clown/defuse() + playsound(src.loc, 'sound/misc/sadtrombone.ogg', 50) + ..() + +/obj/item/weapon/bombcore/badmin/explosion/ + var/HeavyExplosion = 2 + var/MediumExplosion = 5 + var/LightExplosion = 11 + var/Flames = 11 + +/obj/item/weapon/bombcore/badmin/explosion/detonate() + explosion(get_turf(src),HeavyExplosion,MediumExplosion,LightExplosion, flame_range = Flames) + +///Syndicate Detonator (aka the big red button)/// + +/obj/item/device/syndicatedetonator + name = "big red button" + desc = "Nothing good can come of pressing a button this garish..." + icon = 'icons/obj/assemblies.dmi' + icon_state = "bigred" + item_state = "electronic" + w_class = 1.0 + origin_tech = "syndicate=2" + var/cooldown = 0 + var/detonated = 0 + var/existant = 0 + +/obj/item/device/syndicatedetonator/attack_self(mob/user as mob) + if(!cooldown) + for(var/obj/machinery/syndicatebomb/B in machines) + if(B.active) + B.timer = 0 + detonated++ + existant++ + playsound(user, 'sound/machines/click.ogg', 20, 1) + user << "[existant] found, [detonated] triggered." + if(detonated) + var/turf/T = get_turf(src) + var/area/A = get_area(T) + detonated-- + var/log_str = "[key_name(user)]? has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] (JMP)." + bombers += log_str + message_admins(log_str) + log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name]([T.x],[T.y],[T.z])") + detonated = 0 + existant = 0 + cooldown = 1 + spawn(30) cooldown = 0 + + + diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index cd77cbe6dfe..e7f1039c528 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -1,26 +1,26 @@ -/obj/mecha/combat/reticence - desc = "A silent, fast, and nigh-invisible miming exosuit. Popular among mimes and mime assassins." - name = "\improper reticence" - icon_state = "reticence" - step_in = 2 - dir_in = 1 //Facing North. - health = 100 - deflect_chance = 3 - damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) - max_temperature = 15000 - wreckage = /obj/structure/mecha_wreckage/reticence - operation_req_access = list(access_theatre) - add_req_access = 0 - internal_damage_threshold = 25 - max_equip = 2 - step_energy_drain = 3 - color = "#87878715" - stepsound = null - -/obj/mecha/combat/reticence/loaded/New() - ..() - var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced - ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd //HAHA IT MAKES WALLS GET IT - ME.attach(src) +/obj/mecha/combat/reticence + desc = "A silent, fast, and nigh-invisible miming exosuit. Popular among mimes and mime assassins." + name = "\improper reticence" + icon_state = "reticence" + step_in = 2 + dir_in = 1 //Facing North. + health = 100 + deflect_chance = 3 + damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) + max_temperature = 15000 + wreckage = /obj/structure/mecha_wreckage/reticence + operation_req_access = list(access_theatre) + add_req_access = 0 + internal_damage_threshold = 25 + max_equip = 2 + step_energy_drain = 3 + color = "#87878715" + stepsound = null + +/obj/mecha/combat/reticence/loaded/New() + ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd //HAHA IT MAKES WALLS GET IT + ME.attach(src) return \ No newline at end of file diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index b832b41212b..659544a14f2 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -147,4 +147,4 @@ icon_state = "recharge_comp_on" /obj/machinery/computer/mech_bay_power_console/initialize() - reconnect() + reconnect() diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 2d3ba120235..362b3eeb27b 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -1,179 +1,179 @@ -//Anomalies, used for events. Note that these DO NOT work by themselves; their procs are called by the event datum. - -/obj/effect/anomaly - name = "anomaly" - icon = 'icons/effects/effects.dmi' - desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..." - icon_state = "bhole3" - unacidable = 1 - density = 0 - anchored = 1 - luminosity = 3 - var/obj/item/device/assembly/signaler/anomaly/aSignal = null - -/obj/effect/anomaly/New() - SetLuminosity(initial(luminosity)) - aSignal = new(src) - aSignal.code = rand(1,100) - - aSignal.frequency = rand(1200, 1599) - if(IsMultiple(aSignal.frequency, 2))//signaller frequencies are always uneven! - aSignal.frequency++ - - -/obj/effect/anomaly/proc/anomalyEffect() - if(prob(50)) - step(src,pick(alldirs)) - - -/obj/effect/anomaly/proc/anomalyNeutralize() - new /obj/effect/effect/bad_smoke(loc) - - for(var/atom/movable/O in src) - O.loc = src.loc - - qdel(src) - - -/obj/effect/anomaly/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/device/analyzer)) - user << "Analyzing... [src]'s unstable field is fluctuating along frequency [aSignal.code]:[format_frequency(aSignal.frequency)]." - -/////////////////////// - -/obj/effect/anomaly/grav - name = "gravitational anomaly" - icon_state = "shield2" - density = 1 - var/boing = 0 - -/obj/effect/anomaly/grav/New() - ..() - aSignal.origin_tech = "magnets=5;powerstorage=4" - -/obj/effect/anomaly/grav/anomalyEffect() - ..() - - boing = 1 - for(var/obj/O in orange(4, src)) - if(!O.anchored) - step_towards(O,src) - for(var/mob/living/M in orange(4, src)) - step_towards(M,src) - -/obj/effect/anomaly/grav/Bump(mob/A) - gravShock(A) - return - -/obj/effect/anomaly/grav/Bumped(mob/A) - gravShock(A) - return - -/obj/effect/anomaly/grav/proc/gravShock(var/mob/A) - if(boing && isliving(A) && !A.stat) - A.Weaken(2) - var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src))) - A.throw_at(target, 5, 1) - boing = 0 - return - -///////////////////// - -/obj/effect/anomaly/flux - name = "flux wave anomaly" - icon_state = "electricity2" - -/obj/effect/anomaly/flux/New() - ..() - aSignal.origin_tech = "powerstorage=5;programming=3;plasmatech=2" - -///////////////////// - -/obj/effect/anomaly/bluespace - name = "bluespace anomaly" - icon = 'icons/obj/projectiles.dmi' - icon_state = "bluespace" - density = 1 - -/obj/effect/anomaly/bluespace/New() - ..() - aSignal.origin_tech = "bluespace=5;magnets=3;powerstorage=2" - -/obj/effect/anomaly/bluespace/Bumped(atom/A) - if(isliving(A)) - do_teleport(A, locate(A.x, A.y, A.z), 10) - return - -///////////////////// - -/obj/effect/anomaly/pyro - name = "pyroclastic anomaly" - icon_state = "mustard" - -/obj/effect/anomaly/pyro/New() - ..() - aSignal.origin_tech = "plasmatech=5;powerstorage=3;biotech=3" - -/obj/effect/anomaly/pyro/anomalyEffect() - ..() - var/turf/simulated/T = get_turf(src) - if(istype(T)) - T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 3) - -///////////////////// - -/obj/effect/anomaly/bhole - name = "vortex anomaly" - icon_state = "bhole3" - desc = "That's a nice station you have there. It'd be a shame if something happened to it." - -/obj/effect/anomaly/bhole/New() - ..() - aSignal.origin_tech = "materials=5;combat=4;engineering=3" - -/obj/effect/anomaly/bhole/anomalyEffect() - ..() - if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen - qdel(src) - return - - grav(rand(0,3), rand(2,3), 50, 25) - - //Throwing stuff around! - for(var/obj/O in orange(1,src)) - if(!O.anchored) - var/mob/living/target = locate() in view(5,src) - if(!target) - return - O.throw_at(target, 5, 10) - return - else - O.ex_act(2) - -/obj/effect/anomaly/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) - for(var/t = -r, t < r, t++) - affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance) - affect_coord(x-t, y+r, ex_act_force, pull_chance, turf_removal_chance) - affect_coord(x+r, y+t, ex_act_force, pull_chance, turf_removal_chance) - affect_coord(x-r, y-t, ex_act_force, pull_chance, turf_removal_chance) - return - -/obj/effect/anomaly/bhole/proc/affect_coord(var/x, var/y, var/ex_act_force, var/pull_chance, var/turf_removal_chance) - //Get turf at coordinate - var/turf/T = locate(x, y, z) - if(isnull(T)) return - - //Pulling and/or ex_act-ing movable atoms in that turf - if(prob(pull_chance)) - for(var/obj/O in T.contents) - if(O.anchored) - O.ex_act(ex_act_force) - else - step_towards(O,src) - for(var/mob/living/M in T.contents) - step_towards(M,src) - - //Damaging the turf - if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) ) - T.ex_act(ex_act_force) +//Anomalies, used for events. Note that these DO NOT work by themselves; their procs are called by the event datum. + +/obj/effect/anomaly + name = "anomaly" + icon = 'icons/effects/effects.dmi' + desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..." + icon_state = "bhole3" + unacidable = 1 + density = 0 + anchored = 1 + luminosity = 3 + var/obj/item/device/assembly/signaler/anomaly/aSignal = null + +/obj/effect/anomaly/New() + SetLuminosity(initial(luminosity)) + aSignal = new(src) + aSignal.code = rand(1,100) + + aSignal.frequency = rand(1200, 1599) + if(IsMultiple(aSignal.frequency, 2))//signaller frequencies are always uneven! + aSignal.frequency++ + + +/obj/effect/anomaly/proc/anomalyEffect() + if(prob(50)) + step(src,pick(alldirs)) + + +/obj/effect/anomaly/proc/anomalyNeutralize() + new /obj/effect/effect/bad_smoke(loc) + + for(var/atom/movable/O in src) + O.loc = src.loc + + qdel(src) + + +/obj/effect/anomaly/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/device/analyzer)) + user << "Analyzing... [src]'s unstable field is fluctuating along frequency [aSignal.code]:[format_frequency(aSignal.frequency)]." + +/////////////////////// + +/obj/effect/anomaly/grav + name = "gravitational anomaly" + icon_state = "shield2" + density = 1 + var/boing = 0 + +/obj/effect/anomaly/grav/New() + ..() + aSignal.origin_tech = "magnets=5;powerstorage=4" + +/obj/effect/anomaly/grav/anomalyEffect() + ..() + + boing = 1 + for(var/obj/O in orange(4, src)) + if(!O.anchored) + step_towards(O,src) + for(var/mob/living/M in orange(4, src)) + step_towards(M,src) + +/obj/effect/anomaly/grav/Bump(mob/A) + gravShock(A) + return + +/obj/effect/anomaly/grav/Bumped(mob/A) + gravShock(A) + return + +/obj/effect/anomaly/grav/proc/gravShock(var/mob/A) + if(boing && isliving(A) && !A.stat) + A.Weaken(2) + var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src))) + A.throw_at(target, 5, 1) + boing = 0 + return + +///////////////////// + +/obj/effect/anomaly/flux + name = "flux wave anomaly" + icon_state = "electricity2" + +/obj/effect/anomaly/flux/New() + ..() + aSignal.origin_tech = "powerstorage=5;programming=3;plasmatech=2" + +///////////////////// + +/obj/effect/anomaly/bluespace + name = "bluespace anomaly" + icon = 'icons/obj/projectiles.dmi' + icon_state = "bluespace" + density = 1 + +/obj/effect/anomaly/bluespace/New() + ..() + aSignal.origin_tech = "bluespace=5;magnets=3;powerstorage=2" + +/obj/effect/anomaly/bluespace/Bumped(atom/A) + if(isliving(A)) + do_teleport(A, locate(A.x, A.y, A.z), 10) + return + +///////////////////// + +/obj/effect/anomaly/pyro + name = "pyroclastic anomaly" + icon_state = "mustard" + +/obj/effect/anomaly/pyro/New() + ..() + aSignal.origin_tech = "plasmatech=5;powerstorage=3;biotech=3" + +/obj/effect/anomaly/pyro/anomalyEffect() + ..() + var/turf/simulated/T = get_turf(src) + if(istype(T)) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 3) + +///////////////////// + +/obj/effect/anomaly/bhole + name = "vortex anomaly" + icon_state = "bhole3" + desc = "That's a nice station you have there. It'd be a shame if something happened to it." + +/obj/effect/anomaly/bhole/New() + ..() + aSignal.origin_tech = "materials=5;combat=4;engineering=3" + +/obj/effect/anomaly/bhole/anomalyEffect() + ..() + if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen + qdel(src) + return + + grav(rand(0,3), rand(2,3), 50, 25) + + //Throwing stuff around! + for(var/obj/O in orange(1,src)) + if(!O.anchored) + var/mob/living/target = locate() in view(5,src) + if(!target) + return + O.throw_at(target, 5, 10) + return + else + O.ex_act(2) + +/obj/effect/anomaly/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) + for(var/t = -r, t < r, t++) + affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x-t, y+r, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x+r, y+t, ex_act_force, pull_chance, turf_removal_chance) + affect_coord(x-r, y-t, ex_act_force, pull_chance, turf_removal_chance) + return + +/obj/effect/anomaly/bhole/proc/affect_coord(var/x, var/y, var/ex_act_force, var/pull_chance, var/turf_removal_chance) + //Get turf at coordinate + var/turf/T = locate(x, y, z) + if(isnull(T)) return + + //Pulling and/or ex_act-ing movable atoms in that turf + if(prob(pull_chance)) + for(var/obj/O in T.contents) + if(O.anchored) + O.ex_act(ex_act_force) + else + step_towards(O,src) + for(var/mob/living/M in T.contents) + step_towards(M,src) + + //Damaging the turf + if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) ) + T.ex_act(ex_act_force) return \ No newline at end of file diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 6b116c4a17c..77765bb8465 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -1,6 +1,6 @@ -/obj/effect/decal - name = "decal" - icon = 'icons/effects/effects.dmi' - -/obj/effect/decal/ex_act(severity) +/obj/effect/decal + name = "decal" + icon = 'icons/effects/effects.dmi' + +/obj/effect/decal/ex_act(severity) qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/spawners/vaultspawner.dm b/code/game/objects/effects/spawners/vaultspawner.dm index af71ac97f4f..8610a6ef298 100644 --- a/code/game/objects/effects/spawners/vaultspawner.dm +++ b/code/game/objects/effects/spawners/vaultspawner.dm @@ -25,4 +25,4 @@ T.ChangeTurf(/turf/simulated/floor/vault) T.icon_state = "[type]vault" - qdel(src) + qdel(src) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 56a57d8a849..df97a6ab825 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -211,4 +211,4 @@ icon_state = "memorizer" item_state = "nullrod" burnt = "memorizerburnt" - flashanim = "memorizer2" + flashanim = "memorizer2" diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 3f60c5402b1..3910f798064 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -1,207 +1,207 @@ -/obj/item/device/laser_pointer - name = "laser pointer" - desc = "Don't shine it in your eyes!" - icon = 'icons/obj/device.dmi' - icon_state = "pointer" - item_state = "pen" - var/pointer_icon_state - flags = CONDUCT - slot_flags = SLOT_BELT - m_amt = 500 - g_amt = 500 - w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter. - origin_tech = "combat=1;magnets=2" - var/turf/pointer_loc - var/energy = 5 - var/max_energy = 5 - var/effectchance = 33 - var/recharging = 0 - var/recharge_locked = 0 - var/obj/item/weapon/stock_parts/micro_laser/diode //used for upgrading! - - -/obj/item/device/laser_pointer/red - pointer_icon_state = "red_laser" -/obj/item/device/laser_pointer/green - pointer_icon_state = "green_laser" -/obj/item/device/laser_pointer/blue - pointer_icon_state = "blue_laser" -/obj/item/device/laser_pointer/purple - pointer_icon_state = "purple_laser" - -/obj/item/device/laser_pointer/New() - ..() - diode = new(src) - if(!pointer_icon_state) - pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser") - -/obj/item/device/laser_pointer/upgraded/New() - ..() - diode = new /obj/item/weapon/stock_parts/micro_laser/ultra - - - -/obj/item/device/laser_pointer/attack(mob/living/M, mob/user) - laser_act(M, user) - -/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/stock_parts/micro_laser)) - if(!diode) - user.drop_item() - W.loc = src - diode = W - user << "You install a [diode.name] in [src]." - else - user << "[src] already has a diode installed." - return - - else if(istype(W, /obj/item/weapon/screwdriver)) - if(diode) - user << "You remove the [diode.name] from the [src]." - diode.loc = get_turf(src.loc) - diode = null - return - ..() - return - -/obj/item/device/laser_pointer/afterattack(var/atom/target, var/mob/living/user, flag, params) - if(flag) //we're placing the object on a table or in backpack - return - laser_act(target, user) - -/obj/item/device/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user) - if( !(user in (viewers(7,target))) ) - return - if (!diode) - user << "You point [src] at [target], but nothing happens!" - return - if (!user.IsAdvancedToolUser()) - user << "You don't have the dexterity to do this!" - return - if(user.has_mutation(HULK)) - user << "Your meaty finger is too large for the button!" - return - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.is_mutantrace("adamantine")) - user << "Your metal fingers can't press the button!" - return - - add_fingerprint(user) - - //nothing happens if the battery is drained - if(recharge_locked) - user << "You point [src] at [target], but it's still charging." - return - - var/outmsg - var/turf/targloc = get_turf(target) - - //human/alien mobs - if(iscarbon(target)) - if(user.zone_sel.selecting == "eyes") - var/mob/living/carbon/C = target - - //20% chance to actually hit the eyes - if(prob(effectchance * diode.rating)) - add_logs(user, C, "shone in the eyes", object="laser pointer") - - //eye target check - outmsg = "You blind [C] by shining [src] in their eyes." - var/eye_prot = C.eyecheck() - if(C.blinded || eye_prot >= 2) - eye_prot = 4 - var/severity = 3 - eye_prot - if(prob(33)) - severity += 1 - else if(prob(50)) - severity -= 1 - severity = min(max(severity, 0), 4) - - switch(severity) - if(0) - //no effect - C << "A small, bright dot appears in your vision." - if(1) - //industrial grade eye protection - C.eye_stat += rand(0, 2) - C << "Something bright flashes in the corner of your vision!" - if(2) - //basic eye protection (sunglasses) - flick("flash", C.flash) - C.eye_stat += rand(1, 6) - C << "Your eyes were blinded!" - if(3) - //no eye protection - if(prob(2)) - C.Weaken(1) - flick("e_flash", C.flash) - C.eye_stat += rand(3, 7) - C << "Your eyes were blinded!" - if(4) - //the effect has been worsened by something - if(prob(5)) - C.Weaken(1) - flick("e_flash", C.flash) - C.eye_stat += rand(5, 10) - C << "Your eyes were blinded!" - else - outmsg = "You fail to blind [C] by shining [src] at their eyes." - - //robots and AI - else if(issilicon(target)) - var/mob/living/silicon/S = target - //20% chance to actually hit the sensors - if(prob(effectchance * diode.rating)) - S.Weaken(rand(5,10)) - S << "Your sensors were overloaded by a laser!" - outmsg = "You overload [S] by shining [src] at their sensors." - add_logs(user, S, "shone in the sensors", object="laser pointer") - else - outmsg = "You fail to overload [S] by shining [src] at their sensors." - - //cameras - else if(istype(target, /obj/machinery/camera)) - var/obj/machinery/camera/C = target - if(prob(effectchance * diode.rating)) - C.emp_act(1) - outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" - add_logs(user, C, "EMPed", object="laser pointer") - else - outmsg = "You missed the lens of [C] with [src]." - - //laser pointer image - icon_state = "pointer_[pointer_icon_state]" - var/list/showto = list() - for(var/mob/M in range(7,targloc)) - if(M.client) - showto.Add(M.client) - var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10) - I.pixel_x = target.pixel_x + rand(-5,5) - I.pixel_y = target.pixel_y + rand(-5,5) - - if(outmsg) - user << outmsg - else - user << "You point [src] at [target]." - - energy -= 1 - if(energy <= max_energy) - if(!recharging) - recharging = 1 - processing_objects.Add(src) - if(energy <= 0) - user << "You've overused the battery of [src], now it needs time to recharge!" - recharge_locked = 1 - - flick_overlay(I, showto, 10) - icon_state = "pointer" - -/obj/item/device/laser_pointer/process() - if(prob(20 - recharge_locked*5)) - energy += 1 - if(energy >= max_energy) - energy = max_energy - recharging = 0 - recharge_locked = 0 - ..() +/obj/item/device/laser_pointer + name = "laser pointer" + desc = "Don't shine it in your eyes!" + icon = 'icons/obj/device.dmi' + icon_state = "pointer" + item_state = "pen" + var/pointer_icon_state + flags = CONDUCT + slot_flags = SLOT_BELT + m_amt = 500 + g_amt = 500 + w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter. + origin_tech = "combat=1;magnets=2" + var/turf/pointer_loc + var/energy = 5 + var/max_energy = 5 + var/effectchance = 33 + var/recharging = 0 + var/recharge_locked = 0 + var/obj/item/weapon/stock_parts/micro_laser/diode //used for upgrading! + + +/obj/item/device/laser_pointer/red + pointer_icon_state = "red_laser" +/obj/item/device/laser_pointer/green + pointer_icon_state = "green_laser" +/obj/item/device/laser_pointer/blue + pointer_icon_state = "blue_laser" +/obj/item/device/laser_pointer/purple + pointer_icon_state = "purple_laser" + +/obj/item/device/laser_pointer/New() + ..() + diode = new(src) + if(!pointer_icon_state) + pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser") + +/obj/item/device/laser_pointer/upgraded/New() + ..() + diode = new /obj/item/weapon/stock_parts/micro_laser/ultra + + + +/obj/item/device/laser_pointer/attack(mob/living/M, mob/user) + laser_act(M, user) + +/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/stock_parts/micro_laser)) + if(!diode) + user.drop_item() + W.loc = src + diode = W + user << "You install a [diode.name] in [src]." + else + user << "[src] already has a diode installed." + return + + else if(istype(W, /obj/item/weapon/screwdriver)) + if(diode) + user << "You remove the [diode.name] from the [src]." + diode.loc = get_turf(src.loc) + diode = null + return + ..() + return + +/obj/item/device/laser_pointer/afterattack(var/atom/target, var/mob/living/user, flag, params) + if(flag) //we're placing the object on a table or in backpack + return + laser_act(target, user) + +/obj/item/device/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user) + if( !(user in (viewers(7,target))) ) + return + if (!diode) + user << "You point [src] at [target], but nothing happens!" + return + if (!user.IsAdvancedToolUser()) + user << "You don't have the dexterity to do this!" + return + if(user.has_mutation(HULK)) + user << "Your meaty finger is too large for the button!" + return + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(C.is_mutantrace("adamantine")) + user << "Your metal fingers can't press the button!" + return + + add_fingerprint(user) + + //nothing happens if the battery is drained + if(recharge_locked) + user << "You point [src] at [target], but it's still charging." + return + + var/outmsg + var/turf/targloc = get_turf(target) + + //human/alien mobs + if(iscarbon(target)) + if(user.zone_sel.selecting == "eyes") + var/mob/living/carbon/C = target + + //20% chance to actually hit the eyes + if(prob(effectchance * diode.rating)) + add_logs(user, C, "shone in the eyes", object="laser pointer") + + //eye target check + outmsg = "You blind [C] by shining [src] in their eyes." + var/eye_prot = C.eyecheck() + if(C.blinded || eye_prot >= 2) + eye_prot = 4 + var/severity = 3 - eye_prot + if(prob(33)) + severity += 1 + else if(prob(50)) + severity -= 1 + severity = min(max(severity, 0), 4) + + switch(severity) + if(0) + //no effect + C << "A small, bright dot appears in your vision." + if(1) + //industrial grade eye protection + C.eye_stat += rand(0, 2) + C << "Something bright flashes in the corner of your vision!" + if(2) + //basic eye protection (sunglasses) + flick("flash", C.flash) + C.eye_stat += rand(1, 6) + C << "Your eyes were blinded!" + if(3) + //no eye protection + if(prob(2)) + C.Weaken(1) + flick("e_flash", C.flash) + C.eye_stat += rand(3, 7) + C << "Your eyes were blinded!" + if(4) + //the effect has been worsened by something + if(prob(5)) + C.Weaken(1) + flick("e_flash", C.flash) + C.eye_stat += rand(5, 10) + C << "Your eyes were blinded!" + else + outmsg = "You fail to blind [C] by shining [src] at their eyes." + + //robots and AI + else if(issilicon(target)) + var/mob/living/silicon/S = target + //20% chance to actually hit the sensors + if(prob(effectchance * diode.rating)) + S.Weaken(rand(5,10)) + S << "Your sensors were overloaded by a laser!" + outmsg = "You overload [S] by shining [src] at their sensors." + add_logs(user, S, "shone in the sensors", object="laser pointer") + else + outmsg = "You fail to overload [S] by shining [src] at their sensors." + + //cameras + else if(istype(target, /obj/machinery/camera)) + var/obj/machinery/camera/C = target + if(prob(effectchance * diode.rating)) + C.emp_act(1) + outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" + add_logs(user, C, "EMPed", object="laser pointer") + else + outmsg = "You missed the lens of [C] with [src]." + + //laser pointer image + icon_state = "pointer_[pointer_icon_state]" + var/list/showto = list() + for(var/mob/M in range(7,targloc)) + if(M.client) + showto.Add(M.client) + var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10) + I.pixel_x = target.pixel_x + rand(-5,5) + I.pixel_y = target.pixel_y + rand(-5,5) + + if(outmsg) + user << outmsg + else + user << "You point [src] at [target]." + + energy -= 1 + if(energy <= max_energy) + if(!recharging) + recharging = 1 + processing_objects.Add(src) + if(energy <= 0) + user << "You've overused the battery of [src], now it needs time to recharge!" + recharge_locked = 1 + + flick_overlay(I, showto, 10) + icon_state = "pointer" + +/obj/item/device/laser_pointer/process() + if(prob(20 - recharge_locked*5)) + energy += 1 + if(energy >= max_energy) + energy = max_energy + recharging = 0 + recharge_locked = 0 + ..() diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6ea4481b24a..d59e4362ba2 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -1,145 +1,145 @@ -/* Diffrent misc types of sheets - * Contains: - * Metal - * Plasteel - * Wood - * Cloth - * Cardboard - */ - -/* - * Metal - */ -var/global/list/datum/stack_recipe/metal_recipes = list ( \ - new/datum/stack_recipe("stool", /obj/structure/stool, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("chair", /obj/structure/stool/bed/chair, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("swivel chair", /obj/structure/stool/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("comfy chair", /obj/structure/stool/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("bed", /obj/structure/stool/bed, 2, one_per_turf = 1, on_floor = 1), \ - null, \ - new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ - new/datum/stack_recipe("rack parts", /obj/item/weapon/rack_parts), \ - new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1), \ - null, \ - new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1), \ - null, \ - new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \ - new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ - null, \ - new/datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1), \ - null, \ - new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade), \ - new/datum/stack_recipe("light fixture frame", /obj/item/light_fixture_frame, 2), \ - new/datum/stack_recipe("small light fixture frame", /obj/item/light_fixture_frame/small, 1), \ - null, \ - new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \ - new/datum/stack_recipe("air alarm frame", /obj/item/alarm_frame, 2), \ - new/datum/stack_recipe("fire alarm frame", /obj/item/firealarm_frame, 2), \ - null, \ - new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \ -) - -/obj/item/stack/sheet/metal - name = "metal" - desc = "Sheets made out of metal." - singular_name = "metal sheet" - icon_state = "sheet-metal" - m_amt = 3750 - throwforce = 10.0 - flags = CONDUCT - origin_tech = "materials=1" - -/obj/item/stack/sheet/metal/cyborg - m_amt = 0 - -/obj/item/stack/sheet/metal/New(var/loc, var/amount=null) - recipes = metal_recipes - return ..() - - -/* - * Plasteel - */ -var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ - new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1), \ - ) - -/obj/item/stack/sheet/plasteel - name = "plasteel" - singular_name = "plasteel sheet" - desc = "This sheet is an alloy of iron and plasma." - icon_state = "sheet-plasteel" - item_state = "sheet-metal" - m_amt = 7500 - throwforce = 10.0 - flags = CONDUCT - origin_tech = "materials=2" - -/obj/item/stack/sheet/plasteel/New(var/loc, var/amount=null) - recipes = plasteel_recipes - return ..() - -/* - * Wood - */ -var/global/list/datum/stack_recipe/wood_recipes = list ( \ - new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ - new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ - new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \ - new/datum/stack_recipe("wooden chair", /obj/structure/stool/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1), \ - ) - -/obj/item/stack/sheet/wood - name = "wooden plank" - desc = "One can only guess that this is a bunch of wood." - singular_name = "wood plank" - icon_state = "sheet-wood" - origin_tech = "materials=1;biotech=1" - -/obj/item/stack/sheet/wood/New(var/loc, var/amount=null) - recipes = wood_recipes - return ..() - -/* - * Cloth - */ -/obj/item/stack/sheet/cloth - name = "cloth" - desc = "This roll of cloth is made from only the finest chemicals and bunny rabbits." - singular_name = "cloth roll" - icon_state = "sheet-cloth" - origin_tech = "materials=2" - -/* - * Cardboard - */ -var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ - new/datum/stack_recipe("box", /obj/item/weapon/storage/box), \ - new/datum/stack_recipe("light tubes", /obj/item/weapon/storage/box/lights/tubes), \ - new/datum/stack_recipe("light bulbs", /obj/item/weapon/storage/box/lights/bulbs), \ - new/datum/stack_recipe("mouse traps", /obj/item/weapon/storage/box/mousetraps), \ - new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ - new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ - new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ - new/datum/stack_recipe("folder", /obj/item/weapon/folder), \ -) - -/obj/item/stack/sheet/cardboard //BubbleWrap - name = "cardboard" - desc = "Large sheets of card, like boxes folded flat." - singular_name = "cardboard sheet" - icon_state = "sheet-card" - origin_tech = "materials=1" - -/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) - recipes = cardboard_recipes +/* Diffrent misc types of sheets + * Contains: + * Metal + * Plasteel + * Wood + * Cloth + * Cardboard + */ + +/* + * Metal + */ +var/global/list/datum/stack_recipe/metal_recipes = list ( \ + new/datum/stack_recipe("stool", /obj/structure/stool, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("chair", /obj/structure/stool/bed/chair, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("swivel chair", /obj/structure/stool/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("comfy chair", /obj/structure/stool/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("bed", /obj/structure/stool/bed, 2, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ + new/datum/stack_recipe("rack parts", /obj/item/weapon/rack_parts), \ + new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \ + new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ + null, \ + new/datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade), \ + new/datum/stack_recipe("light fixture frame", /obj/item/light_fixture_frame, 2), \ + new/datum/stack_recipe("small light fixture frame", /obj/item/light_fixture_frame/small, 1), \ + null, \ + new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \ + new/datum/stack_recipe("air alarm frame", /obj/item/alarm_frame, 2), \ + new/datum/stack_recipe("fire alarm frame", /obj/item/firealarm_frame, 2), \ + null, \ + new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \ +) + +/obj/item/stack/sheet/metal + name = "metal" + desc = "Sheets made out of metal." + singular_name = "metal sheet" + icon_state = "sheet-metal" + m_amt = 3750 + throwforce = 10.0 + flags = CONDUCT + origin_tech = "materials=1" + +/obj/item/stack/sheet/metal/cyborg + m_amt = 0 + +/obj/item/stack/sheet/metal/New(var/loc, var/amount=null) + recipes = metal_recipes + return ..() + + +/* + * Plasteel + */ +var/global/list/datum/stack_recipe/plasteel_recipes = list ( \ + new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1), \ + ) + +/obj/item/stack/sheet/plasteel + name = "plasteel" + singular_name = "plasteel sheet" + desc = "This sheet is an alloy of iron and plasma." + icon_state = "sheet-plasteel" + item_state = "sheet-metal" + m_amt = 7500 + throwforce = 10.0 + flags = CONDUCT + origin_tech = "materials=2" + +/obj/item/stack/sheet/plasteel/New(var/loc, var/amount=null) + recipes = plasteel_recipes + return ..() + +/* + * Wood + */ +var/global/list/datum/stack_recipe/wood_recipes = list ( \ + new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ + new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ + new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \ + new/datum/stack_recipe("wooden chair", /obj/structure/stool/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1), \ + ) + +/obj/item/stack/sheet/wood + name = "wooden plank" + desc = "One can only guess that this is a bunch of wood." + singular_name = "wood plank" + icon_state = "sheet-wood" + origin_tech = "materials=1;biotech=1" + +/obj/item/stack/sheet/wood/New(var/loc, var/amount=null) + recipes = wood_recipes + return ..() + +/* + * Cloth + */ +/obj/item/stack/sheet/cloth + name = "cloth" + desc = "This roll of cloth is made from only the finest chemicals and bunny rabbits." + singular_name = "cloth roll" + icon_state = "sheet-cloth" + origin_tech = "materials=2" + +/* + * Cardboard + */ +var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ + new/datum/stack_recipe("box", /obj/item/weapon/storage/box), \ + new/datum/stack_recipe("light tubes", /obj/item/weapon/storage/box/lights/tubes), \ + new/datum/stack_recipe("light bulbs", /obj/item/weapon/storage/box/lights/bulbs), \ + new/datum/stack_recipe("mouse traps", /obj/item/weapon/storage/box/mousetraps), \ + new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ + new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ + new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ + new/datum/stack_recipe("folder", /obj/item/weapon/folder), \ +) + +/obj/item/stack/sheet/cardboard //BubbleWrap + name = "cardboard" + desc = "Large sheets of card, like boxes folded flat." + singular_name = "cardboard sheet" + icon_state = "sheet-card" + origin_tech = "materials=1" + +/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) + recipes = cardboard_recipes return ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm index 3c7156cc6e6..648ed2a7967 100644 --- a/code/game/objects/items/weapons/airlock_painter.dm +++ b/code/game/objects/items/weapons/airlock_painter.dm @@ -1,78 +1,78 @@ -/obj/item/weapon/airlock_painter - name = "airlock painter" - desc = "An advanced autopainter preprogrammed with several paintjobs for airlocks. Use it on an airlock during or after construction to change the paintjob." - icon = 'icons/obj/objects.dmi' - icon_state = "paint sprayer" - item_state = "paint sprayer" - - w_class = 2.0 - - m_amt = 50 - g_amt = 50 - origin_tech = "engineering=1" - - flags = CONDUCT - slot_flags = SLOT_BELT - - var/obj/item/device/toner/ink = null - - New() - ink = new /obj/item/device/toner(src) - - //This proc doesn't just check if the painter can be used, but also uses it. - //Only call this if you are certain that the painter will be used right after this check! - proc/use(mob/user as mob) - if(can_use(user)) - ink.charges-- - playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1) - return 1 - else - return 0 - - //This proc only checks if the painter can be used. - //Call this if you don't want the painter to be used right after this check, for example - //because you're expecting user input. - proc/can_use(mob/user as mob) - if(!ink) - user << "There is no toner cardridge installed installed in \the [name]!" - return 0 - else if(ink.charges < 1) - user << "\The [name] is out of ink!" - return 0 - else - return 1 - - examine() - ..() - if(!ink) - usr << "It doesn't have a toner cardridge installed." - return - var/ink_level = "high" - if(ink.charges < 1) - ink_level = "empty" - else if((ink.charges/ink.max_charges) <= 0.25) //25% - ink_level = "low" - else if((ink.charges/ink.max_charges) > 1) //Over 100% (admin var edit) - ink_level = "dangerously high" - usr << "Its ink levels look [ink_level]." - - attackby(obj/item/weapon/W, mob/user) - ..() - if(istype(W, /obj/item/device/toner)) - if(ink) - user << "\the [name] already contains \a [ink]." - return - user.drop_item() - W.loc = src - user << "You install \the [W] into \the [name]." - ink = W - playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - - - attack_self(mob/user) - if(ink) - playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - ink.loc = user.loc - user.put_in_hands(ink) - user << "You remove \the [ink] from \the [name]." - ink = null +/obj/item/weapon/airlock_painter + name = "airlock painter" + desc = "An advanced autopainter preprogrammed with several paintjobs for airlocks. Use it on an airlock during or after construction to change the paintjob." + icon = 'icons/obj/objects.dmi' + icon_state = "paint sprayer" + item_state = "paint sprayer" + + w_class = 2.0 + + m_amt = 50 + g_amt = 50 + origin_tech = "engineering=1" + + flags = CONDUCT + slot_flags = SLOT_BELT + + var/obj/item/device/toner/ink = null + + New() + ink = new /obj/item/device/toner(src) + + //This proc doesn't just check if the painter can be used, but also uses it. + //Only call this if you are certain that the painter will be used right after this check! + proc/use(mob/user as mob) + if(can_use(user)) + ink.charges-- + playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1) + return 1 + else + return 0 + + //This proc only checks if the painter can be used. + //Call this if you don't want the painter to be used right after this check, for example + //because you're expecting user input. + proc/can_use(mob/user as mob) + if(!ink) + user << "There is no toner cardridge installed installed in \the [name]!" + return 0 + else if(ink.charges < 1) + user << "\The [name] is out of ink!" + return 0 + else + return 1 + + examine() + ..() + if(!ink) + usr << "It doesn't have a toner cardridge installed." + return + var/ink_level = "high" + if(ink.charges < 1) + ink_level = "empty" + else if((ink.charges/ink.max_charges) <= 0.25) //25% + ink_level = "low" + else if((ink.charges/ink.max_charges) > 1) //Over 100% (admin var edit) + ink_level = "dangerously high" + usr << "Its ink levels look [ink_level]." + + attackby(obj/item/weapon/W, mob/user) + ..() + if(istype(W, /obj/item/device/toner)) + if(ink) + user << "\the [name] already contains \a [ink]." + return + user.drop_item() + W.loc = src + user << "You install \the [W] into \the [name]." + ink = W + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + + + attack_self(mob/user) + if(ink) + playsound(src.loc, 'sound/machines/click.ogg', 50, 1) + ink.loc = user.loc + user.put_in_hands(ink) + user << "You remove \the [ink] from \the [name]." + ink = null diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index bab9c53b9a6..df3e801863f 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -1,93 +1,93 @@ -//improvised explosives// - -//iedcasing assembly crafting// -/obj/item/weapon/reagent_containers/food/drinks/soda_cans/attackby(var/obj/item/I, mob/user as mob) - if(istype(I, /obj/item/device/assembly/igniter)) - var/obj/item/device/assembly/igniter/G = I - var/obj/item/weapon/grenade/iedcasing/W = new /obj/item/weapon/grenade/iedcasing - user.unEquip(G) - user.unEquip(src) - user.put_in_hands(W) - user << "You stuff the [I] in the [src], emptying the contents beforehand." - W.underlays += image(src.icon, icon_state = src.icon_state) - qdel(I) - qdel(src) - - -/obj/item/weapon/grenade/iedcasing - name = "improvised explosive assembly" - desc = "An igniter stuffed into an aluminium shell." - w_class = 2.0 - icon = 'icons/obj/grenade.dmi' - icon_state = "improvised_grenade" - item_state = "flashbang" - throw_speed = 3 - throw_range = 7 - flags = CONDUCT - slot_flags = SLOT_BELT - var/assembled = 0 - active = 1 - det_time = 50 - display_timer = 0 - - - -/obj/item/weapon/grenade/iedcasing/afterattack(atom/target, mob/user , flag) //Filling up the can - if(assembled == 0) - if(istype(target, /obj/structure/reagent_dispensers/fueltank) && in_range(src, target)) - if(target.reagents.total_volume < 50) - user << "There's not enough fuel left to work with." - return - var/obj/structure/reagent_dispensers/fueltank/F = target - F.reagents.remove_reagent("fuel", 50, 1)//Deleting 50 fuel from the welding fuel tank, - assembled = 1 - user << "You've filled the makeshift explosive with welding fuel." - playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6) - desc = "An improvised explosive assembly. Filled to the brim with 'Explosive flavor'" - overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled") - return - - -/obj/item/weapon/grenade/iedcasing/attackby(var/obj/item/I, mob/user as mob) //Wiring the can for ignition - if(istype(I, /obj/item/stack/cable_coil)) - if(assembled == 1) - var/obj/item/stack/cable_coil/C = I - C.use(1) - assembled = 2 - user << "You wire the igniter to detonate the fuel." - desc = "A weak, improvised explosive." - overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired") - name = "improvised explosive" - active = 0 - det_time = rand(30,80) - -/obj/item/weapon/grenade/iedcasing/attack_self(mob/user as mob) // - if(!active) - if(clown_check(user)) - user << "You light the [name]!" - active = 1 - overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled") - icon_state = initial(icon_state) + "_active" - assembled = 3 - add_fingerprint(user) - var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - - message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") - log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.throw_mode_on() - spawn(det_time) - prime() - -/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up - update_mob() - explosion(src.loc,-1,0,2) - qdel(src) - -/obj/item/weapon/grenade/iedcasing/examine() - set src in usr - ..() - if(assembled == 3) - usr << "You can't tell when it will explode!" +//improvised explosives// + +//iedcasing assembly crafting// +/obj/item/weapon/reagent_containers/food/drinks/soda_cans/attackby(var/obj/item/I, mob/user as mob) + if(istype(I, /obj/item/device/assembly/igniter)) + var/obj/item/device/assembly/igniter/G = I + var/obj/item/weapon/grenade/iedcasing/W = new /obj/item/weapon/grenade/iedcasing + user.unEquip(G) + user.unEquip(src) + user.put_in_hands(W) + user << "You stuff the [I] in the [src], emptying the contents beforehand." + W.underlays += image(src.icon, icon_state = src.icon_state) + qdel(I) + qdel(src) + + +/obj/item/weapon/grenade/iedcasing + name = "improvised explosive assembly" + desc = "An igniter stuffed into an aluminium shell." + w_class = 2.0 + icon = 'icons/obj/grenade.dmi' + icon_state = "improvised_grenade" + item_state = "flashbang" + throw_speed = 3 + throw_range = 7 + flags = CONDUCT + slot_flags = SLOT_BELT + var/assembled = 0 + active = 1 + det_time = 50 + display_timer = 0 + + + +/obj/item/weapon/grenade/iedcasing/afterattack(atom/target, mob/user , flag) //Filling up the can + if(assembled == 0) + if(istype(target, /obj/structure/reagent_dispensers/fueltank) && in_range(src, target)) + if(target.reagents.total_volume < 50) + user << "There's not enough fuel left to work with." + return + var/obj/structure/reagent_dispensers/fueltank/F = target + F.reagents.remove_reagent("fuel", 50, 1)//Deleting 50 fuel from the welding fuel tank, + assembled = 1 + user << "You've filled the makeshift explosive with welding fuel." + playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6) + desc = "An improvised explosive assembly. Filled to the brim with 'Explosive flavor'" + overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled") + return + + +/obj/item/weapon/grenade/iedcasing/attackby(var/obj/item/I, mob/user as mob) //Wiring the can for ignition + if(istype(I, /obj/item/stack/cable_coil)) + if(assembled == 1) + var/obj/item/stack/cable_coil/C = I + C.use(1) + assembled = 2 + user << "You wire the igniter to detonate the fuel." + desc = "A weak, improvised explosive." + overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired") + name = "improvised explosive" + active = 0 + det_time = rand(30,80) + +/obj/item/weapon/grenade/iedcasing/attack_self(mob/user as mob) // + if(!active) + if(clown_check(user)) + user << "You light the [name]!" + active = 1 + overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled") + icon_state = initial(icon_state) + "_active" + assembled = 3 + add_fingerprint(user) + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + + message_admins("[key_name(usr)]? has primed a [name] for detonation at [A.name] (JMP).") + log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.throw_mode_on() + spawn(det_time) + prime() + +/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up + update_mob() + explosion(src.loc,-1,0,2) + qdel(src) + +/obj/item/weapon/grenade/iedcasing/examine() + set src in usr + ..() + if(assembled == 3) + usr << "You can't tell when it will explode!" diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm index 160c6846d3c..cc26f378c46 100644 --- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm +++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm @@ -1,12 +1,12 @@ -/obj/item/weapon/grenade/syndieminibomb - desc = "A syndicate manufactured explosive used to sow destruction and chaos" - name = "syndicate minibomb" - icon = 'icons/obj/grenade.dmi' - icon_state = "syndicate" - item_state = "flashbang" - origin_tech = "materials=3;magnets=4;syndicate=4" - -/obj/item/weapon/grenade/syndieminibomb/prime() - update_mob() - explosion(src.loc,1,2,4,flame_range = 2) +/obj/item/weapon/grenade/syndieminibomb + desc = "A syndicate manufactured explosive used to sow destruction and chaos" + name = "syndicate minibomb" + icon = 'icons/obj/grenade.dmi' + icon_state = "syndicate" + item_state = "flashbang" + origin_tech = "materials=3;magnets=4;syndicate=4" + +/obj/item/weapon/grenade/syndieminibomb/prime() + update_mob() + explosion(src.loc,1,2,4,flame_range = 2) qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 9fe4356f693..9f8b5b62832 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -1,434 +1,434 @@ -// To clarify: -// For use_to_pickup and allow_quick_gather functionality, -// see item/attackby() (/game/objects/items.dm) -// Do not remove this functionality without good reason, cough reagent_containers cough. -// -Sayu - - -/obj/item/weapon/storage - name = "storage" - icon = 'icons/obj/storage.dmi' - w_class = 3.0 - var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) - var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) - var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. - var/storage_slots = 7 //The number of storage slots in this container. - var/obj/screen/storage/boxes = null - var/obj/screen/close/closer = null - var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. - var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. - var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. - var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. - var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type - - -/obj/item/weapon/storage/MouseDrop(obj/over_object) - if(ismob(usr)) //all the check for item manipulation are in other places, you can safely open any storages as anything and its not buggy, i checked - var/mob/M = usr - - if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech - return - - if(over_object == M && Adjacent(M)) // this must come before the screen objects only block - orient2hud(M) // dunno why it wasn't before - if(M.s_active) - M.s_active.close(M) - show_to(M) - return - - if(!( istype(over_object, /obj/screen) )) - return ..() - - if(!(loc == usr) || (loc && loc.loc == usr)) - return - playsound(loc, "rustle", 50, 1, -5) - if(!( M.restrained() ) && !( M.stat )) - switch(over_object.name) - if("r_hand") - if(!M.unEquip(src)) - return - M.put_in_r_hand(src) - if("l_hand") - if(!M.unEquip(src)) - return - M.put_in_l_hand(src) - add_fingerprint(usr) - return - - -/obj/item/weapon/storage/proc/return_inv() - var/list/L = list() - L += contents - - for(var/obj/item/weapon/storage/S in src) - L += S.return_inv() - return L - - -/obj/item/weapon/storage/proc/show_to(mob/user) - if(user.s_active != src) - for(var/obj/item/I in src) - if(I.on_found(user)) - return - if(user.s_active) - user.s_active.hide_from(user) - user.client.screen -= boxes - user.client.screen -= closer - user.client.screen -= contents - user.client.screen += boxes - user.client.screen += closer - user.client.screen += contents - user.s_active = src - - -/obj/item/weapon/storage/proc/hide_from(mob/user) - if(!user.client) - return - user.client.screen -= boxes - user.client.screen -= closer - user.client.screen -= contents - if(user.s_active == src) - user.s_active = null - - -/obj/item/weapon/storage/proc/close(mob/user) - hide_from(user) - user.s_active = null - - -/obj/item/weapon/storage/proc/close_all() //returns 1 if any mobs actually got a close(M) call - var/actually_closed = 0 - for(var/mob/M in range(1)) - if(M.s_active == src) - close(M) - actually_closed = 1 - return actually_closed - -//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. -//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. -/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) - var/cx = tx - var/cy = ty - boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" - for(var/obj/O in contents) - O.screen_loc = "[cx],[cy]" - O.layer = 20 - cx++ - if(cx > mx) - cx = tx - cy-- - closer.screen_loc = "[mx+1],[my]" - - -//This proc draws out the inventory and places the items on it. It uses the standard position. -/obj/item/weapon/storage/proc/standard_orient_objs(rows, cols, list/obj/item/display_contents) - var/cx = 4 - var/cy = 2+rows - boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" - - if(display_contents_with_number) - for(var/datum/numbered_display/ND in display_contents) - ND.sample_object.screen_loc = "[cx]:16,[cy]:16" - ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" - ND.sample_object.layer = 20 - cx++ - if(cx > (4+cols)) - cx = 4 - cy-- - else - for(var/obj/O in contents) - O.screen_loc = "[cx]:16,[cy]:16" - O.maptext = "" - O.layer = 20 - cx++ - if(cx > (4+cols)) - cx = 4 - cy-- - closer.screen_loc = "[4+cols+1]:16,2:16" - - -/datum/numbered_display - var/obj/item/sample_object - var/number - - New(obj/item/sample) - if(!istype(sample)) - del(src) - sample_object = sample - number = 1 - - -//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. -/obj/item/weapon/storage/proc/orient2hud(mob/user) - var/adjusted_contents = contents.len - - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/I in contents) - var/found = 0 - for(var/datum/numbered_display/ND in numbered_contents) - if(ND.sample_object.type == I.type) - ND.number++ - found = 1 - break - if(!found) - adjusted_contents++ - numbered_contents.Add( new/datum/numbered_display(I) ) - - //var/mob/living/carbon/human/H = user - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if(adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - standard_orient_objs(row_num, col_count, numbered_contents) - - -//This proc return 1 if the item can be picked up and 0 if it can't. -//Set the stop_messages to stop it from printing messages -/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W, stop_messages = 0) - if(!istype(W) || (W.flags & ABSTRACT)) return //Not an item - - if(loc == W) - return 0 //Means the item is already in the storage item - if(contents.len >= storage_slots) - if(!stop_messages) - usr << "[src] is full, make some space." - return 0 //Storage item is full - - if(can_hold.len) - var/ok = 0 - for(var/A in can_hold) - if(istype(W, text2path(A) )) - ok = 1 - break - if(!ok) - if(!stop_messages) - usr << "[src] cannot hold [W]." - return 0 - - for(var/A in cant_hold) //Check for specific items which this container can't hold. - if(istype(W, text2path(A) )) - if(!stop_messages) - usr << "[src] cannot hold [W]." - return 0 - - if(W.w_class > max_w_class) - if(!stop_messages) - usr << "[W] is too big for this [src]." - return 0 - - var/sum_w_class = W.w_class - for(var/obj/item/I in contents) - sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. - - if(sum_w_class > max_combined_w_class) - if(!stop_messages) - usr << "[src] is full, make some space." - return 0 - - if(W.w_class >= w_class && (istype(W, /obj/item/weapon/storage))) - if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. - if(!stop_messages) - usr << "[src] cannot hold [W] as it's a storage item of the same size." - return 0 //To prevent the stacking of same sized storage items. - - if(W.flags & NODROP) //SHOULD be handled in unEquip, but better safe than sorry. - usr << "\the [W] is stuck to your hand, you can't put it in \the [src]" - return 0 - - return 1 - - -//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() -//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, -//such as when picking up all the items on a tile with one click. -/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W, prevent_warning = 0) - if(!istype(W)) return 0 - if(usr) - if(!usr.unEquip(W)) - return 0 - W.loc = src - W.on_enter_storage(src) - if(usr) - if(usr.client && usr.s_active != src) - usr.client.screen -= W - - add_fingerprint(usr) - - if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) - for(var/mob/M in viewers(usr, null)) - if(M == usr) - usr << "You put [W] into [src]." - else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... - M.show_message("[usr] puts [W] into [src].") - else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... - M.show_message("[usr] puts [W] into [src].") - - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() - return 1 - - -//Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target -/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W, atom/new_location) - if(!istype(W)) return 0 - - if(istype(src, /obj/item/weapon/storage/fancy)) - var/obj/item/weapon/storage/fancy/F = src - F.update_icon(1) - - for(var/mob/M in range(1, loc)) - if(M.s_active == src) - if(M.client) - M.client.screen -= W - - if(new_location) - if(ismob(loc)) - W.dropped(usr) - if(ismob(new_location)) - W.layer = 20 - else - W.layer = initial(W.layer) - W.loc = new_location - else - W.loc = get_turf(src) - - if(usr) - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - if(W.maptext) - W.maptext = "" - W.on_exit_storage(src) - update_icon() - return 1 - - -//This proc is called when you want to place an item into the storage item. -/obj/item/weapon/storage/attackby(obj/item/W, mob/user) - ..() - - if(isrobot(user)) - user << "You're a robot. No." - return 0 //Robots can't interact with storage items. - - if(!can_be_inserted(W)) - return 0 - - if(istype(W, /obj/item/weapon/tray)) //THIS ISN'T HOW OOP WORKS - var/obj/item/weapon/tray/T = W - if(T.calc_carry() > 0) - user << "[T] won't fit in [src]." - return 1 - - handle_item_insertion(W) - return 1 - - -/obj/item/weapon/storage/dropped(mob/user) - return - -/obj/item/weapon/storage/attack_hand(mob/user) - playsound(loc, "rustle", 50, 1, -5) - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket. - H.put_in_hands(src) - H.l_store = null - return - if(H.r_store == src && !H.get_active_hand()) - H.put_in_hands(src) - H.r_store = null - return - - orient2hud(user) - if(loc == user) - if(user.s_active) - user.s_active.close(user) - show_to(user) - else - ..() - for(var/mob/M in range(1)) - if(M.s_active == src) - close(M) - add_fingerprint(user) - -/obj/item/weapon/storage/attack_paw(mob/user) - return attack_hand(user) - -/obj/item/weapon/storage/verb/toggle_gathering_mode() - set name = "Switch Gathering Method" - set category = "Object" - - collection_mode = (collection_mode+1)%3 - switch (collection_mode) - if(2) - usr << "[src] now picks up all items of a single type at once." - if(1) - usr << "[src] now picks up all items in a tile at once." - if(0) - usr << "[src] now picks up one item at a time." - - -/obj/item/weapon/storage/verb/quick_empty() - set name = "Empty Contents" - set category = "Object" - - if((!ishuman(usr) && (loc != usr)) || usr.stat || usr.restrained()) - return - - var/turf/T = get_turf(src) - hide_from(usr) - for(var/obj/item/I in contents) - remove_from_storage(I, T) - - -/obj/item/weapon/storage/New() - - if(allow_quick_empty) - verbs += /obj/item/weapon/storage/verb/quick_empty - else - verbs -= /obj/item/weapon/storage/verb/quick_empty - - if(allow_quick_gather) - verbs += /obj/item/weapon/storage/verb/toggle_gathering_mode - else - verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode - - boxes = new /obj/screen/storage() - boxes.name = "storage" - boxes.master = src - boxes.icon_state = "block" - boxes.screen_loc = "7,7 to 10,8" - boxes.layer = 19 - closer = new /obj/screen/close() - closer.master = src - closer.icon_state = "x" - closer.layer = 20 - orient2hud() - - -/obj/item/weapon/storage/Destroy() - close_all() - ..() - - -/obj/item/weapon/storage/emp_act(severity) - if(!istype(loc, /mob/living)) - for(var/obj/O in contents) - O.emp_act(severity) - ..() - - -/obj/item/weapon/storage/attack_self(mob/user) - //Clicking on itself will empty it, if it has the verb to do that. - if(user.get_active_hand() == src) - if(verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) - quick_empty() +// To clarify: +// For use_to_pickup and allow_quick_gather functionality, +// see item/attackby() (/game/objects/items.dm) +// Do not remove this functionality without good reason, cough reagent_containers cough. +// -Sayu + + +/obj/item/weapon/storage + name = "storage" + icon = 'icons/obj/storage.dmi' + w_class = 3.0 + var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) + var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) + var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) + var/max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. + var/storage_slots = 7 //The number of storage slots in this container. + var/obj/screen/storage/boxes = null + var/obj/screen/close/closer = null + var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up. + var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number. + var/allow_quick_empty //Set this variable to allow the object to have the 'empty' verb, which dumps all the contents on the floor. + var/allow_quick_gather //Set this variable to allow the object to have the 'toggle mode' verb, which quickly collects all items from a tile. + var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile, 2 = pick all of a type + + +/obj/item/weapon/storage/MouseDrop(obj/over_object) + if(ismob(usr)) //all the check for item manipulation are in other places, you can safely open any storages as anything and its not buggy, i checked + var/mob/M = usr + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return + + if(over_object == M && Adjacent(M)) // this must come before the screen objects only block + orient2hud(M) // dunno why it wasn't before + if(M.s_active) + M.s_active.close(M) + show_to(M) + return + + if(!( istype(over_object, /obj/screen) )) + return ..() + + if(!(loc == usr) || (loc && loc.loc == usr)) + return + playsound(loc, "rustle", 50, 1, -5) + if(!( M.restrained() ) && !( M.stat )) + switch(over_object.name) + if("r_hand") + if(!M.unEquip(src)) + return + M.put_in_r_hand(src) + if("l_hand") + if(!M.unEquip(src)) + return + M.put_in_l_hand(src) + add_fingerprint(usr) + return + + +/obj/item/weapon/storage/proc/return_inv() + var/list/L = list() + L += contents + + for(var/obj/item/weapon/storage/S in src) + L += S.return_inv() + return L + + +/obj/item/weapon/storage/proc/show_to(mob/user) + if(user.s_active != src) + for(var/obj/item/I in src) + if(I.on_found(user)) + return + if(user.s_active) + user.s_active.hide_from(user) + user.client.screen -= boxes + user.client.screen -= closer + user.client.screen -= contents + user.client.screen += boxes + user.client.screen += closer + user.client.screen += contents + user.s_active = src + + +/obj/item/weapon/storage/proc/hide_from(mob/user) + if(!user.client) + return + user.client.screen -= boxes + user.client.screen -= closer + user.client.screen -= contents + if(user.s_active == src) + user.s_active = null + + +/obj/item/weapon/storage/proc/close(mob/user) + hide_from(user) + user.s_active = null + + +/obj/item/weapon/storage/proc/close_all() //returns 1 if any mobs actually got a close(M) call + var/actually_closed = 0 + for(var/mob/M in range(1)) + if(M.s_active == src) + close(M) + actually_closed = 1 + return actually_closed + +//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. +//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. +/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) + var/cx = tx + var/cy = ty + boxes.screen_loc = "[tx]:,[ty] to [mx],[my]" + for(var/obj/O in contents) + O.screen_loc = "[cx],[cy]" + O.layer = 20 + cx++ + if(cx > mx) + cx = tx + cy-- + closer.screen_loc = "[mx+1],[my]" + + +//This proc draws out the inventory and places the items on it. It uses the standard position. +/obj/item/weapon/storage/proc/standard_orient_objs(rows, cols, list/obj/item/display_contents) + var/cx = 4 + var/cy = 2+rows + boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16" + + if(display_contents_with_number) + for(var/datum/numbered_display/ND in display_contents) + ND.sample_object.screen_loc = "[cx]:16,[cy]:16" + ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" + ND.sample_object.layer = 20 + cx++ + if(cx > (4+cols)) + cx = 4 + cy-- + else + for(var/obj/O in contents) + O.screen_loc = "[cx]:16,[cy]:16" + O.maptext = "" + O.layer = 20 + cx++ + if(cx > (4+cols)) + cx = 4 + cy-- + closer.screen_loc = "[4+cols+1]:16,2:16" + + +/datum/numbered_display + var/obj/item/sample_object + var/number + + New(obj/item/sample) + if(!istype(sample)) + del(src) + sample_object = sample + number = 1 + + +//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. +/obj/item/weapon/storage/proc/orient2hud(mob/user) + var/adjusted_contents = contents.len + + //Numbered contents display + var/list/datum/numbered_display/numbered_contents + if(display_contents_with_number) + numbered_contents = list() + adjusted_contents = 0 + for(var/obj/item/I in contents) + var/found = 0 + for(var/datum/numbered_display/ND in numbered_contents) + if(ND.sample_object.type == I.type) + ND.number++ + found = 1 + break + if(!found) + adjusted_contents++ + numbered_contents.Add( new/datum/numbered_display(I) ) + + //var/mob/living/carbon/human/H = user + var/row_num = 0 + var/col_count = min(7,storage_slots) -1 + if(adjusted_contents > 7) + row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. + standard_orient_objs(row_num, col_count, numbered_contents) + + +//This proc return 1 if the item can be picked up and 0 if it can't. +//Set the stop_messages to stop it from printing messages +/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W, stop_messages = 0) + if(!istype(W) || (W.flags & ABSTRACT)) return //Not an item + + if(loc == W) + return 0 //Means the item is already in the storage item + if(contents.len >= storage_slots) + if(!stop_messages) + usr << "[src] is full, make some space." + return 0 //Storage item is full + + if(can_hold.len) + var/ok = 0 + for(var/A in can_hold) + if(istype(W, text2path(A) )) + ok = 1 + break + if(!ok) + if(!stop_messages) + usr << "[src] cannot hold [W]." + return 0 + + for(var/A in cant_hold) //Check for specific items which this container can't hold. + if(istype(W, text2path(A) )) + if(!stop_messages) + usr << "[src] cannot hold [W]." + return 0 + + if(W.w_class > max_w_class) + if(!stop_messages) + usr << "[W] is too big for this [src]." + return 0 + + var/sum_w_class = W.w_class + for(var/obj/item/I in contents) + sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. + + if(sum_w_class > max_combined_w_class) + if(!stop_messages) + usr << "[src] is full, make some space." + return 0 + + if(W.w_class >= w_class && (istype(W, /obj/item/weapon/storage))) + if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. + if(!stop_messages) + usr << "[src] cannot hold [W] as it's a storage item of the same size." + return 0 //To prevent the stacking of same sized storage items. + + if(W.flags & NODROP) //SHOULD be handled in unEquip, but better safe than sorry. + usr << "\the [W] is stuck to your hand, you can't put it in \the [src]" + return 0 + + return 1 + + +//This proc handles items being inserted. It does not perform any checks of whether an item can or can't be inserted. That's done by can_be_inserted() +//The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, +//such as when picking up all the items on a tile with one click. +/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W, prevent_warning = 0) + if(!istype(W)) return 0 + if(usr) + if(!usr.unEquip(W)) + return 0 + W.loc = src + W.on_enter_storage(src) + if(usr) + if(usr.client && usr.s_active != src) + usr.client.screen -= W + + add_fingerprint(usr) + + if(!prevent_warning && !istype(W, /obj/item/weapon/gun/energy/crossbow)) + for(var/mob/M in viewers(usr, null)) + if(M == usr) + usr << "You put [W] into [src]." + else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is... + M.show_message("[usr] puts [W] into [src].") + else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance... + M.show_message("[usr] puts [W] into [src].") + + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + update_icon() + return 1 + + +//Call this proc to handle the removal of an item from the storage item. The item will be moved to the atom sent as new_target +/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W, atom/new_location) + if(!istype(W)) return 0 + + if(istype(src, /obj/item/weapon/storage/fancy)) + var/obj/item/weapon/storage/fancy/F = src + F.update_icon(1) + + for(var/mob/M in range(1, loc)) + if(M.s_active == src) + if(M.client) + M.client.screen -= W + + if(new_location) + if(ismob(loc)) + W.dropped(usr) + if(ismob(new_location)) + W.layer = 20 + else + W.layer = initial(W.layer) + W.loc = new_location + else + W.loc = get_turf(src) + + if(usr) + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + if(W.maptext) + W.maptext = "" + W.on_exit_storage(src) + update_icon() + return 1 + + +//This proc is called when you want to place an item into the storage item. +/obj/item/weapon/storage/attackby(obj/item/W, mob/user) + ..() + + if(isrobot(user)) + user << "You're a robot. No." + return 0 //Robots can't interact with storage items. + + if(!can_be_inserted(W)) + return 0 + + if(istype(W, /obj/item/weapon/tray)) //THIS ISN'T HOW OOP WORKS + var/obj/item/weapon/tray/T = W + if(T.calc_carry() > 0) + user << "[T] won't fit in [src]." + return 1 + + handle_item_insertion(W) + return 1 + + +/obj/item/weapon/storage/dropped(mob/user) + return + +/obj/item/weapon/storage/attack_hand(mob/user) + playsound(loc, "rustle", 50, 1, -5) + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket. + H.put_in_hands(src) + H.l_store = null + return + if(H.r_store == src && !H.get_active_hand()) + H.put_in_hands(src) + H.r_store = null + return + + orient2hud(user) + if(loc == user) + if(user.s_active) + user.s_active.close(user) + show_to(user) + else + ..() + for(var/mob/M in range(1)) + if(M.s_active == src) + close(M) + add_fingerprint(user) + +/obj/item/weapon/storage/attack_paw(mob/user) + return attack_hand(user) + +/obj/item/weapon/storage/verb/toggle_gathering_mode() + set name = "Switch Gathering Method" + set category = "Object" + + collection_mode = (collection_mode+1)%3 + switch (collection_mode) + if(2) + usr << "[src] now picks up all items of a single type at once." + if(1) + usr << "[src] now picks up all items in a tile at once." + if(0) + usr << "[src] now picks up one item at a time." + + +/obj/item/weapon/storage/verb/quick_empty() + set name = "Empty Contents" + set category = "Object" + + if((!ishuman(usr) && (loc != usr)) || usr.stat || usr.restrained()) + return + + var/turf/T = get_turf(src) + hide_from(usr) + for(var/obj/item/I in contents) + remove_from_storage(I, T) + + +/obj/item/weapon/storage/New() + + if(allow_quick_empty) + verbs += /obj/item/weapon/storage/verb/quick_empty + else + verbs -= /obj/item/weapon/storage/verb/quick_empty + + if(allow_quick_gather) + verbs += /obj/item/weapon/storage/verb/toggle_gathering_mode + else + verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode + + boxes = new /obj/screen/storage() + boxes.name = "storage" + boxes.master = src + boxes.icon_state = "block" + boxes.screen_loc = "7,7 to 10,8" + boxes.layer = 19 + closer = new /obj/screen/close() + closer.master = src + closer.icon_state = "x" + closer.layer = 20 + orient2hud() + + +/obj/item/weapon/storage/Destroy() + close_all() + ..() + + +/obj/item/weapon/storage/emp_act(severity) + if(!istype(loc, /mob/living)) + for(var/obj/O in contents) + O.emp_act(severity) + ..() + + +/obj/item/weapon/storage/attack_self(mob/user) + //Clicking on itself will empty it, if it has the verb to do that. + if(user.get_active_hand() == src) + if(verbs.Find(/obj/item/weapon/storage/verb/quick_empty)) + quick_empty() diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 7c3e70420fd..28f202b226e 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -1,89 +1,89 @@ -/obj/item/weapon/storage/wallet - name = "wallet" - desc = "It can hold a few small and personal things." - storage_slots = 4 - icon_state = "wallet" - w_class = 2 - can_hold = list( - "/obj/item/weapon/spacecash", - "/obj/item/weapon/card", - "/obj/item/clothing/mask/cigarette", - "/obj/item/device/flashlight/pen", - "/obj/item/seeds", - "/obj/item/stack/medical", - "/obj/item/toy/crayon", - "/obj/item/weapon/coin", - "/obj/item/weapon/dice", - "/obj/item/weapon/disk", - "/obj/item/weapon/implanter", - "/obj/item/weapon/lighter", - "/obj/item/weapon/match", - "/obj/item/weapon/paper", - "/obj/item/weapon/pen", - "/obj/item/weapon/photo", - "/obj/item/weapon/reagent_containers/dropper", - "/obj/item/weapon/screwdriver", - "/obj/item/weapon/stamp") - slot_flags = SLOT_ID - - var/obj/item/weapon/card/id/front_id = null - - -/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location) - . = ..(W, new_location) - if(.) - if(W == front_id) - front_id = null - update_icon() - -/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) - . = ..(W, prevent_warning) - if(.) - if(!front_id && istype(W, /obj/item/weapon/card/id)) - front_id = W - update_icon() - -/obj/item/weapon/storage/wallet/update_icon() - - if(front_id) - switch(front_id.icon_state) - if("id") - icon_state = "walletid" - return - if("silver") - icon_state = "walletid_silver" - return - if("gold") - icon_state = "walletid_gold" - return - if("centcom") - icon_state = "walletid_centcom" - return - icon_state = "wallet" - - -/obj/item/weapon/storage/wallet/GetID() - return front_id - -/obj/item/weapon/storage/wallet/GetAccess() - var/obj/item/I = GetID() - if(I) - return I.GetAccess() - else - return ..() - -/obj/item/weapon/storage/wallet/random/New() - ..() - var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) - var/item2_type - if(prob(50)) - item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) - var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron ) - - spawn(2) - if(item1_type) - new item1_type(src) - if(item2_type) - new item2_type(src) - if(item3_type) +/obj/item/weapon/storage/wallet + name = "wallet" + desc = "It can hold a few small and personal things." + storage_slots = 4 + icon_state = "wallet" + w_class = 2 + can_hold = list( + "/obj/item/weapon/spacecash", + "/obj/item/weapon/card", + "/obj/item/clothing/mask/cigarette", + "/obj/item/device/flashlight/pen", + "/obj/item/seeds", + "/obj/item/stack/medical", + "/obj/item/toy/crayon", + "/obj/item/weapon/coin", + "/obj/item/weapon/dice", + "/obj/item/weapon/disk", + "/obj/item/weapon/implanter", + "/obj/item/weapon/lighter", + "/obj/item/weapon/match", + "/obj/item/weapon/paper", + "/obj/item/weapon/pen", + "/obj/item/weapon/photo", + "/obj/item/weapon/reagent_containers/dropper", + "/obj/item/weapon/screwdriver", + "/obj/item/weapon/stamp") + slot_flags = SLOT_ID + + var/obj/item/weapon/card/id/front_id = null + + +/obj/item/weapon/storage/wallet/remove_from_storage(obj/item/W as obj, atom/new_location) + . = ..(W, new_location) + if(.) + if(W == front_id) + front_id = null + update_icon() + +/obj/item/weapon/storage/wallet/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) + . = ..(W, prevent_warning) + if(.) + if(!front_id && istype(W, /obj/item/weapon/card/id)) + front_id = W + update_icon() + +/obj/item/weapon/storage/wallet/update_icon() + + if(front_id) + switch(front_id.icon_state) + if("id") + icon_state = "walletid" + return + if("silver") + icon_state = "walletid_silver" + return + if("gold") + icon_state = "walletid_gold" + return + if("centcom") + icon_state = "walletid_centcom" + return + icon_state = "wallet" + + +/obj/item/weapon/storage/wallet/GetID() + return front_id + +/obj/item/weapon/storage/wallet/GetAccess() + var/obj/item/I = GetID() + if(I) + return I.GetAccess() + else + return ..() + +/obj/item/weapon/storage/wallet/random/New() + ..() + var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) + var/item2_type + if(prob(50)) + item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) + var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron ) + + spawn(2) + if(item1_type) + new item1_type(src) + if(item2_type) + new item2_type(src) + if(item3_type) new item3_type(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index bc0c09d44a0..2544876e0ba 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -1,177 +1,177 @@ -//Hydroponics tank and base code -/obj/item/weapon/watertank - name = "backpack water tank" - desc = "A S.U.N.S.H.I.N.E. brand watertank backpack with nozzle to water plants." - icon = 'icons/obj/hydroponics.dmi' - icon_state = "waterbackpack" - item_state = "waterbackpack" - w_class = 4.0 - slot_flags = SLOT_BACK - slowdown = 1 - action_button_name = "Toggle Mister" - - var/obj/item/weapon/noz - var/on = 0 - var/volume = 500 - -/obj/item/weapon/watertank/New() - ..() - create_reagents(volume) - return - -/obj/item/weapon/watertank/examine() - set src in usr - ..() - for(var/datum/reagent/R in reagents.reagent_list) - usr << "[round(R.volume)] units of [R.name] left." - return - -/obj/item/weapon/watertank/ui_action_click() - if (usr.get_item_by_slot(slot_back) == src) - toggle_mister() - else - usr << "The watertank needs to be on your back to use!" - return - -/obj/item/weapon/watertank/verb/toggle_mister() - set name = "Toggle Mister" - set category = "Object" - on = !on - - var/mob/living/carbon/human/user = usr - if(on) - //Detach the nozzle into the user's hands - make_noz() - var/list/L = list("left hand" = slot_l_hand,"right hand" = slot_r_hand) - if(!user.equip_in_one_of_slots(noz, L)) - on = 0 - user << "You need a free hand to hold the mister!" - else - //Remove from their hands and put back "into" the tank - remove_noz(user) - return - -/obj/item/weapon/watertank/proc/make_noz() - noz = new /obj/item/weapon/reagent_containers/spray/mister(src) - return - -/obj/item/weapon/watertank/equipped(mob/user, slot) - if (slot != slot_back) - remove_noz(user) - -/obj/item/weapon/watertank/proc/remove_noz(mob/user) - if (noz != null) - var/mob/living/carbon/human/M = user - M.unEquip(noz) - return - -/obj/item/weapon/watertank/Destroy() - if (noz) - var/M = get(noz, /mob) - remove_noz(M) - ..() - return - -// This mister item is intended as an extension of the watertank and always attached to it. -// Therefore, it's designed to be "locked" to the player's hands or extended back onto -// the watertank backpack. Allowing it to be placed elsewhere or created without a parent -// watertank object will likely lead to weird behaviour or runtimes. -/obj/item/weapon/reagent_containers/spray/mister - name = "water mister" - desc = "A mister nozzle attached to a water tank." - icon = 'icons/obj/hydroponics.dmi' - icon_state = "mister" - item_state = "mister" - w_class = 4.0 - amount_per_transfer_from_this = 50 - possible_transfer_amounts = list(25,50,100) - volume = 500 - - var/obj/item/weapon/watertank/tank - -/obj/item/weapon/reagent_containers/spray/mister/New(parent_tank) - ..() - if(check_tank_exists(parent_tank, usr, src)) - tank = parent_tank - reagents = tank.reagents //This mister is really just a proxy for the tank's reagents - return - -/obj/item/weapon/reagent_containers/spray/mister/dropped(mob/user as mob) - user << "The mister snaps back onto the watertank!" - tank.on = 0 - qdel(src) - -/obj/item/weapon/reagent_containers/spray/mister/attack_self() - return - -/proc/check_tank_exists(parent_tank, var/mob/living/carbon/human/M, var/obj/O) - if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank) || !M || !istype(M)) //To avoid weird issues from admin spawns - M.unEquip(O) - qdel(O) - return 0 - else - return 1 - -//Janitor tank -/obj/item/weapon/watertank/janitor - name = "backpack water tank" - desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti." - icon_state = "waterbackpackjani" - item_state = "waterbackpackjani" - -/obj/item/weapon/watertank/janitor/New() - ..() - reagents.add_reagent("cleaner", 250) - - -/obj/item/weapon/reagent_containers/spray/mister/janitor - name = "janitor spray nozzle" - desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes." - icon = 'icons/obj/hydroponics.dmi' - icon_state = "misterjani" - item_state = "misterjani" - amount_per_transfer_from_this = 5 - possible_transfer_amounts = null - -/obj/item/weapon/watertank/janitor/make_noz() - noz = new /obj/item/weapon/reagent_containers/spray/mister/janitor(src) - return - -/obj/item/weapon/reagent_containers/spray/mister/janitor/attack_self(var/mob/user) - amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) - user << "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray." - -//Atmos tank -/obj/item/weapon/watertank/atmos - name = "backpack water tank" - desc = "A backpack watertank with fire extinguisher nozzle, intended to fight fires. Shouldn't toxins have one of these?" - icon_state = "waterbackpackatmos" - item_state = "waterbackpackatmos" - volume = 100 - -/obj/item/weapon/watertank/atmos/make_noz() - noz = new /obj/item/weapon/extinguisher/mini/nozzle(src) - -/obj/item/weapon/extinguisher/mini/nozzle - name = "fire extinguisher nozzle" - desc = "A fire extinguisher nozzle attached to a water tank." - icon = 'icons/obj/hydroponics.dmi' - icon_state = "misteratmos" - item_state = "misteratmos" - safety = 0 - var/obj/item/weapon/watertank/tank - -/obj/item/weapon/extinguisher/mini/nozzle/New(parent_tank) - if(check_tank_exists(parent_tank, usr, src)) - tank = parent_tank - reagents = tank.reagents - max_water = tank.volume - return - -/obj/item/weapon/extinguisher/mini/nozzle/dropped(mob/user as mob) - user << "The nozzle snaps back onto the watertank!" - tank.on = 0 - qdel(src) - -/obj/item/weapon/extinguisher/mini/nozzle/attack_self() +//Hydroponics tank and base code +/obj/item/weapon/watertank + name = "backpack water tank" + desc = "A S.U.N.S.H.I.N.E. brand watertank backpack with nozzle to water plants." + icon = 'icons/obj/hydroponics.dmi' + icon_state = "waterbackpack" + item_state = "waterbackpack" + w_class = 4.0 + slot_flags = SLOT_BACK + slowdown = 1 + action_button_name = "Toggle Mister" + + var/obj/item/weapon/noz + var/on = 0 + var/volume = 500 + +/obj/item/weapon/watertank/New() + ..() + create_reagents(volume) + return + +/obj/item/weapon/watertank/examine() + set src in usr + ..() + for(var/datum/reagent/R in reagents.reagent_list) + usr << "[round(R.volume)] units of [R.name] left." + return + +/obj/item/weapon/watertank/ui_action_click() + if (usr.get_item_by_slot(slot_back) == src) + toggle_mister() + else + usr << "The watertank needs to be on your back to use!" + return + +/obj/item/weapon/watertank/verb/toggle_mister() + set name = "Toggle Mister" + set category = "Object" + on = !on + + var/mob/living/carbon/human/user = usr + if(on) + //Detach the nozzle into the user's hands + make_noz() + var/list/L = list("left hand" = slot_l_hand,"right hand" = slot_r_hand) + if(!user.equip_in_one_of_slots(noz, L)) + on = 0 + user << "You need a free hand to hold the mister!" + else + //Remove from their hands and put back "into" the tank + remove_noz(user) + return + +/obj/item/weapon/watertank/proc/make_noz() + noz = new /obj/item/weapon/reagent_containers/spray/mister(src) + return + +/obj/item/weapon/watertank/equipped(mob/user, slot) + if (slot != slot_back) + remove_noz(user) + +/obj/item/weapon/watertank/proc/remove_noz(mob/user) + if (noz != null) + var/mob/living/carbon/human/M = user + M.unEquip(noz) + return + +/obj/item/weapon/watertank/Destroy() + if (noz) + var/M = get(noz, /mob) + remove_noz(M) + ..() + return + +// This mister item is intended as an extension of the watertank and always attached to it. +// Therefore, it's designed to be "locked" to the player's hands or extended back onto +// the watertank backpack. Allowing it to be placed elsewhere or created without a parent +// watertank object will likely lead to weird behaviour or runtimes. +/obj/item/weapon/reagent_containers/spray/mister + name = "water mister" + desc = "A mister nozzle attached to a water tank." + icon = 'icons/obj/hydroponics.dmi' + icon_state = "mister" + item_state = "mister" + w_class = 4.0 + amount_per_transfer_from_this = 50 + possible_transfer_amounts = list(25,50,100) + volume = 500 + + var/obj/item/weapon/watertank/tank + +/obj/item/weapon/reagent_containers/spray/mister/New(parent_tank) + ..() + if(check_tank_exists(parent_tank, usr, src)) + tank = parent_tank + reagents = tank.reagents //This mister is really just a proxy for the tank's reagents + return + +/obj/item/weapon/reagent_containers/spray/mister/dropped(mob/user as mob) + user << "The mister snaps back onto the watertank!" + tank.on = 0 + qdel(src) + +/obj/item/weapon/reagent_containers/spray/mister/attack_self() + return + +/proc/check_tank_exists(parent_tank, var/mob/living/carbon/human/M, var/obj/O) + if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank) || !M || !istype(M)) //To avoid weird issues from admin spawns + M.unEquip(O) + qdel(O) + return 0 + else + return 1 + +//Janitor tank +/obj/item/weapon/watertank/janitor + name = "backpack water tank" + desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti." + icon_state = "waterbackpackjani" + item_state = "waterbackpackjani" + +/obj/item/weapon/watertank/janitor/New() + ..() + reagents.add_reagent("cleaner", 250) + + +/obj/item/weapon/reagent_containers/spray/mister/janitor + name = "janitor spray nozzle" + desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes." + icon = 'icons/obj/hydroponics.dmi' + icon_state = "misterjani" + item_state = "misterjani" + amount_per_transfer_from_this = 5 + possible_transfer_amounts = null + +/obj/item/weapon/watertank/janitor/make_noz() + noz = new /obj/item/weapon/reagent_containers/spray/mister/janitor(src) + return + +/obj/item/weapon/reagent_containers/spray/mister/janitor/attack_self(var/mob/user) + amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) + user << "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray." + +//Atmos tank +/obj/item/weapon/watertank/atmos + name = "backpack water tank" + desc = "A backpack watertank with fire extinguisher nozzle, intended to fight fires. Shouldn't toxins have one of these?" + icon_state = "waterbackpackatmos" + item_state = "waterbackpackatmos" + volume = 100 + +/obj/item/weapon/watertank/atmos/make_noz() + noz = new /obj/item/weapon/extinguisher/mini/nozzle(src) + +/obj/item/weapon/extinguisher/mini/nozzle + name = "fire extinguisher nozzle" + desc = "A fire extinguisher nozzle attached to a water tank." + icon = 'icons/obj/hydroponics.dmi' + icon_state = "misteratmos" + item_state = "misteratmos" + safety = 0 + var/obj/item/weapon/watertank/tank + +/obj/item/weapon/extinguisher/mini/nozzle/New(parent_tank) + if(check_tank_exists(parent_tank, usr, src)) + tank = parent_tank + reagents = tank.reagents + max_water = tank.volume + return + +/obj/item/weapon/extinguisher/mini/nozzle/dropped(mob/user as mob) + user << "The nozzle snaps back onto the watertank!" + tank.on = 0 + qdel(src) + +/obj/item/weapon/extinguisher/mini/nozzle/attack_self() return \ No newline at end of file diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm index 4e64b78611c..b78713e389f 100644 --- a/code/game/objects/items/weapons/vending_items.dm +++ b/code/game/objects/items/weapons/vending_items.dm @@ -1,60 +1,60 @@ -/obj/item/weapon/vending_refill - name = "resupply canister" - var/machine_name = "Generic" - - icon = 'icons/obj/vending_restock.dmi' - icon_state = "refill_snack" - item_state = "restock_unit" - flags = CONDUCT - force = 7.0 - throwforce = 10.0 - throw_speed = 1 - throw_range = 7 - w_class = 4.0 - - var/charges = 0 //how many restocking "charges" the refill has - -/obj/item/weapon/vending_refill/New(amt = -1) - ..() - name = "\improper [machine_name] restocking unit" - if(isnum(amt) && amt > -1) - charges = amt - -/obj/item/weapon/vending_refill/examine() - set src in usr - ..() - if(charges) - usr << "It can restock [charges] item(s)." - else - usr << "It's empty!" - -//NOTE I decided to go for about 1/3 of a machine's capacity - -/obj/item/weapon/vending_refill/boozeomat - machine_name = "Booze-O-Mat" - icon_state = "refill_booze" - charges = 46//of 138 - -/obj/item/weapon/vending_refill/coffee - machine_name = "hot drinks" - icon_state = "refill_joe" - charges = 28//of 85 - -/obj/item/weapon/vending_refill/snack - machine_name = "Getmore Chocolate Corp" - charges = 16//of 48 - -/obj/item/weapon/vending_refill/cola - machine_name = "Robust Softdrinks" - icon_state = "refill_cola" - charges = 21//of 65 - -/obj/item/weapon/vending_refill/cigarette - machine_name = "cigarette" - icon_state = "refill_smoke" - charges = 9// of 29 - -/obj/item/weapon/vending_refill/autodrobe - machine_name = "AutoDrobe" - icon_state = "refill_costume" - charges = 19// of 58 +/obj/item/weapon/vending_refill + name = "resupply canister" + var/machine_name = "Generic" + + icon = 'icons/obj/vending_restock.dmi' + icon_state = "refill_snack" + item_state = "restock_unit" + flags = CONDUCT + force = 7.0 + throwforce = 10.0 + throw_speed = 1 + throw_range = 7 + w_class = 4.0 + + var/charges = 0 //how many restocking "charges" the refill has + +/obj/item/weapon/vending_refill/New(amt = -1) + ..() + name = "\improper [machine_name] restocking unit" + if(isnum(amt) && amt > -1) + charges = amt + +/obj/item/weapon/vending_refill/examine() + set src in usr + ..() + if(charges) + usr << "It can restock [charges] item(s)." + else + usr << "It's empty!" + +//NOTE I decided to go for about 1/3 of a machine's capacity + +/obj/item/weapon/vending_refill/boozeomat + machine_name = "Booze-O-Mat" + icon_state = "refill_booze" + charges = 46//of 138 + +/obj/item/weapon/vending_refill/coffee + machine_name = "hot drinks" + icon_state = "refill_joe" + charges = 28//of 85 + +/obj/item/weapon/vending_refill/snack + machine_name = "Getmore Chocolate Corp" + charges = 16//of 48 + +/obj/item/weapon/vending_refill/cola + machine_name = "Robust Softdrinks" + icon_state = "refill_cola" + charges = 21//of 65 + +/obj/item/weapon/vending_refill/cigarette + machine_name = "cigarette" + icon_state = "refill_smoke" + charges = 9// of 29 + +/obj/item/weapon/vending_refill/autodrobe + machine_name = "AutoDrobe" + icon_state = "refill_costume" + charges = 19// of 58 diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm index fbc9650ecb4..5f0e04a3325 100644 --- a/code/game/objects/structures/crates_lockers/bins.dm +++ b/code/game/objects/structures/crates_lockers/bins.dm @@ -1,95 +1,95 @@ -/obj/structure/closet/crate/bin - desc = "A trash bin, place your trash here for the janitor to collect." - name = "trash bin" - icon = 'icons/obj/storage.dmi' - icon_state = "largebins" - density = 1 - anchored = 1 - icon_opened = "largebinsopen" - icon_closed = "largebins" - sound_effect_open = 'sound/effects/bin_open.ogg' - sound_effect_close = 'sound/effects/bin_close.ogg' - var/animation = "animate_largebins" - var/redlight = "largebinr" - var/greenlight = "largebing" - var/orangelight = "largebino" - - -/obj/structure/closet/crate/bin/New() - ..() - update_icon() - -/obj/structure/closet/crate/bin/update_icon() - ..() - overlays.Cut() - if(contents.len == 0) - overlays += greenlight - else if(contents.len >= storage_capacity) - overlays += redlight - else - overlays += orangelight - -/obj/structure/closet/crate/bin/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/storage/bag/trash)) - var/obj/item/weapon/storage/bag/trash/T = W - user << "\blue You fill the bag." - for(var/obj/item/O in src) - if(T.can_be_inserted(O, 1)) - O.loc = T - T.update_icon() - do_animate() - else if(istype(W, /obj/item/weapon/wrench)) - anchored = !anchored - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - else if(istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet - else - ..() - -/obj/structure/closet/crate/bin/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - . = ..(O, user, 0, 0, 0) - if(.) - if(O != user) - user.visible_message("[user] tries to stuff [O] into the [src].", \ - "You try to stuff [O] into the [src].", \ - "You hear clanging.") - if (!do_after(user, 40)) - return - if(!..(O, user, 0, 0)) - return - user.visible_message("[user] stuffs [O] into the [src].", \ - "You stuff [O] into the [src].", \ - "You hear a loud metal bang.") - insert(O, 1, !opened) - if(opened) - close() - -/obj/structure/closet/crate/bin/open() - . = ..() - update_icon() - -/obj/structure/closet/crate/bin/close() - . = ..() - update_icon() - -/obj/structure/closet/crate/bin/proc/do_animate() - playsound(src.loc, sound_effect_open, 15, 1, -3) - flick(animation, src) - spawn(13) - playsound(src.loc, sound_effect_close, 15, 1, -3) - update_icon() - -/obj/structure/closet/crate/bin/insert(var/obj/item/I, var/include_mobs = 0, var/animate = 0) - . = ..(I, include_mobs) - if(animate && .) - do_animate() - -/obj/structure/closet/crate/bin/place(var/mob/user, var/obj/item/I) - if(contents.len >= storage_capacity) - return 1 - if(!opened) - user.drop_item() - insert(I, 0, 1) - return 1 +/obj/structure/closet/crate/bin + desc = "A trash bin, place your trash here for the janitor to collect." + name = "trash bin" + icon = 'icons/obj/storage.dmi' + icon_state = "largebins" + density = 1 + anchored = 1 + icon_opened = "largebinsopen" + icon_closed = "largebins" + sound_effect_open = 'sound/effects/bin_open.ogg' + sound_effect_close = 'sound/effects/bin_close.ogg' + var/animation = "animate_largebins" + var/redlight = "largebinr" + var/greenlight = "largebing" + var/orangelight = "largebino" + + +/obj/structure/closet/crate/bin/New() + ..() + update_icon() + +/obj/structure/closet/crate/bin/update_icon() + ..() + overlays.Cut() + if(contents.len == 0) + overlays += greenlight + else if(contents.len >= storage_capacity) + overlays += redlight + else + overlays += orangelight + +/obj/structure/closet/crate/bin/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/storage/bag/trash)) + var/obj/item/weapon/storage/bag/trash/T = W + user << "\blue You fill the bag." + for(var/obj/item/O in src) + if(T.can_be_inserted(O, 1)) + O.loc = T + T.update_icon() + do_animate() + else if(istype(W, /obj/item/weapon/wrench)) + anchored = !anchored + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + else if(istype(W, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = W + src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet + else + ..() + +/obj/structure/closet/crate/bin/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) + . = ..(O, user, 0, 0, 0) + if(.) + if(O != user) + user.visible_message("[user] tries to stuff [O] into the [src].", \ + "You try to stuff [O] into the [src].", \ + "You hear clanging.") + if (!do_after(user, 40)) + return + if(!..(O, user, 0, 0)) + return + user.visible_message("[user] stuffs [O] into the [src].", \ + "You stuff [O] into the [src].", \ + "You hear a loud metal bang.") + insert(O, 1, !opened) + if(opened) + close() + +/obj/structure/closet/crate/bin/open() + . = ..() + update_icon() + +/obj/structure/closet/crate/bin/close() + . = ..() + update_icon() + +/obj/structure/closet/crate/bin/proc/do_animate() + playsound(src.loc, sound_effect_open, 15, 1, -3) + flick(animation, src) + spawn(13) + playsound(src.loc, sound_effect_close, 15, 1, -3) + update_icon() + +/obj/structure/closet/crate/bin/insert(var/obj/item/I, var/include_mobs = 0, var/animate = 0) + . = ..(I, include_mobs) + if(animate && .) + do_animate() + +/obj/structure/closet/crate/bin/place(var/mob/user, var/obj/item/I) + if(contents.len >= storage_capacity) + return 1 + if(!opened) + user.drop_item() + insert(I, 0, 1) + return 1 return 0 \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 234404a2249..804128ab015 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -1,152 +1,152 @@ -/obj/structure/closet/statue - name = "statue" - desc = "An incredibly lifelike marble carving" - icon = 'icons/obj/statue.dmi' - icon_state = "human_male" - density = 1 - anchored = 1 - health = 0 //destroying the statue kills the mob within - var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock - var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils. - var/intialBrute = 0 - var/intialOxy = 0 - var/timer = 240 //eventually the person will be freed - -/obj/structure/closet/statue/New(loc, var/mob/living/L) - - if(ishuman(L) || ismonkey(L) || iscorgi(L)) - if(L.buckled) - L.buckled = 0 - L.anchored = 0 - if(L.client) - L.client.perspective = EYE_PERSPECTIVE - L.client.eye = src - L.loc = src - L.sdisabilities += MUTE - health = L.health + 100 //stoning damaged mobs will result in easier to shatter statues - intialTox = L.getToxLoss() - intialFire = L.getFireLoss() - intialBrute = L.getBruteLoss() - intialOxy = L.getOxyLoss() - if(ishuman(L)) - name = "statue of [L.name]" - if(L.gender == "female") - icon_state = "human_female" - else if(ismonkey(L)) - name = "statue of a monkey" - icon_state = "monkey" - else if(iscorgi(L)) - name = "statue of a corgi" - icon_state = "corgi" - desc = "If it takes forever, I will wait for you..." - - if(health == 0) //meaning if the statue didn't find a valid target - qdel(src) - return - - processing_objects.Add(src) - ..() - -/obj/structure/closet/statue/process() - timer-- - for(var/mob/living/M in src) //Go-go gadget stasis field - M.setToxLoss(intialTox) - M.adjustFireLoss(intialFire - M.getFireLoss()) - M.adjustBruteLoss(intialBrute - M.getBruteLoss()) - M.setOxyLoss(intialOxy) - if (timer <= 0) - dump_contents() - processing_objects.Remove(src) - qdel(src) - -/obj/structure/closet/statue/dump_contents() - - for(var/obj/O in src) - O.loc = src.loc - - for(var/mob/living/M in src) - M.loc = src.loc - M.sdisabilities -= MUTE - M.take_overall_damage((M.health - health - 100),0) //any new damage the statue incurred is transfered to the mob - if(M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - -/obj/structure/closet/statue/take_contents() - return - -/obj/structure/closet/statue/open() - return - -/obj/structure/closet/statue/take_contents() - return - -/obj/structure/closet/statue/open() - return - -/obj/structure/closet/statue/insert() - return - -/obj/structure/closet/statue/close() - return - -/obj/structure/closet/statue/toggle() - return - -/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj) - health -= Proj.damage - if(health <= 0) - for(var/mob/M in src) - shatter(M) - - return - -/obj/structure/closet/statue/attack_animal(mob/living/simple_animal/user as mob) - if(user.environment_smash) - for(var/mob/M in src) - shatter(M) - -/obj/structure/closet/statue/blob_act() - for(var/mob/M in src) - shatter(M) - -/obj/structure/closet/statue/meteorhit(obj/O as obj) - if(O.icon_state == "flaming") - for(var/mob/M in src) - M.meteorhit(O) - shatter(M) - -/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob) - health -= I.force - visible_message("\red [user] strikes [src] with [I].") - if(health <= 0) - for(var/mob/M in src) - shatter(M) - -/obj/structure/closet/statue/place() - return - -/obj/structure/closet/statue/MouseDrop_T() - return - -/obj/structure/closet/statue/relaymove() - return - -/obj/structure/closet/statue/attack_hand() - return - -/obj/structure/closet/statue/verb_toggleopen() - return - -/obj/structure/closet/statue/update_icon() - return - -/obj/structure/closet/statue/proc/shatter(mob/user as mob) - if (user) - user.dust() - dump_contents() - visible_message("\red [src] shatters!. ") - qdel(src) - -/obj/structure/closet/statue/container_resist() - return +/obj/structure/closet/statue + name = "statue" + desc = "An incredibly lifelike marble carving" + icon = 'icons/obj/statue.dmi' + icon_state = "human_male" + density = 1 + anchored = 1 + health = 0 //destroying the statue kills the mob within + var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock + var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils. + var/intialBrute = 0 + var/intialOxy = 0 + var/timer = 240 //eventually the person will be freed + +/obj/structure/closet/statue/New(loc, var/mob/living/L) + + if(ishuman(L) || ismonkey(L) || iscorgi(L)) + if(L.buckled) + L.buckled = 0 + L.anchored = 0 + if(L.client) + L.client.perspective = EYE_PERSPECTIVE + L.client.eye = src + L.loc = src + L.sdisabilities += MUTE + health = L.health + 100 //stoning damaged mobs will result in easier to shatter statues + intialTox = L.getToxLoss() + intialFire = L.getFireLoss() + intialBrute = L.getBruteLoss() + intialOxy = L.getOxyLoss() + if(ishuman(L)) + name = "statue of [L.name]" + if(L.gender == "female") + icon_state = "human_female" + else if(ismonkey(L)) + name = "statue of a monkey" + icon_state = "monkey" + else if(iscorgi(L)) + name = "statue of a corgi" + icon_state = "corgi" + desc = "If it takes forever, I will wait for you..." + + if(health == 0) //meaning if the statue didn't find a valid target + qdel(src) + return + + processing_objects.Add(src) + ..() + +/obj/structure/closet/statue/process() + timer-- + for(var/mob/living/M in src) //Go-go gadget stasis field + M.setToxLoss(intialTox) + M.adjustFireLoss(intialFire - M.getFireLoss()) + M.adjustBruteLoss(intialBrute - M.getBruteLoss()) + M.setOxyLoss(intialOxy) + if (timer <= 0) + dump_contents() + processing_objects.Remove(src) + qdel(src) + +/obj/structure/closet/statue/dump_contents() + + for(var/obj/O in src) + O.loc = src.loc + + for(var/mob/living/M in src) + M.loc = src.loc + M.sdisabilities -= MUTE + M.take_overall_damage((M.health - health - 100),0) //any new damage the statue incurred is transfered to the mob + if(M.client) + M.client.eye = M.client.mob + M.client.perspective = MOB_PERSPECTIVE + +/obj/structure/closet/statue/take_contents() + return + +/obj/structure/closet/statue/open() + return + +/obj/structure/closet/statue/take_contents() + return + +/obj/structure/closet/statue/open() + return + +/obj/structure/closet/statue/insert() + return + +/obj/structure/closet/statue/close() + return + +/obj/structure/closet/statue/toggle() + return + +/obj/structure/closet/statue/bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage + if(health <= 0) + for(var/mob/M in src) + shatter(M) + + return + +/obj/structure/closet/statue/attack_animal(mob/living/simple_animal/user as mob) + if(user.environment_smash) + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/blob_act() + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/meteorhit(obj/O as obj) + if(O.icon_state == "flaming") + for(var/mob/M in src) + M.meteorhit(O) + shatter(M) + +/obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob) + health -= I.force + visible_message("\red [user] strikes [src] with [I].") + if(health <= 0) + for(var/mob/M in src) + shatter(M) + +/obj/structure/closet/statue/place() + return + +/obj/structure/closet/statue/MouseDrop_T() + return + +/obj/structure/closet/statue/relaymove() + return + +/obj/structure/closet/statue/attack_hand() + return + +/obj/structure/closet/statue/verb_toggleopen() + return + +/obj/structure/closet/statue/update_icon() + return + +/obj/structure/closet/statue/proc/shatter(mob/user as mob) + if (user) + user.dust() + dump_contents() + visible_message("\red [src] shatters!. ") + qdel(src) + +/obj/structure/closet/statue/container_resist() + return diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 5daadc94866..3029dae5487 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -1,22 +1,22 @@ -/obj/structure/dresser - name = "dresser" - desc = "A nicely-crafted wooden dresser. It's filled with lots of undies." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "dresser" - density = 1 - anchored = 1 - -/obj/structure/dresser/attack_hand(mob/user as mob) - if(!Adjacent(user))//no tele-grooming - return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - - var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_all - if(!Adjacent(user))//no tele-grooming - return - if(new_undies) - H.underwear = new_undies - - add_fingerprint(H) +/obj/structure/dresser + name = "dresser" + desc = "A nicely-crafted wooden dresser. It's filled with lots of undies." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "dresser" + density = 1 + anchored = 1 + +/obj/structure/dresser/attack_hand(mob/user as mob) + if(!Adjacent(user))//no tele-grooming + return + if(ishuman(user)) + var/mob/living/carbon/human/H = user + + var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_all + if(!Adjacent(user))//no tele-grooming + return + if(new_undies) + H.underwear = new_undies + + add_fingerprint(H) H.update_body() \ No newline at end of file diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 39669dae1c8..42db1ee0757 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -1,658 +1,658 @@ - -// Basic transit tubes. Straight pieces, curved sections, -// and basic splits/joins (no routing logic). -// Mappers: you can use "Generate Instances from Icon-states" -// to get the different pieces. -/obj/structure/transit_tube - icon = 'icons/obj/pipes/transit_tube.dmi' - icon_state = "E-W" - density = 1 - layer = 3.1 - anchored = 1.0 - var/list/tube_dirs = null - var/exit_delay = 2 - var/enter_delay = 1 - - // alldirs in global.dm is the same list of directions, but since - // the specific order matters to get a usable icon_state, it is - // copied here so that, in the unlikely case that alldirs is changed, - // this continues to work. - var/global/list/tube_dir_list = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - - -// A place where tube pods stop, and people can get in or out. -// Mappers: use "Generate Instances from Directions" for this -// one. -/obj/structure/transit_tube/station - name = "station tube station" - icon = 'icons/obj/pipes/transit_tube_station.dmi' - icon_state = "closed" - exit_delay = 2 - enter_delay = 3 - var/pod_moving = 0 - var/automatic_launch_time = 100 - var/cooldown_delay = 30 - var/launch_cooldown = 0 - var/reverse_launch = 0 - - var/const/OPEN_DURATION = 6 - var/const/CLOSE_DURATION = 6 - -// Stations which will send the tube in the opposite direction after their stop. -/obj/structure/transit_tube/station/reverse - reverse_launch = 1 - - - -/obj/structure/transit_tube_pod - icon = 'icons/obj/pipes/transit_tube_pod.dmi' - icon_state = "pod" - animate_movement = FORWARD_STEPS - anchored = 1.0 - density = 1 - var/moving = 0 - var/datum/gas_mixture/air_contents = new() - - - -/obj/structure/transit_tube_pod/Destroy() - for(var/atom/movable/AM in contents) - AM.loc = loc - - ..() - - - -// When destroyed by explosions, properly handle contents. -obj/structure/ex_act(severity) - switch(severity) - if(1.0) - for(var/atom/movable/AM in contents) - AM.loc = loc - AM.ex_act(severity++) - - qdel(src) - return - if(2.0) - if(prob(50)) - for(var/atom/movable/AM in contents) - AM.loc = loc - AM.ex_act(severity++) - - qdel(src) - return - if(3.0) - return - - - -/obj/structure/transit_tube_pod/New(loc) - ..(loc) - - air_contents.oxygen = MOLES_O2STANDARD * 2 - air_contents.nitrogen = MOLES_N2STANDARD - air_contents.temperature = T20C - - // Give auto tubes time to align before trying to start moving - spawn(5) - follow_tube() - - - -/obj/structure/transit_tube/New(loc) - ..(loc) - - if(tube_dirs == null) - init_dirs() - - - -/obj/structure/transit_tube/station/New(loc) - ..(loc) - - - -/obj/structure/transit_tube/station/Bumped(mob/AM as mob|obj) - if(!pod_moving && icon_state == "open" && istype(AM, /mob)) - for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) - AM.loc = pod - return - - - -/obj/structure/transit_tube/station/attack_hand(mob/user as mob) - if(!pod_moving) - for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) - if(icon_state == "closed") - open_animation() - - else if(icon_state == "open") - if(pod.contents.len && user.loc != pod) - user.visible_message("[user] starts emptying [pod]'s contents onto the floor!") - if(do_after(user, 40)) //So it doesn't default to close_animation() on fail - if(pod.loc == loc) - for(var/atom/movable/AM in pod) - AM.loc = get_turf(user) - if(ismob(AM)) - var/mob/M = AM - M.Weaken(5) - - else - close_animation() - break - - -/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/grab) && icon_state == "open") - var/obj/item/weapon/grab/G = W - if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) - var/mob/GM = G.affecting - for(var/obj/structure/transit_tube_pod/pod in loc) - pod.visible_message("[user] starts putting [GM] into the [pod]!") - if(do_after(user, 60) && GM && G && G.affecting == GM) - GM.Weaken(5) - src.Bumped(GM) - qdel(G) - break - -/obj/structure/transit_tube/station/proc/open_animation() - if(icon_state == "closed") - icon_state = "opening" - spawn(OPEN_DURATION) - if(icon_state == "opening") - icon_state = "open" - - - -/obj/structure/transit_tube/station/proc/close_animation() - if(icon_state == "open") - icon_state = "closing" - spawn(CLOSE_DURATION) - if(icon_state == "closing") - icon_state = "closed" - - - -/obj/structure/transit_tube/station/proc/launch_pod() - for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && turn(pod.dir, (reverse_launch ? 180 : 0)) in directions()) - spawn(5) - pod_moving = 1 - close_animation() - sleep(CLOSE_DURATION + 2) - if(icon_state == "closed" && pod && launch_cooldown < world.time) - pod.follow_tube(reverse_launch) - - pod_moving = 0 - - return - - - -// Called to check if a pod should stop upon entering this tube. -/obj/structure/transit_tube/proc/should_stop_pod(pod, from_dir) - return 0 - - - -/obj/structure/transit_tube/station/should_stop_pod(pod, from_dir) - return 1 - - - -// Called when a pod stops in this tube section. -/obj/structure/transit_tube/proc/pod_stopped(pod, from_dir) - return - - - -/obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) - pod_moving = 1 - spawn(5) - launch_cooldown = world.time + min(cooldown_delay, automatic_launch_time) - open_animation() - sleep(OPEN_DURATION + 2) - pod_moving = 0 - pod.mix_air() - - if(automatic_launch_time) - var/const/wait_step = 5 - var/i = 0 - while(i < automatic_launch_time) - sleep(wait_step) - i += wait_step - - if(pod_moving || icon_state != "open") - return - - launch_pod() - - - -// Returns a /list of directions this tube section can connect to. -// Tubes that have some sort of logic or changing direction might -// override it with additional logic. -/obj/structure/transit_tube/proc/directions() - return tube_dirs - - - -/obj/structure/transit_tube/proc/has_entrance(from_dir) - from_dir = turn(from_dir, 180) - - for(var/direction in directions()) - if(direction == from_dir) - return 1 - - return 0 - - - -/obj/structure/transit_tube/proc/has_exit(in_dir) - for(var/direction in directions()) - if(direction == in_dir) - return 1 - - return 0 - - - -// Searches for an exit direction within 45 degrees of the -// specified dir. Returns that direction, or 0 if none match. -/obj/structure/transit_tube/proc/get_exit(in_dir) - var/near_dir = 0 - var/in_dir_cw = turn(in_dir, -45) - var/in_dir_ccw = turn(in_dir, 45) - - for(var/direction in directions()) - if(direction == in_dir) - return direction - - else if(direction == in_dir_cw) - near_dir = direction - - else if(direction == in_dir_ccw) - near_dir = direction - - return near_dir - - - -// Return how many BYOND ticks to wait before entering/exiting -// the tube section. Default action is to return the value of -// a var, which wouldn't need a proc, but it makes it possible -// for later tube types to interact in more interesting ways -// such as being very fast in one direction, but slow in others -/obj/structure/transit_tube/proc/exit_delay(pod, to_dir) - return exit_delay - -/obj/structure/transit_tube/proc/enter_delay(pod, to_dir) - return enter_delay - - - -/obj/structure/transit_tube_pod/proc/follow_tube(var/reverse_launch) - if(moving) - return - - moving = 1 - - spawn() - var/obj/structure/transit_tube/current_tube = null - var/next_dir - var/next_loc - var/last_delay = 0 - var/exit_delay - - if(reverse_launch) - dir = turn(dir, 180) // Back it up - - for(var/obj/structure/transit_tube/tube in loc) - if(tube.has_exit(dir)) - current_tube = tube - break - - while(current_tube) - next_dir = current_tube.get_exit(dir) - - if(!next_dir) - break - - exit_delay = current_tube.exit_delay(src, dir) - last_delay += exit_delay - - sleep(exit_delay) - - next_loc = get_step(loc, next_dir) - - current_tube = null - for(var/obj/structure/transit_tube/tube in next_loc) - if(tube.has_entrance(next_dir)) - current_tube = tube - break - - if(current_tube == null) - dir = next_dir - Move(get_step(loc, dir)) // Allow collisions when leaving the tubes. - break - - last_delay = current_tube.enter_delay(src, next_dir) - sleep(last_delay) - dir = next_dir - loc = next_loc // When moving from one tube to another, skip collision and such. - density = current_tube.density - - if(current_tube && current_tube.should_stop_pod(src, next_dir)) - current_tube.pod_stopped(src, dir) - break - - density = 1 - - // If the pod is no longer in a tube, move in a line until stopped or slowed to a halt. - // /turf/inertial_drift appears to only work on mobs, and re-implementing some of the - // logic allows a gradual slowdown and eventual stop when passing over non-space turfs. - if(!current_tube && last_delay <= 10) - do - sleep(last_delay) - - if(!istype(loc, /turf/space)) - last_delay++ - - if(last_delay > 10) - break - - while(isturf(loc) && Move(get_step(loc, dir))) - - moving = 0 - - -// Should I return a copy here? If the caller edits or del()s the returned -// datum, there might be problems if I don't... -/obj/structure/transit_tube_pod/return_air() - var/datum/gas_mixture/GM = new() - GM.oxygen = air_contents.oxygen - GM.carbon_dioxide = air_contents.carbon_dioxide - GM.nitrogen = air_contents.nitrogen - GM.toxins = air_contents.toxins - GM.temperature = air_contents.temperature - return GM - -// For now, copying what I found in an unused FEA file (and almost identical in a -// used ZAS file). Means that assume_air and remove_air don't actually alter the -// air contents. -/obj/structure/transit_tube_pod/assume_air(datum/gas_mixture/giver) - return air_contents.merge(giver) - -/obj/structure/transit_tube_pod/remove_air(amount) - return air_contents.remove(amount) - - - -// Called when a pod arrives at, and before a pod departs from a station, -// giving it a chance to mix its internal air supply with the turf it is -// currently on. -/obj/structure/transit_tube_pod/proc/mix_air() - var/datum/gas_mixture/environment = loc.return_air() - var/env_pressure = environment.return_pressure() - var/int_pressure = air_contents.return_pressure() - var/total_pressure = env_pressure + int_pressure - - if(total_pressure == 0) - return - - // Math here: Completely made up, not based on realistic equasions. - // Goal is to balance towards equal pressure, but ensure some gas - // transfer in both directions regardless. - // Feel free to rip this out and replace it with something better, - // I don't really know muhch about how gas transfer rates work in - // SS13. - var/transfer_in = max(0.1, 0.5 * (env_pressure - int_pressure) / total_pressure) - var/transfer_out = max(0.1, 0.3 * (int_pressure - env_pressure) / total_pressure) - - var/datum/gas_mixture/from_env = loc.remove_air(environment.total_moles() * transfer_in) - var/datum/gas_mixture/from_int = air_contents.remove(air_contents.total_moles() * transfer_out) - - loc.assume_air(from_int) - air_contents.merge(from_env) - - - -// When the player moves, check if the pos is currently stopped at a station. -// if it is, check the direction. If the direction matches the direction of -// the station, try to exit. If the direction matches one of the station's -// tube directions, launch the pod in that direction. -/obj/structure/transit_tube_pod/relaymove(mob/mob, direction) - if(istype(mob, /mob) && mob.client) - // If the pod is not in a tube at all, you can get out at any time. - if(!(locate(/obj/structure/transit_tube) in loc)) - mob.loc = loc - mob.client.Move(get_step(loc, direction), direction) - mob.reset_view(null) - - //if(moving && istype(loc, /turf/space)) - // Todo: If you get out of a moving pod in space, you should move as well. - // Same direction as pod? Direcion you moved? Halfway between? - - if(!moving) - for(var/obj/structure/transit_tube/station/station in loc) - if(dir in station.directions()) - if(!station.pod_moving) - if(direction == station.dir) - if(station.icon_state == "open") - mob.loc = loc - mob.client.Move(get_step(loc, direction), direction) - mob.reset_view(null) - - else - station.open_animation() - - else if(direction in station.directions()) - dir = direction - station.launch_pod() - return - - for(var/obj/structure/transit_tube/tube in loc) - if(dir in tube.directions()) - if(tube.has_exit(direction)) - dir = direction - return - - -// Parse the icon_state into a list of directions. -// This means that mappers can use Dream Maker's built in -// "Generate Instances from Icon-states" option to get all -// variations. Additionally, as a separate proc, sub-types -// can handle it more intelligently. -/obj/structure/transit_tube/proc/init_dirs() - if(icon_state == "auto") - // Additional delay, for map loading. - spawn(1) - init_dirs_automatic() - - else - tube_dirs = parse_dirs(icon_state) - - if(copytext(icon_state, 1, 3) == "D-" || findtextEx(icon_state, "Pass")) - density = 0 - - - -// Tube station directions are simply 90 to either side of -// the exit. -/obj/structure/transit_tube/station/init_dirs() - tube_dirs = list(turn(dir, 90), turn(dir, -90)) - - - -// Initialize dirs by searching for tubes that do/might connect -// on nearby turfs. Create corner pieces if nessecary. -// Pick two directions, preferring tubes that already connect -// to loc, or other auto tubes if there aren't enough connections. -/obj/structure/transit_tube/proc/init_dirs_automatic() - var/list/connected = list() - var/list/connected_auto = list() - - for(var/direction in tube_dir_list) - var/location = get_step(loc, direction) - for(var/obj/structure/transit_tube/tube in location) - if(tube.directions() == null && tube.icon_state == "auto") - connected_auto += direction - break - - else if(turn(direction, 180) in tube.directions()) - connected += direction - break - - connected += connected_auto - - tube_dirs = select_automatic_dirs(connected) - - if(length(tube_dirs) == 2 && tube_dir_list.Find(tube_dirs[1]) > tube_dir_list.Find(tube_dirs[2])) - tube_dirs.Swap(1, 2) - - generate_automatic_corners(tube_dirs) - select_automatic_icon_state(tube_dirs) - - - -// Given a list of directions, look a pair that forms a 180 or -// 135 degree angle, and return a list containing the pair. -// If none exist, return list(connected[1], turn(connected[1], 180) -/obj/structure/transit_tube/proc/select_automatic_dirs(connected) - if(length(connected) < 1) - return list() - - for(var/i = 1, i <= length(connected), i++) - for(var/j = i + 1, j <= length(connected), j++) - var/d1 = connected[i] - var/d2 = connected[j] - - if(d1 == turn(d2, 135) || d1 == turn(d2, 180) || d1 == turn(d2, 225)) - return list(d1, d2) - - return list(connected[1], turn(connected[1], 180)) - - - -/obj/structure/transit_tube/proc/select_automatic_icon_state(directions) - if(length(directions) == 2) - icon_state = "[dir2text_short(directions[1])]-[dir2text_short(directions[2])]" - - - -// Look for diagonal directions, generate the decorative corners in each. -/obj/structure/transit_tube/proc/generate_automatic_corners(directions) - for(var/direction in directions) - if(direction == 5 || direction == 6 || direction == 9 || direction == 10) - if(direction & NORTH) - create_automatic_decorative_corner(get_step(loc, NORTH), direction ^ 3) - - else - create_automatic_decorative_corner(get_step(loc, SOUTH), direction ^ 3) - - if(direction & EAST) - create_automatic_decorative_corner(get_step(loc, EAST), direction ^ 12) - - else - create_automatic_decorative_corner(get_step(loc, WEST), direction ^ 12) - - - -// Generate a corner, if one doesn't exist for the direction on the turf. -/obj/structure/transit_tube/proc/create_automatic_decorative_corner(location, direction) - var/state = "D-[dir2text_short(direction)]" - - for(var/obj/structure/transit_tube/tube in location) - if(tube.icon_state == state) - return - - var/obj/structure/transit_tube/tube = new(location) - tube.icon_state = state - tube.init_dirs() - - - -// Uses a list() to cache return values. Since they should -// never be edited directly, all tubes with a certain -// icon_state can just reference the same list. In theory, -// reduces memory usage, and improves CPU cache usage. -// In reality, I don't know if that is quite how BYOND works, -// but it is probably safer to assume the existence of, and -// rely on, a sufficiently smart compiler/optimizer. -/obj/structure/transit_tube/proc/parse_dirs(text) - var/global/list/direction_table = list() - - if(text in direction_table) - return direction_table[text] - - var/list/split_text = text2list(text, "-") - - // If the first token is D, the icon_state represents - // a purely decorative tube, and doesn't actually - // connect to anything. - if(split_text[1] == "D") - direction_table[text] = list() - return null - - var/list/directions = list() - - for(var/text_part in split_text) - var/direction = text2dir_extended(text_part) - - if(direction > 0) - directions += direction - - direction_table[text] = directions - return directions - - - -// A copy of text2dir, extended to accept one and two letter -// directions, and to clearly return 0 otherwise. -/obj/structure/transit_tube/proc/text2dir_extended(direction) - switch(uppertext(direction)) - if("NORTH", "N") - return 1 - if("SOUTH", "S") - return 2 - if("EAST", "E") - return 4 - if("WEST", "W") - return 8 - if("NORTHEAST", "NE") - return 5 - if("NORTHWEST", "NW") - return 9 - if("SOUTHEAST", "SE") - return 6 - if("SOUTHWEST", "SW") - return 10 - else - return 0 - - - -// A copy of dir2text, which returns the short one or two letter -// directions used in tube icon states. -/obj/structure/transit_tube/proc/dir2text_short(direction) - switch(direction) - if(1) - return "N" - if(2) - return "S" - if(4) - return "E" - if(8) - return "W" - if(5) - return "NE" - if(6) - return "SE" - if(9) - return "NW" - if(10) - return "SW" - else - return + +// Basic transit tubes. Straight pieces, curved sections, +// and basic splits/joins (no routing logic). +// Mappers: you can use "Generate Instances from Icon-states" +// to get the different pieces. +/obj/structure/transit_tube + icon = 'icons/obj/pipes/transit_tube.dmi' + icon_state = "E-W" + density = 1 + layer = 3.1 + anchored = 1.0 + var/list/tube_dirs = null + var/exit_delay = 2 + var/enter_delay = 1 + + // alldirs in global.dm is the same list of directions, but since + // the specific order matters to get a usable icon_state, it is + // copied here so that, in the unlikely case that alldirs is changed, + // this continues to work. + var/global/list/tube_dir_list = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) + + +// A place where tube pods stop, and people can get in or out. +// Mappers: use "Generate Instances from Directions" for this +// one. +/obj/structure/transit_tube/station + name = "station tube station" + icon = 'icons/obj/pipes/transit_tube_station.dmi' + icon_state = "closed" + exit_delay = 2 + enter_delay = 3 + var/pod_moving = 0 + var/automatic_launch_time = 100 + var/cooldown_delay = 30 + var/launch_cooldown = 0 + var/reverse_launch = 0 + + var/const/OPEN_DURATION = 6 + var/const/CLOSE_DURATION = 6 + +// Stations which will send the tube in the opposite direction after their stop. +/obj/structure/transit_tube/station/reverse + reverse_launch = 1 + + + +/obj/structure/transit_tube_pod + icon = 'icons/obj/pipes/transit_tube_pod.dmi' + icon_state = "pod" + animate_movement = FORWARD_STEPS + anchored = 1.0 + density = 1 + var/moving = 0 + var/datum/gas_mixture/air_contents = new() + + + +/obj/structure/transit_tube_pod/Destroy() + for(var/atom/movable/AM in contents) + AM.loc = loc + + ..() + + + +// When destroyed by explosions, properly handle contents. +obj/structure/ex_act(severity) + switch(severity) + if(1.0) + for(var/atom/movable/AM in contents) + AM.loc = loc + AM.ex_act(severity++) + + qdel(src) + return + if(2.0) + if(prob(50)) + for(var/atom/movable/AM in contents) + AM.loc = loc + AM.ex_act(severity++) + + qdel(src) + return + if(3.0) + return + + + +/obj/structure/transit_tube_pod/New(loc) + ..(loc) + + air_contents.oxygen = MOLES_O2STANDARD * 2 + air_contents.nitrogen = MOLES_N2STANDARD + air_contents.temperature = T20C + + // Give auto tubes time to align before trying to start moving + spawn(5) + follow_tube() + + + +/obj/structure/transit_tube/New(loc) + ..(loc) + + if(tube_dirs == null) + init_dirs() + + + +/obj/structure/transit_tube/station/New(loc) + ..(loc) + + + +/obj/structure/transit_tube/station/Bumped(mob/AM as mob|obj) + if(!pod_moving && icon_state == "open" && istype(AM, /mob)) + for(var/obj/structure/transit_tube_pod/pod in loc) + if(!pod.moving && pod.dir in directions()) + AM.loc = pod + return + + + +/obj/structure/transit_tube/station/attack_hand(mob/user as mob) + if(!pod_moving) + for(var/obj/structure/transit_tube_pod/pod in loc) + if(!pod.moving && pod.dir in directions()) + if(icon_state == "closed") + open_animation() + + else if(icon_state == "open") + if(pod.contents.len && user.loc != pod) + user.visible_message("[user] starts emptying [pod]'s contents onto the floor!") + if(do_after(user, 40)) //So it doesn't default to close_animation() on fail + if(pod.loc == loc) + for(var/atom/movable/AM in pod) + AM.loc = get_turf(user) + if(ismob(AM)) + var/mob/M = AM + M.Weaken(5) + + else + close_animation() + break + + +/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/grab) && icon_state == "open") + var/obj/item/weapon/grab/G = W + if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE) + var/mob/GM = G.affecting + for(var/obj/structure/transit_tube_pod/pod in loc) + pod.visible_message("[user] starts putting [GM] into the [pod]!") + if(do_after(user, 60) && GM && G && G.affecting == GM) + GM.Weaken(5) + src.Bumped(GM) + qdel(G) + break + +/obj/structure/transit_tube/station/proc/open_animation() + if(icon_state == "closed") + icon_state = "opening" + spawn(OPEN_DURATION) + if(icon_state == "opening") + icon_state = "open" + + + +/obj/structure/transit_tube/station/proc/close_animation() + if(icon_state == "open") + icon_state = "closing" + spawn(CLOSE_DURATION) + if(icon_state == "closing") + icon_state = "closed" + + + +/obj/structure/transit_tube/station/proc/launch_pod() + for(var/obj/structure/transit_tube_pod/pod in loc) + if(!pod.moving && turn(pod.dir, (reverse_launch ? 180 : 0)) in directions()) + spawn(5) + pod_moving = 1 + close_animation() + sleep(CLOSE_DURATION + 2) + if(icon_state == "closed" && pod && launch_cooldown < world.time) + pod.follow_tube(reverse_launch) + + pod_moving = 0 + + return + + + +// Called to check if a pod should stop upon entering this tube. +/obj/structure/transit_tube/proc/should_stop_pod(pod, from_dir) + return 0 + + + +/obj/structure/transit_tube/station/should_stop_pod(pod, from_dir) + return 1 + + + +// Called when a pod stops in this tube section. +/obj/structure/transit_tube/proc/pod_stopped(pod, from_dir) + return + + + +/obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) + pod_moving = 1 + spawn(5) + launch_cooldown = world.time + min(cooldown_delay, automatic_launch_time) + open_animation() + sleep(OPEN_DURATION + 2) + pod_moving = 0 + pod.mix_air() + + if(automatic_launch_time) + var/const/wait_step = 5 + var/i = 0 + while(i < automatic_launch_time) + sleep(wait_step) + i += wait_step + + if(pod_moving || icon_state != "open") + return + + launch_pod() + + + +// Returns a /list of directions this tube section can connect to. +// Tubes that have some sort of logic or changing direction might +// override it with additional logic. +/obj/structure/transit_tube/proc/directions() + return tube_dirs + + + +/obj/structure/transit_tube/proc/has_entrance(from_dir) + from_dir = turn(from_dir, 180) + + for(var/direction in directions()) + if(direction == from_dir) + return 1 + + return 0 + + + +/obj/structure/transit_tube/proc/has_exit(in_dir) + for(var/direction in directions()) + if(direction == in_dir) + return 1 + + return 0 + + + +// Searches for an exit direction within 45 degrees of the +// specified dir. Returns that direction, or 0 if none match. +/obj/structure/transit_tube/proc/get_exit(in_dir) + var/near_dir = 0 + var/in_dir_cw = turn(in_dir, -45) + var/in_dir_ccw = turn(in_dir, 45) + + for(var/direction in directions()) + if(direction == in_dir) + return direction + + else if(direction == in_dir_cw) + near_dir = direction + + else if(direction == in_dir_ccw) + near_dir = direction + + return near_dir + + + +// Return how many BYOND ticks to wait before entering/exiting +// the tube section. Default action is to return the value of +// a var, which wouldn't need a proc, but it makes it possible +// for later tube types to interact in more interesting ways +// such as being very fast in one direction, but slow in others +/obj/structure/transit_tube/proc/exit_delay(pod, to_dir) + return exit_delay + +/obj/structure/transit_tube/proc/enter_delay(pod, to_dir) + return enter_delay + + + +/obj/structure/transit_tube_pod/proc/follow_tube(var/reverse_launch) + if(moving) + return + + moving = 1 + + spawn() + var/obj/structure/transit_tube/current_tube = null + var/next_dir + var/next_loc + var/last_delay = 0 + var/exit_delay + + if(reverse_launch) + dir = turn(dir, 180) // Back it up + + for(var/obj/structure/transit_tube/tube in loc) + if(tube.has_exit(dir)) + current_tube = tube + break + + while(current_tube) + next_dir = current_tube.get_exit(dir) + + if(!next_dir) + break + + exit_delay = current_tube.exit_delay(src, dir) + last_delay += exit_delay + + sleep(exit_delay) + + next_loc = get_step(loc, next_dir) + + current_tube = null + for(var/obj/structure/transit_tube/tube in next_loc) + if(tube.has_entrance(next_dir)) + current_tube = tube + break + + if(current_tube == null) + dir = next_dir + Move(get_step(loc, dir)) // Allow collisions when leaving the tubes. + break + + last_delay = current_tube.enter_delay(src, next_dir) + sleep(last_delay) + dir = next_dir + loc = next_loc // When moving from one tube to another, skip collision and such. + density = current_tube.density + + if(current_tube && current_tube.should_stop_pod(src, next_dir)) + current_tube.pod_stopped(src, dir) + break + + density = 1 + + // If the pod is no longer in a tube, move in a line until stopped or slowed to a halt. + // /turf/inertial_drift appears to only work on mobs, and re-implementing some of the + // logic allows a gradual slowdown and eventual stop when passing over non-space turfs. + if(!current_tube && last_delay <= 10) + do + sleep(last_delay) + + if(!istype(loc, /turf/space)) + last_delay++ + + if(last_delay > 10) + break + + while(isturf(loc) && Move(get_step(loc, dir))) + + moving = 0 + + +// Should I return a copy here? If the caller edits or del()s the returned +// datum, there might be problems if I don't... +/obj/structure/transit_tube_pod/return_air() + var/datum/gas_mixture/GM = new() + GM.oxygen = air_contents.oxygen + GM.carbon_dioxide = air_contents.carbon_dioxide + GM.nitrogen = air_contents.nitrogen + GM.toxins = air_contents.toxins + GM.temperature = air_contents.temperature + return GM + +// For now, copying what I found in an unused FEA file (and almost identical in a +// used ZAS file). Means that assume_air and remove_air don't actually alter the +// air contents. +/obj/structure/transit_tube_pod/assume_air(datum/gas_mixture/giver) + return air_contents.merge(giver) + +/obj/structure/transit_tube_pod/remove_air(amount) + return air_contents.remove(amount) + + + +// Called when a pod arrives at, and before a pod departs from a station, +// giving it a chance to mix its internal air supply with the turf it is +// currently on. +/obj/structure/transit_tube_pod/proc/mix_air() + var/datum/gas_mixture/environment = loc.return_air() + var/env_pressure = environment.return_pressure() + var/int_pressure = air_contents.return_pressure() + var/total_pressure = env_pressure + int_pressure + + if(total_pressure == 0) + return + + // Math here: Completely made up, not based on realistic equasions. + // Goal is to balance towards equal pressure, but ensure some gas + // transfer in both directions regardless. + // Feel free to rip this out and replace it with something better, + // I don't really know muhch about how gas transfer rates work in + // SS13. + var/transfer_in = max(0.1, 0.5 * (env_pressure - int_pressure) / total_pressure) + var/transfer_out = max(0.1, 0.3 * (int_pressure - env_pressure) / total_pressure) + + var/datum/gas_mixture/from_env = loc.remove_air(environment.total_moles() * transfer_in) + var/datum/gas_mixture/from_int = air_contents.remove(air_contents.total_moles() * transfer_out) + + loc.assume_air(from_int) + air_contents.merge(from_env) + + + +// When the player moves, check if the pos is currently stopped at a station. +// if it is, check the direction. If the direction matches the direction of +// the station, try to exit. If the direction matches one of the station's +// tube directions, launch the pod in that direction. +/obj/structure/transit_tube_pod/relaymove(mob/mob, direction) + if(istype(mob, /mob) && mob.client) + // If the pod is not in a tube at all, you can get out at any time. + if(!(locate(/obj/structure/transit_tube) in loc)) + mob.loc = loc + mob.client.Move(get_step(loc, direction), direction) + mob.reset_view(null) + + //if(moving && istype(loc, /turf/space)) + // Todo: If you get out of a moving pod in space, you should move as well. + // Same direction as pod? Direcion you moved? Halfway between? + + if(!moving) + for(var/obj/structure/transit_tube/station/station in loc) + if(dir in station.directions()) + if(!station.pod_moving) + if(direction == station.dir) + if(station.icon_state == "open") + mob.loc = loc + mob.client.Move(get_step(loc, direction), direction) + mob.reset_view(null) + + else + station.open_animation() + + else if(direction in station.directions()) + dir = direction + station.launch_pod() + return + + for(var/obj/structure/transit_tube/tube in loc) + if(dir in tube.directions()) + if(tube.has_exit(direction)) + dir = direction + return + + +// Parse the icon_state into a list of directions. +// This means that mappers can use Dream Maker's built in +// "Generate Instances from Icon-states" option to get all +// variations. Additionally, as a separate proc, sub-types +// can handle it more intelligently. +/obj/structure/transit_tube/proc/init_dirs() + if(icon_state == "auto") + // Additional delay, for map loading. + spawn(1) + init_dirs_automatic() + + else + tube_dirs = parse_dirs(icon_state) + + if(copytext(icon_state, 1, 3) == "D-" || findtextEx(icon_state, "Pass")) + density = 0 + + + +// Tube station directions are simply 90 to either side of +// the exit. +/obj/structure/transit_tube/station/init_dirs() + tube_dirs = list(turn(dir, 90), turn(dir, -90)) + + + +// Initialize dirs by searching for tubes that do/might connect +// on nearby turfs. Create corner pieces if nessecary. +// Pick two directions, preferring tubes that already connect +// to loc, or other auto tubes if there aren't enough connections. +/obj/structure/transit_tube/proc/init_dirs_automatic() + var/list/connected = list() + var/list/connected_auto = list() + + for(var/direction in tube_dir_list) + var/location = get_step(loc, direction) + for(var/obj/structure/transit_tube/tube in location) + if(tube.directions() == null && tube.icon_state == "auto") + connected_auto += direction + break + + else if(turn(direction, 180) in tube.directions()) + connected += direction + break + + connected += connected_auto + + tube_dirs = select_automatic_dirs(connected) + + if(length(tube_dirs) == 2 && tube_dir_list.Find(tube_dirs[1]) > tube_dir_list.Find(tube_dirs[2])) + tube_dirs.Swap(1, 2) + + generate_automatic_corners(tube_dirs) + select_automatic_icon_state(tube_dirs) + + + +// Given a list of directions, look a pair that forms a 180 or +// 135 degree angle, and return a list containing the pair. +// If none exist, return list(connected[1], turn(connected[1], 180) +/obj/structure/transit_tube/proc/select_automatic_dirs(connected) + if(length(connected) < 1) + return list() + + for(var/i = 1, i <= length(connected), i++) + for(var/j = i + 1, j <= length(connected), j++) + var/d1 = connected[i] + var/d2 = connected[j] + + if(d1 == turn(d2, 135) || d1 == turn(d2, 180) || d1 == turn(d2, 225)) + return list(d1, d2) + + return list(connected[1], turn(connected[1], 180)) + + + +/obj/structure/transit_tube/proc/select_automatic_icon_state(directions) + if(length(directions) == 2) + icon_state = "[dir2text_short(directions[1])]-[dir2text_short(directions[2])]" + + + +// Look for diagonal directions, generate the decorative corners in each. +/obj/structure/transit_tube/proc/generate_automatic_corners(directions) + for(var/direction in directions) + if(direction == 5 || direction == 6 || direction == 9 || direction == 10) + if(direction & NORTH) + create_automatic_decorative_corner(get_step(loc, NORTH), direction ^ 3) + + else + create_automatic_decorative_corner(get_step(loc, SOUTH), direction ^ 3) + + if(direction & EAST) + create_automatic_decorative_corner(get_step(loc, EAST), direction ^ 12) + + else + create_automatic_decorative_corner(get_step(loc, WEST), direction ^ 12) + + + +// Generate a corner, if one doesn't exist for the direction on the turf. +/obj/structure/transit_tube/proc/create_automatic_decorative_corner(location, direction) + var/state = "D-[dir2text_short(direction)]" + + for(var/obj/structure/transit_tube/tube in location) + if(tube.icon_state == state) + return + + var/obj/structure/transit_tube/tube = new(location) + tube.icon_state = state + tube.init_dirs() + + + +// Uses a list() to cache return values. Since they should +// never be edited directly, all tubes with a certain +// icon_state can just reference the same list. In theory, +// reduces memory usage, and improves CPU cache usage. +// In reality, I don't know if that is quite how BYOND works, +// but it is probably safer to assume the existence of, and +// rely on, a sufficiently smart compiler/optimizer. +/obj/structure/transit_tube/proc/parse_dirs(text) + var/global/list/direction_table = list() + + if(text in direction_table) + return direction_table[text] + + var/list/split_text = text2list(text, "-") + + // If the first token is D, the icon_state represents + // a purely decorative tube, and doesn't actually + // connect to anything. + if(split_text[1] == "D") + direction_table[text] = list() + return null + + var/list/directions = list() + + for(var/text_part in split_text) + var/direction = text2dir_extended(text_part) + + if(direction > 0) + directions += direction + + direction_table[text] = directions + return directions + + + +// A copy of text2dir, extended to accept one and two letter +// directions, and to clearly return 0 otherwise. +/obj/structure/transit_tube/proc/text2dir_extended(direction) + switch(uppertext(direction)) + if("NORTH", "N") + return 1 + if("SOUTH", "S") + return 2 + if("EAST", "E") + return 4 + if("WEST", "W") + return 8 + if("NORTHEAST", "NE") + return 5 + if("NORTHWEST", "NW") + return 9 + if("SOUTHEAST", "SE") + return 6 + if("SOUTHWEST", "SW") + return 10 + else + return 0 + + + +// A copy of dir2text, which returns the short one or two letter +// directions used in tube icon states. +/obj/structure/transit_tube/proc/dir2text_short(direction) + switch(direction) + if(1) + return "N" + if(2) + return "S" + if(4) + return "E" + if(8) + return "W" + if(5) + return "NE" + if(6) + return "SE" + if(9) + return "NW" + if(10) + return "SW" + else + return diff --git a/code/game/sound.dm b/code/game/sound.dm index 3cec0739a61..59ff419701f 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,78 +1,78 @@ -/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, surround = 1) - - soundin = get_sfx(soundin) // same sound for everyone - - if(isarea(source)) - error("[source] is an area and is trying to make the sound: [soundin]") - return - - var/frequency = get_rand_frequency() // Same frequency for everybody - var/turf/turf_source = get_turf(source) - - // Looping through the player list has the added bonus of working for mobs inside containers - for (var/P in player_list) - var/mob/M = P - if(!M || !M.client) - continue - if(get_dist(M, turf_source) <= world.view + extrarange) - var/turf/T = get_turf(M) - if(T && T.z == turf_source.z) - M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, surround) - -var/const/FALLOFF_SOUNDS = 1 -var/const/SURROUND_CAP = 7 - -/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1) - if(!src.client || ear_deaf > 0) return - soundin = get_sfx(soundin) - - var/sound/S = sound(soundin) - S.wait = 0 //No queue - S.channel = 0 //Any channel - S.volume = vol - - if (vary) - if(frequency) - S.frequency = frequency - else - S.frequency = get_rand_frequency() - - if(isturf(turf_source)) - // 3D sounds, the technology is here! - var/turf/T = get_turf(src) - if (surround) - var/dx = turf_source.x - T.x // Hearing from the right/left - S.x = round(max(-SURROUND_CAP, min(SURROUND_CAP, dx)), 1) - - var/dz = turf_source.y - T.y // Hearing from infront/behind - S.z = round(max(-SURROUND_CAP, min(SURROUND_CAP, dz)), 1) - - // The y value is for above your head, but there is no ceiling in 2d spessmens. - S.y = 1 - S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) - - src << S - -/client/proc/playtitlemusic() - if(!ticker || !ticker.login_music) return - if(prefs.toggles & SOUND_LOBBY) - src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS - -/proc/get_rand_frequency() - return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. - -/proc/get_sfx(soundin) - if(istext(soundin)) - switch(soundin) - if ("shatter") soundin = pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg') - if ("explosion") soundin = pick('sound/effects/Explosion1.ogg','sound/effects/Explosion2.ogg') - if ("sparks") soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg') - if ("rustle") soundin = pick('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg') - if ("bodyfall") soundin = pick('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') - if ("punch") soundin = pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg') - if ("clownstep") soundin = pick('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') - if ("swing_hit") soundin = pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') - if ("hiss") soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') - if ("pageturn") soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') - if ("gunshot") soundin = pick('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') +/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, surround = 1) + + soundin = get_sfx(soundin) // same sound for everyone + + if(isarea(source)) + error("[source] is an area and is trying to make the sound: [soundin]") + return + + var/frequency = get_rand_frequency() // Same frequency for everybody + var/turf/turf_source = get_turf(source) + + // Looping through the player list has the added bonus of working for mobs inside containers + for (var/P in player_list) + var/mob/M = P + if(!M || !M.client) + continue + if(get_dist(M, turf_source) <= world.view + extrarange) + var/turf/T = get_turf(M) + if(T && T.z == turf_source.z) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, surround) + +var/const/FALLOFF_SOUNDS = 1 +var/const/SURROUND_CAP = 7 + +/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1) + if(!src.client || ear_deaf > 0) return + soundin = get_sfx(soundin) + + var/sound/S = sound(soundin) + S.wait = 0 //No queue + S.channel = 0 //Any channel + S.volume = vol + + if (vary) + if(frequency) + S.frequency = frequency + else + S.frequency = get_rand_frequency() + + if(isturf(turf_source)) + // 3D sounds, the technology is here! + var/turf/T = get_turf(src) + if (surround) + var/dx = turf_source.x - T.x // Hearing from the right/left + S.x = round(max(-SURROUND_CAP, min(SURROUND_CAP, dx)), 1) + + var/dz = turf_source.y - T.y // Hearing from infront/behind + S.z = round(max(-SURROUND_CAP, min(SURROUND_CAP, dz)), 1) + + // The y value is for above your head, but there is no ceiling in 2d spessmens. + S.y = 1 + S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) + + src << S + +/client/proc/playtitlemusic() + if(!ticker || !ticker.login_music) return + if(prefs.toggles & SOUND_LOBBY) + src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS + +/proc/get_rand_frequency() + return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. + +/proc/get_sfx(soundin) + if(istext(soundin)) + switch(soundin) + if ("shatter") soundin = pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg') + if ("explosion") soundin = pick('sound/effects/Explosion1.ogg','sound/effects/Explosion2.ogg') + if ("sparks") soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg') + if ("rustle") soundin = pick('sound/effects/rustle1.ogg','sound/effects/rustle2.ogg','sound/effects/rustle3.ogg','sound/effects/rustle4.ogg','sound/effects/rustle5.ogg') + if ("bodyfall") soundin = pick('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') + if ("punch") soundin = pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg') + if ("clownstep") soundin = pick('sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') + if ("swing_hit") soundin = pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg') + if ("hiss") soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') + if ("pageturn") soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') + if ("gunshot") soundin = pick('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg') return soundin \ No newline at end of file diff --git a/code/game/turfs/simulated/dirtystation.dm b/code/game/turfs/simulated/dirtystation.dm index 4516bf9fb77..a9c7e18f082 100644 --- a/code/game/turfs/simulated/dirtystation.dm +++ b/code/game/turfs/simulated/dirtystation.dm @@ -1,144 +1,144 @@ -//Janitors! Janitors, janitors, janitors! -Sayu - - -//Conspicuously not-recent versions of suspicious cleanables - -/obj/effect/decal/cleanable/blood/old - name = "dried blood" - desc = "Looks like it's been here a while. Eew." - New() - ..() - icon_state += "-old" - -/obj/effect/decal/cleanable/blood/gibs/old - name = "old rotting gibs" - desc = "Oh god, why didn't anyone clean this up? It smells terrible." - New() - ..() - icon_state += "-old" - dir = pick(1,2,4,8) - -/obj/effect/decal/cleanable/vomit/old - name = "crusty dried vomit" - desc = "You try not to look at the chunks, and fail." - New() - ..() - icon_state += "-old" - -/obj/effect/decal/cleanable/robot_debris/old - name = "dusty robot debris" - desc = "Looks like nobody has touched this in a while." - - -//Making the station dirty, one tile at a time. Called by master controller's setup_objects - -/turf/simulated/floor/proc/MakeDirty() - if(prob(66)) //fastest possible exit 2/3 of the time - return - - // These look weird if you make them dirty - if(istype(src, /turf/simulated/floor/carpet) || istype(src, /turf/simulated/floor/grass) || istype(src, /turf/simulated/floor/beach) || istype(src, /turf/simulated/floor/holofloor) || istype(src, /turf/simulated/floor/plating/snow) || istype(src, /turf/simulated/floor/plating/ironsand)) - return - - if(locate(/obj/structure/grille) in contents) - return - - var/area/A = loc - - //zero dirt - if(!istype(A) || istype(A, /area/centcom) || istype(A, /area/holodeck) || istype(A, /area/library) || istype(A, /area/janitor) || istype(A, /area/chapel) || istype(A, /area/mine/explored) || istype(A, /area/mine/unexplored) || istype(A, /area/solar) || istype(A, /area/atmos) || istype(A, /area/medical/virology)) - return - - //high dirt - 1/3 - if(istype(A, /area/toxins/test_area) || istype(A, /area/mine/production) || istype(A, /area/mine/living_quarters) || istype(A, /area/mine/north_outpost) || istype(A, /area/mine/west_outpost) || istype(A, /area/wreck) || istype(A, /area/derelict) || istype(A, /area/djstation)) - new /obj/effect/decal/cleanable/dirt(src) //vanilla, but it works - return - - - if(prob(80)) //mid dirt - 1/15 - return - - - if(istype(A, /area/engine) || istype(A,/area/assembly) || istype(A,/area/maintenance) || istype(A,/area/construction)) - //Blood, sweat, and oil. Oh, and dirt. - if(prob(3)) - new /obj/effect/decal/cleanable/blood/old(src) - else - if(prob(35)) - if(prob(4)) - new /obj/effect/decal/cleanable/robot_debris/old(src) - else - new /obj/effect/decal/cleanable/oil(src) - else - new /obj/effect/decal/cleanable/dirt(src) - return - - if(istype(A, /area/crew_quarters/toilet) || istype(A, /area/crew_quarters/locker/locker_toilet) || istype(A, /area/crew_quarters/bar)) - if(prob(40)) - if(prob(90)) - new /obj/effect/decal/cleanable/vomit/old(src) - else - new /obj/effect/decal/cleanable/blood/old(src) - else - new /obj/effect/decal/cleanable/dirt(src) - return - - if(istype(A, /area/quartermaster)) - if(prob(75)) - new /obj/effect/decal/cleanable/dirt(src) - else - new /obj/effect/decal/cleanable/oil(src) - return - - - - if(prob(75)) //low dirt - 1/60 - return - - - - if(istype(A, /area/turret_protected) || istype(A, /area/security)) //chance of incident - if(prob(20)) - if(prob(5)) - new /obj/effect/decal/cleanable/blood/gibs/old(src) - else - new /obj/effect/decal/cleanable/blood/old(src) - else - new /obj/effect/decal/cleanable/dirt(src) - return - - - if(istype(A, /area/crew_quarters/kitchen)) //Kitchen messes - if(prob(60)) - if(prob(50)) - new /obj/effect/decal/cleanable/egg_smudge(src) - else - new /obj/effect/decal/cleanable/flour(src) - else if(prob(33)) - new /obj/effect/decal/cleanable/dirt(src) - return - - if(istype(A, /area/medical)) //Kept clean, but chance of blood - if(prob(66)) - if(prob(5)) - new /obj/effect/decal/cleanable/blood/gibs/old(src) - else - new /obj/effect/decal/cleanable/blood/old(src) - else - if(prob(30)) - if(istype(A, /area/medical/morgue)) - new /obj/item/weapon/ectoplasm(src) - else - new /obj/effect/decal/cleanable/vomit/old(src) - return - - if(istype(A, /area/toxins)) - if(prob(80)) - new /obj/effect/decal/cleanable/dirt(src) - else - new /obj/effect/decal/cleanable/greenglow(src) //this cleans itself up but it might startle you when you see it. - return - - //default - new /obj/effect/decal/cleanable/dirt(src) +//Janitors! Janitors, janitors, janitors! -Sayu + + +//Conspicuously not-recent versions of suspicious cleanables + +/obj/effect/decal/cleanable/blood/old + name = "dried blood" + desc = "Looks like it's been here a while. Eew." + New() + ..() + icon_state += "-old" + +/obj/effect/decal/cleanable/blood/gibs/old + name = "old rotting gibs" + desc = "Oh god, why didn't anyone clean this up? It smells terrible." + New() + ..() + icon_state += "-old" + dir = pick(1,2,4,8) + +/obj/effect/decal/cleanable/vomit/old + name = "crusty dried vomit" + desc = "You try not to look at the chunks, and fail." + New() + ..() + icon_state += "-old" + +/obj/effect/decal/cleanable/robot_debris/old + name = "dusty robot debris" + desc = "Looks like nobody has touched this in a while." + + +//Making the station dirty, one tile at a time. Called by master controller's setup_objects + +/turf/simulated/floor/proc/MakeDirty() + if(prob(66)) //fastest possible exit 2/3 of the time + return + + // These look weird if you make them dirty + if(istype(src, /turf/simulated/floor/carpet) || istype(src, /turf/simulated/floor/grass) || istype(src, /turf/simulated/floor/beach) || istype(src, /turf/simulated/floor/holofloor) || istype(src, /turf/simulated/floor/plating/snow) || istype(src, /turf/simulated/floor/plating/ironsand)) + return + + if(locate(/obj/structure/grille) in contents) + return + + var/area/A = loc + + //zero dirt + if(!istype(A) || istype(A, /area/centcom) || istype(A, /area/holodeck) || istype(A, /area/library) || istype(A, /area/janitor) || istype(A, /area/chapel) || istype(A, /area/mine/explored) || istype(A, /area/mine/unexplored) || istype(A, /area/solar) || istype(A, /area/atmos) || istype(A, /area/medical/virology)) + return + + //high dirt - 1/3 + if(istype(A, /area/toxins/test_area) || istype(A, /area/mine/production) || istype(A, /area/mine/living_quarters) || istype(A, /area/mine/north_outpost) || istype(A, /area/mine/west_outpost) || istype(A, /area/wreck) || istype(A, /area/derelict) || istype(A, /area/djstation)) + new /obj/effect/decal/cleanable/dirt(src) //vanilla, but it works + return + + + if(prob(80)) //mid dirt - 1/15 + return + + + if(istype(A, /area/engine) || istype(A,/area/assembly) || istype(A,/area/maintenance) || istype(A,/area/construction)) + //Blood, sweat, and oil. Oh, and dirt. + if(prob(3)) + new /obj/effect/decal/cleanable/blood/old(src) + else + if(prob(35)) + if(prob(4)) + new /obj/effect/decal/cleanable/robot_debris/old(src) + else + new /obj/effect/decal/cleanable/oil(src) + else + new /obj/effect/decal/cleanable/dirt(src) + return + + if(istype(A, /area/crew_quarters/toilet) || istype(A, /area/crew_quarters/locker/locker_toilet) || istype(A, /area/crew_quarters/bar)) + if(prob(40)) + if(prob(90)) + new /obj/effect/decal/cleanable/vomit/old(src) + else + new /obj/effect/decal/cleanable/blood/old(src) + else + new /obj/effect/decal/cleanable/dirt(src) + return + + if(istype(A, /area/quartermaster)) + if(prob(75)) + new /obj/effect/decal/cleanable/dirt(src) + else + new /obj/effect/decal/cleanable/oil(src) + return + + + + if(prob(75)) //low dirt - 1/60 + return + + + + if(istype(A, /area/turret_protected) || istype(A, /area/security)) //chance of incident + if(prob(20)) + if(prob(5)) + new /obj/effect/decal/cleanable/blood/gibs/old(src) + else + new /obj/effect/decal/cleanable/blood/old(src) + else + new /obj/effect/decal/cleanable/dirt(src) + return + + + if(istype(A, /area/crew_quarters/kitchen)) //Kitchen messes + if(prob(60)) + if(prob(50)) + new /obj/effect/decal/cleanable/egg_smudge(src) + else + new /obj/effect/decal/cleanable/flour(src) + else if(prob(33)) + new /obj/effect/decal/cleanable/dirt(src) + return + + if(istype(A, /area/medical)) //Kept clean, but chance of blood + if(prob(66)) + if(prob(5)) + new /obj/effect/decal/cleanable/blood/gibs/old(src) + else + new /obj/effect/decal/cleanable/blood/old(src) + else + if(prob(30)) + if(istype(A, /area/medical/morgue)) + new /obj/item/weapon/ectoplasm(src) + else + new /obj/effect/decal/cleanable/vomit/old(src) + return + + if(istype(A, /area/toxins)) + if(prob(80)) + new /obj/effect/decal/cleanable/dirt(src) + else + new /obj/effect/decal/cleanable/greenglow(src) //this cleans itself up but it might startle you when you see it. + return + + //default + new /obj/effect/decal/cleanable/dirt(src) return \ No newline at end of file diff --git a/code/modules/admin/banappearance.dm b/code/modules/admin/banappearance.dm index af867a27a62..829ffee38e5 100644 --- a/code/modules/admin/banappearance.dm +++ b/code/modules/admin/banappearance.dm @@ -1,109 +1,109 @@ -//ban people from using custom names and appearances. that'll show 'em. - -var/appearanceban_runonce //Updates legacy bans with new info -var/appearance_keylist[0] //to store the keys - -/proc/appearance_fullban(mob/M, reason) - if (!M || !M.key) return - appearance_keylist.Add(text("[M.ckey] ## [reason]")) - appearance_savebanfile() - -/proc/appearance_client_fullban(ckey) - if (!ckey) return - appearance_keylist.Add(text("[ckey]")) - appearance_savebanfile() - -//returns a reason if M is banned, returns 0 otherwise -/proc/appearance_isbanned(mob/M) - if(M) - for(var/s in appearance_keylist) - if(findtext(s, "[M.ckey]") == 1) - var/startpos = findtext(s, "## ") + 3 - if(startpos && startpos < length(s)) - var/text = copytext(s, startpos, 0) - if(text) - return text - return "Reason Unspecified" - return 0 - -/* -DEBUG -/mob/verb/list_all_appearances() - set name = "list all appearances" - - for(var/s in appearance_keylist) - world << s - -/mob/verb/reload_appearances() - set name = "reload appearances" - - appearance_loadbanfile() -*/ - -/proc/appearance_loadbanfile() - if(config.ban_legacy_system) - var/savefile/S=new("data/appearance_full.ban") - S["keys[0]"] >> appearance_keylist - log_admin("Loading appearance_rank") - S["runonce"] >> appearanceban_runonce - - if (!length(appearance_keylist)) - appearance_keylist=list() - log_admin("appearance_keylist was empty") - else - if(!establish_db_connection()) - world.log << "Database connection failed. Reverting to the legacy ban system." - diary << "Database connection failed. Reverting to the legacy ban system." - config.ban_legacy_system = 1 - appearance_loadbanfile() - return - - //appearance bans - var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM erro_ban WHERE bantype = 'APPEARANCE_PERMABAN' AND NOT unbanned = 1") - query.Execute() - - while(query.NextRow()) - var/ckey = query.item[1] - - appearance_keylist.Add("[ckey]") - -/proc/appearance_savebanfile() - var/savefile/S=new("data/appearance_full.ban") - S["keys[0]"] << appearance_keylist - -/proc/appearance_unban(mob/M) - appearance_remove("[M.ckey]") - appearance_savebanfile() - - -/proc/appearance_updatelegacybans() - if(!appearanceban_runonce) - log_admin("Updating appearancefile!") - // Updates bans.. Or fixes them. Either way. - for(var/T in appearance_keylist) - if(!T) continue - appearanceban_runonce++ //don't run this update again - - -/proc/appearance_remove(X) - for (var/i = 1; i <= length(appearance_keylist); i++) - if( findtext(appearance_keylist[i], "[X]") ) - appearance_keylist.Remove(appearance_keylist[i]) - appearance_savebanfile() - return 1 - return 0 - -/* -proc/DB_ban_isappearancebanned(var/playerckey) - establish_db_connection() - if(!dbcon.IsConnected()) - return - - var/sqlplayerckey = sql_sanitize_text(ckey(playerckey)) - - var/DBQuery/query = dbcon.NewQuery("SELECT id FROM erro_ban WHERE CKEY = '[sqlplayerckey]' AND ((bantype = 'APPEARANCE_PERMABAN') OR (bantype = 'APPEARANCE_TEMPBAN' AND expiration_time > Now())) AND unbanned != 1") - query.Execute() - while(query.NextRow()) - return 1 - return 0 +//ban people from using custom names and appearances. that'll show 'em. + +var/appearanceban_runonce //Updates legacy bans with new info +var/appearance_keylist[0] //to store the keys + +/proc/appearance_fullban(mob/M, reason) + if (!M || !M.key) return + appearance_keylist.Add(text("[M.ckey] ## [reason]")) + appearance_savebanfile() + +/proc/appearance_client_fullban(ckey) + if (!ckey) return + appearance_keylist.Add(text("[ckey]")) + appearance_savebanfile() + +//returns a reason if M is banned, returns 0 otherwise +/proc/appearance_isbanned(mob/M) + if(M) + for(var/s in appearance_keylist) + if(findtext(s, "[M.ckey]") == 1) + var/startpos = findtext(s, "## ") + 3 + if(startpos && startpos < length(s)) + var/text = copytext(s, startpos, 0) + if(text) + return text + return "Reason Unspecified" + return 0 + +/* +DEBUG +/mob/verb/list_all_appearances() + set name = "list all appearances" + + for(var/s in appearance_keylist) + world << s + +/mob/verb/reload_appearances() + set name = "reload appearances" + + appearance_loadbanfile() +*/ + +/proc/appearance_loadbanfile() + if(config.ban_legacy_system) + var/savefile/S=new("data/appearance_full.ban") + S["keys[0]"] >> appearance_keylist + log_admin("Loading appearance_rank") + S["runonce"] >> appearanceban_runonce + + if (!length(appearance_keylist)) + appearance_keylist=list() + log_admin("appearance_keylist was empty") + else + if(!establish_db_connection()) + world.log << "Database connection failed. Reverting to the legacy ban system." + diary << "Database connection failed. Reverting to the legacy ban system." + config.ban_legacy_system = 1 + appearance_loadbanfile() + return + + //appearance bans + var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM erro_ban WHERE bantype = 'APPEARANCE_PERMABAN' AND NOT unbanned = 1") + query.Execute() + + while(query.NextRow()) + var/ckey = query.item[1] + + appearance_keylist.Add("[ckey]") + +/proc/appearance_savebanfile() + var/savefile/S=new("data/appearance_full.ban") + S["keys[0]"] << appearance_keylist + +/proc/appearance_unban(mob/M) + appearance_remove("[M.ckey]") + appearance_savebanfile() + + +/proc/appearance_updatelegacybans() + if(!appearanceban_runonce) + log_admin("Updating appearancefile!") + // Updates bans.. Or fixes them. Either way. + for(var/T in appearance_keylist) + if(!T) continue + appearanceban_runonce++ //don't run this update again + + +/proc/appearance_remove(X) + for (var/i = 1; i <= length(appearance_keylist); i++) + if( findtext(appearance_keylist[i], "[X]") ) + appearance_keylist.Remove(appearance_keylist[i]) + appearance_savebanfile() + return 1 + return 0 + +/* +proc/DB_ban_isappearancebanned(var/playerckey) + establish_db_connection() + if(!dbcon.IsConnected()) + return + + var/sqlplayerckey = sql_sanitize_text(ckey(playerckey)) + + var/DBQuery/query = dbcon.NewQuery("SELECT id FROM erro_ban WHERE CKEY = '[sqlplayerckey]' AND ((bantype = 'APPEARANCE_PERMABAN') OR (bantype = 'APPEARANCE_TEMPBAN' AND expiration_time > Now())) AND unbanned != 1") + query.Execute() + while(query.NextRow()) + return 1 + return 0 */ \ No newline at end of file diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 0f2a0a73aa3..4eb06965fa0 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -1,37 +1,37 @@ -/obj/item/device/assembly/voice - name = "voice analyzer" - desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." - icon_state = "voice" - m_amt = 500 - g_amt = 50 - origin_tech = "magnets=1" - var/listening = 0 - var/recorded //the activation message - - hear_talk(mob/living/M as mob, msg) - if(listening) - recorded = msg - listening = 0 - var/turf/T = get_turf(src) //otherwise it won't work in hand - T.visible_message("\icon[src] beeps, \"Activation message is '[recorded]'.\"") - else - if(findtext(msg, recorded)) - pulse(0) - - activate() - if(secured) - if(!holder) - listening = !listening - var/turf/T = get_turf(src) - T.visible_message("\icon[src] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") - - - attack_self(mob/user) - if(!user) return 0 - activate() - return 1 - - - toggle_secure() - . = ..() +/obj/item/device/assembly/voice + name = "voice analyzer" + desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." + icon_state = "voice" + m_amt = 500 + g_amt = 50 + origin_tech = "magnets=1" + var/listening = 0 + var/recorded //the activation message + + hear_talk(mob/living/M as mob, msg) + if(listening) + recorded = msg + listening = 0 + var/turf/T = get_turf(src) //otherwise it won't work in hand + T.visible_message("\icon[src] beeps, \"Activation message is '[recorded]'.\"") + else + if(findtext(msg, recorded)) + pulse(0) + + activate() + if(secured) + if(!holder) + listening = !listening + var/turf/T = get_turf(src) + T.visible_message("\icon[src] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") + + + attack_self(mob/user) + if(!user) return 0 + activate() + return 1 + + + toggle_secure() + . = ..() listening = 0 \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/blackmarketpackers.dm b/code/modules/awaymissions/mission_code/blackmarketpackers.dm index d2d215053af..b6496fe4718 100644 --- a/code/modules/awaymissions/mission_code/blackmarketpackers.dm +++ b/code/modules/awaymissions/mission_code/blackmarketpackers.dm @@ -1,22 +1,22 @@ -//Packer Ship Areas - -/area/awaymission/BMPship - name = "\improper BMP Asteroids" - icon_state = "away" - luminosity = 0 - - -/area/awaymission/BMPship/Aft - name = "\improper Aft Block" - icon_state = "away1" - requires_power = 1 - -/area/awaymission/BMPship/Midship - name = "\improper Midship Block" - icon_state = "away2" - requires_power = 1 - -/area/awaymission/BMPship/Fore - name = "\improper Fore Block" - icon_state = "away3" +//Packer Ship Areas + +/area/awaymission/BMPship + name = "\improper BMP Asteroids" + icon_state = "away" + luminosity = 0 + + +/area/awaymission/BMPship/Aft + name = "\improper Aft Block" + icon_state = "away1" + requires_power = 1 + +/area/awaymission/BMPship/Midship + name = "\improper Midship Block" + icon_state = "away2" + requires_power = 1 + +/area/awaymission/BMPship/Fore + name = "\improper Fore Block" + icon_state = "away3" requires_power = 1 \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm index 70be2fa7202..f4e92cf800a 100644 --- a/code/modules/awaymissions/mission_code/centcomAway.dm +++ b/code/modules/awaymissions/mission_code/centcomAway.dm @@ -1,63 +1,63 @@ -//centcomAway areas - -/area/awaymission/centcomAway - name = "XCC-P5831" - icon_state = "away" - requires_power = 0 - -/area/awaymission/centcomAway/general - name = "XCC-P5831" - music = "music/ambigen3.ogg" - -/area/awaymission/centcomAway/maint - name = "XCC-P5831 Maintenance" - icon_state = "away1" - music = "music/ambisin1.ogg" - -/area/awaymission/centcomAway/thunderdome - name = "XCC-P5831 Thunderdome" - icon_state = "away2" - music = "music/ambisin2.ogg" - -/area/awaymission/centcomAway/cafe - name = "XCC-P5831 Kitchen Arena" - icon_state = "away3" - music = "music/ambisin3.ogg" - -/area/awaymission/centcomAway/courtroom - name = "XCC-P5831 Courtroom" - icon_state = "away4" - music = "music/ambisin4.ogg" - -/area/awaymission/centcomAway/hangar - name = "XCC-P5831 Hangars" - icon_state = "away4" - music = "music/ambigen5.ogg" - -//centcomAway items - -/obj/item/weapon/paper/pamphlet/ccaInfo - name = "Visitor Info Pamphlet" - info = " XCC-P5831 Visitor Information
    \ - Greetings, visitor, to XCC-P5831! As you may know, this outpost was once \ - used as Nanotrasen's CENTRAL COMMAND STATION, organizing and coordinating company \ - projects across the vastness of space.
    \ - Since the completion of the much more efficient CC-A5831 on March 8, 2553, XCC-P5831 no longer \ - acts as NT's base of operations but still plays a very important role its corporate affairs; \ - serving as a supply and repair depot, as well as being host to its most important legal proceedings\ - and the thrilling pay-per-view broadcasts of PLASTEEL CHEF and THUNDERDOME LIVE.
    \ - We hope you enjoy your stay!" - -/obj/item/weapon/paper/ccaMemo - name = "Memo to XCC-P5831 QM" - info = "From: XCC-P5831 Management Office
    \ - To: Rolf Ingram, XCC-P5831 Quartermaster
    \ - Hey, Rolf, once you pack that gateway into the ferry hangar, make absolutely sure \ - to deactivate it! As you may know, SS13 has recently got its network up and running, \ - which means that until we get this gate shipped off to the next colonization staging \ - area, they'll be able to hop straight in here if its hooked up on our end.
    \ - Obviously, that's something I'd very much rather avoid. Our forensics and medical \ - teams never did figure out what happened that last time... and I can't wrap my head \ - around it myself. Why would a shuttle full of evacuees all snap and beat each other \ - to death the moment they reached safety?
    \ +//centcomAway areas + +/area/awaymission/centcomAway + name = "XCC-P5831" + icon_state = "away" + requires_power = 0 + +/area/awaymission/centcomAway/general + name = "XCC-P5831" + music = "music/ambigen3.ogg" + +/area/awaymission/centcomAway/maint + name = "XCC-P5831 Maintenance" + icon_state = "away1" + music = "music/ambisin1.ogg" + +/area/awaymission/centcomAway/thunderdome + name = "XCC-P5831 Thunderdome" + icon_state = "away2" + music = "music/ambisin2.ogg" + +/area/awaymission/centcomAway/cafe + name = "XCC-P5831 Kitchen Arena" + icon_state = "away3" + music = "music/ambisin3.ogg" + +/area/awaymission/centcomAway/courtroom + name = "XCC-P5831 Courtroom" + icon_state = "away4" + music = "music/ambisin4.ogg" + +/area/awaymission/centcomAway/hangar + name = "XCC-P5831 Hangars" + icon_state = "away4" + music = "music/ambigen5.ogg" + +//centcomAway items + +/obj/item/weapon/paper/pamphlet/ccaInfo + name = "Visitor Info Pamphlet" + info = " XCC-P5831 Visitor Information
    \ + Greetings, visitor, to XCC-P5831! As you may know, this outpost was once \ + used as Nanotrasen's CENTRAL COMMAND STATION, organizing and coordinating company \ + projects across the vastness of space.
    \ + Since the completion of the much more efficient CC-A5831 on March 8, 2553, XCC-P5831 no longer \ + acts as NT's base of operations but still plays a very important role its corporate affairs; \ + serving as a supply and repair depot, as well as being host to its most important legal proceedings\ + and the thrilling pay-per-view broadcasts of PLASTEEL CHEF and THUNDERDOME LIVE.
    \ + We hope you enjoy your stay!" + +/obj/item/weapon/paper/ccaMemo + name = "Memo to XCC-P5831 QM" + info = "From: XCC-P5831 Management Office
    \ + To: Rolf Ingram, XCC-P5831 Quartermaster
    \ + Hey, Rolf, once you pack that gateway into the ferry hangar, make absolutely sure \ + to deactivate it! As you may know, SS13 has recently got its network up and running, \ + which means that until we get this gate shipped off to the next colonization staging \ + area, they'll be able to hop straight in here if its hooked up on our end.
    \ + Obviously, that's something I'd very much rather avoid. Our forensics and medical \ + teams never did figure out what happened that last time... and I can't wrap my head \ + around it myself. Why would a shuttle full of evacuees all snap and beat each other \ + to death the moment they reached safety?
    \ - D. Cereza" \ No newline at end of file diff --git a/code/modules/awaymissions/mission_code/spacebattle.dm b/code/modules/awaymissions/mission_code/spacebattle.dm index dc86365f4ee..9b9a70d220a 100644 --- a/code/modules/awaymissions/mission_code/spacebattle.dm +++ b/code/modules/awaymissions/mission_code/spacebattle.dm @@ -1,33 +1,33 @@ -//Spacebattle Areas - -/area/awaymission/spacebattle - name = "\improper Space Battle" - icon_state = "away" - requires_power = 0 - -/area/awaymission/spacebattle/cruiser - name = "\improper Nanotrasen Cruiser" - -/area/awaymission/spacebattle/syndicate1 - name = "\improper Syndicate Assault Ship 1" - -/area/awaymission/spacebattle/syndicate2 - name = "\improper Syndicate Assault Ship 2" - -/area/awaymission/spacebattle/syndicate3 - name = "\improper Syndicate Assault Ship 3" - -/area/awaymission/spacebattle/syndicate4 - name = "\improper Syndicate War Sphere 1" - -/area/awaymission/spacebattle/syndicate5 - name = "\improper Syndicate War Sphere 2" - -/area/awaymission/spacebattle/syndicate6 - name = "\improper Syndicate War Sphere 3" - -/area/awaymission/spacebattle/syndicate7 - name = "\improper Syndicate Fighter" - -/area/awaymission/spacebattle/secret +//Spacebattle Areas + +/area/awaymission/spacebattle + name = "\improper Space Battle" + icon_state = "away" + requires_power = 0 + +/area/awaymission/spacebattle/cruiser + name = "\improper Nanotrasen Cruiser" + +/area/awaymission/spacebattle/syndicate1 + name = "\improper Syndicate Assault Ship 1" + +/area/awaymission/spacebattle/syndicate2 + name = "\improper Syndicate Assault Ship 2" + +/area/awaymission/spacebattle/syndicate3 + name = "\improper Syndicate Assault Ship 3" + +/area/awaymission/spacebattle/syndicate4 + name = "\improper Syndicate War Sphere 1" + +/area/awaymission/spacebattle/syndicate5 + name = "\improper Syndicate War Sphere 2" + +/area/awaymission/spacebattle/syndicate6 + name = "\improper Syndicate War Sphere 3" + +/area/awaymission/spacebattle/syndicate7 + name = "\improper Syndicate Fighter" + +/area/awaymission/spacebattle/secret name = "\improper Hidden Chamber" \ No newline at end of file diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 3c1dd2ccb6f..7467f12ad97 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -38,4 +38,4 @@ var/related_accounts_ip = "Requires database" //So admins know why it isn't working - Used to determine what other accounts previously logged in from this ip var/related_accounts_cid = "Requires database" //So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id - preload_rsc = PRELOAD_RSC + preload_rsc = PRELOAD_RSC diff --git a/code/modules/clothing/gloves/ninja.dm b/code/modules/clothing/gloves/ninja.dm index 870324f7159..6fe92f5d346 100644 --- a/code/modules/clothing/gloves/ninja.dm +++ b/code/modules/clothing/gloves/ninja.dm @@ -1,117 +1,117 @@ -/* - Dear ninja gloves - - This isn't because I like you - this is because your father is a bastard - - ... - I guess you're a little cool. - -Sayu -*/ - -/obj/item/clothing/gloves/space_ninja - desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." - name = "ninja gloves" - icon_state = "s-ninja" - item_state = "s-ninja" - siemens_coefficient = 0 - cold_protection = HANDS - min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT - heat_protection = HANDS - max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - var/draining = 0 - var/candrain = 0 - var/mindrain = 200 - var/maxdrain = 400 - -/* - This runs the gamut of what ninja gloves can do - The other option would be a dedicated ninja touch bullshit proc on everything - which would probably more efficient, but ninjas are pretty rare. - This was mostly introduced to keep ninja code from contaminating other code; - with this in place it would be easier to untangle the rest of it. - - For the drain proc, see events/ninja.dm -*/ -/obj/item/clothing/gloves/space_ninja/Touch(var/atom/A,var/proximity) - if(!candrain || draining) return 0 - - var/mob/living/carbon/human/H = loc - if(!istype(H)) return 0 // what - var/obj/item/clothing/suit/space/space_ninja/suit = H.wear_suit - if(!istype(suit)) return 0 - if(isturf(A)) return 0 - - if(!proximity) // todo: you could add ninja stars or computer hacking here - return 0 - - // Move an AI into and out of things - if(istype(A,/mob/living/silicon/ai)) - if(suit.s_control) - A.add_fingerprint(H) - suit.transfer_ai("AICORE", "NINJASUIT", A, H) - return 1 - else - H << "\red ERROR: \black Remote access channel disabled." - return 0 - - if(istype(A,/obj/structure/AIcore/deactivated)) - if(suit.s_control) - A.add_fingerprint(H) - suit.transfer_ai("INACTIVE","NINJASUIT",A, H) - return 1 - else - H << "\red ERROR: \black Remote access channel disabled." - return 0 - if(istype(A,/obj/machinery/computer/aifixer)) - if(suit.s_control) - A.add_fingerprint(H) - suit.transfer_ai("AIFIXER","NINJASUIT",A, H) - return 1 - else - H << "\red ERROR: \black Remote access channel disabled." - return 0 - - // steal energy from powered things - if(istype(A,/mob/living/silicon/robot)) - A.add_fingerprint(H) - drain("CYBORG",A,suit) - return 1 - if(istype(A,/obj/machinery/power/apc)) - A.add_fingerprint(H) - drain("APC",A,suit) - return 1 - if(istype(A,/obj/structure/cable)) - A.add_fingerprint(H) - drain("WIRE",A,suit) - return 1 - if(istype(A,/obj/structure/grille)) - var/obj/structure/cable/C = locate() in A.loc - if(C) - drain("WIRE",C,suit) - return 1 - if(istype(A,/obj/machinery/power/smes)) - A.add_fingerprint(H) - drain("SMES",A,suit) - return 1 - if(istype(A,/obj/mecha)) - A.add_fingerprint(H) - drain("MECHA",A,suit) - return 1 - - // download research - if(istype(A,/obj/machinery/computer/rdconsole)) - A.add_fingerprint(H) - drain("RESEARCH",A,suit) - return 1 - if(istype(A,/obj/machinery/r_n_d/server)) - A.add_fingerprint(H) - var/obj/machinery/r_n_d/server/S = A - if(S.disabled) - return 1 - if(S.shocked) - S.shock(H,50) - return 1 - drain("RESEARCH",A,suit) - return 1 - +/* + Dear ninja gloves + + This isn't because I like you + this is because your father is a bastard + + ... + I guess you're a little cool. + -Sayu +*/ + +/obj/item/clothing/gloves/space_ninja + desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." + name = "ninja gloves" + icon_state = "s-ninja" + item_state = "s-ninja" + siemens_coefficient = 0 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + var/draining = 0 + var/candrain = 0 + var/mindrain = 200 + var/maxdrain = 400 + +/* + This runs the gamut of what ninja gloves can do + The other option would be a dedicated ninja touch bullshit proc on everything + which would probably more efficient, but ninjas are pretty rare. + This was mostly introduced to keep ninja code from contaminating other code; + with this in place it would be easier to untangle the rest of it. + + For the drain proc, see events/ninja.dm +*/ +/obj/item/clothing/gloves/space_ninja/Touch(var/atom/A,var/proximity) + if(!candrain || draining) return 0 + + var/mob/living/carbon/human/H = loc + if(!istype(H)) return 0 // what + var/obj/item/clothing/suit/space/space_ninja/suit = H.wear_suit + if(!istype(suit)) return 0 + if(isturf(A)) return 0 + + if(!proximity) // todo: you could add ninja stars or computer hacking here + return 0 + + // Move an AI into and out of things + if(istype(A,/mob/living/silicon/ai)) + if(suit.s_control) + A.add_fingerprint(H) + suit.transfer_ai("AICORE", "NINJASUIT", A, H) + return 1 + else + H << "\red ERROR: \black Remote access channel disabled." + return 0 + + if(istype(A,/obj/structure/AIcore/deactivated)) + if(suit.s_control) + A.add_fingerprint(H) + suit.transfer_ai("INACTIVE","NINJASUIT",A, H) + return 1 + else + H << "\red ERROR: \black Remote access channel disabled." + return 0 + if(istype(A,/obj/machinery/computer/aifixer)) + if(suit.s_control) + A.add_fingerprint(H) + suit.transfer_ai("AIFIXER","NINJASUIT",A, H) + return 1 + else + H << "\red ERROR: \black Remote access channel disabled." + return 0 + + // steal energy from powered things + if(istype(A,/mob/living/silicon/robot)) + A.add_fingerprint(H) + drain("CYBORG",A,suit) + return 1 + if(istype(A,/obj/machinery/power/apc)) + A.add_fingerprint(H) + drain("APC",A,suit) + return 1 + if(istype(A,/obj/structure/cable)) + A.add_fingerprint(H) + drain("WIRE",A,suit) + return 1 + if(istype(A,/obj/structure/grille)) + var/obj/structure/cable/C = locate() in A.loc + if(C) + drain("WIRE",C,suit) + return 1 + if(istype(A,/obj/machinery/power/smes)) + A.add_fingerprint(H) + drain("SMES",A,suit) + return 1 + if(istype(A,/obj/mecha)) + A.add_fingerprint(H) + drain("MECHA",A,suit) + return 1 + + // download research + if(istype(A,/obj/machinery/computer/rdconsole)) + A.add_fingerprint(H) + drain("RESEARCH",A,suit) + return 1 + if(istype(A,/obj/machinery/r_n_d/server)) + A.add_fingerprint(H) + var/obj/machinery/r_n_d/server/S = A + if(S.disabled) + return 1 + if(S.shocked) + S.shock(H,50) + return 1 + drain("RESEARCH",A,suit) + return 1 + diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 5136b123598..012b4872c18 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -55,4 +55,4 @@ if(voicechange) if(!(copytext(message, 1, 2) == "*" || (usr.mind && usr.mind.changeling && (copytext(message, 1, 3) == ":g" || copytext(message, 1, 3) == ":G" || copytext(message, 1, 3) == ":ï")))) message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") - return message + return message diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index dc47b5e80c6..94827daf93c 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -104,4 +104,4 @@ if(C.shoes == src && src.chained == 1) user << "You need help taking these off!" return - ..() + ..() diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index 04b8529dac9..f1f3cc44185 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -1,40 +1,40 @@ -/datum/round_event_control/anomaly - name = "Energetic Flux" - typepath = /datum/round_event/anomaly - max_occurrences = 0 //This one probably shouldn't occur! It'd work, but it wouldn't be very fun. - weight = 15 - -/datum/round_event/anomaly - var/area/impact_area - var/obj/effect/anomaly/newAnomaly - - -/datum/round_event/anomaly/setup(loop=0) - var/safety_loop = loop + 1 - if(safety_loop > 50) - kill() - end() - impact_area = findEventArea() - if(!impact_area) - setup(safety_loop) - var/list/turf_test = get_area_turfs(impact_area) - if(!turf_test.len) - setup(safety_loop) - -/datum/round_event/anomaly/announce() - command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") - -/datum/round_event/anomaly/start() - var/turf/T = pick(get_area_turfs(impact_area)) - if(T) - newAnomaly = new /obj/effect/anomaly/flux(T.loc) - -/datum/round_event/anomaly/tick() - if(!newAnomaly) - kill() - return - newAnomaly.anomalyEffect() - -/datum/round_event/anomaly/end() - if(newAnomaly)//Kill the anomaly if it still exists at the end. +/datum/round_event_control/anomaly + name = "Energetic Flux" + typepath = /datum/round_event/anomaly + max_occurrences = 0 //This one probably shouldn't occur! It'd work, but it wouldn't be very fun. + weight = 15 + +/datum/round_event/anomaly + var/area/impact_area + var/obj/effect/anomaly/newAnomaly + + +/datum/round_event/anomaly/setup(loop=0) + var/safety_loop = loop + 1 + if(safety_loop > 50) + kill() + end() + impact_area = findEventArea() + if(!impact_area) + setup(safety_loop) + var/list/turf_test = get_area_turfs(impact_area) + if(!turf_test.len) + setup(safety_loop) + +/datum/round_event/anomaly/announce() + command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") + +/datum/round_event/anomaly/start() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) + newAnomaly = new /obj/effect/anomaly/flux(T.loc) + +/datum/round_event/anomaly/tick() + if(!newAnomaly) + kill() + return + newAnomaly.anomalyEffect() + +/datum/round_event/anomaly/end() + if(newAnomaly)//Kill the anomaly if it still exists at the end. qdel(newAnomaly) \ No newline at end of file diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index 45e80c6d733..9d7ada2d60d 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -1,19 +1,19 @@ -/datum/round_event_control/anomaly/anomaly_grav - name = "Gravitational Anomaly" - typepath = /datum/round_event/anomaly/anomaly_grav - max_occurrences = 2 - weight = 15 - -/datum/round_event/anomaly/anomaly_grav - startWhen = 3 - announceWhen = 20 - endWhen = 50 - - -/datum/round_event/anomaly/anomaly_grav/announce() - command_alert("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - -/datum/round_event/anomaly/anomaly_grav/start() - var/turf/T = pick(get_area_turfs(impact_area)) - if(T) +/datum/round_event_control/anomaly/anomaly_grav + name = "Gravitational Anomaly" + typepath = /datum/round_event/anomaly/anomaly_grav + max_occurrences = 2 + weight = 15 + +/datum/round_event/anomaly/anomaly_grav + startWhen = 3 + announceWhen = 20 + endWhen = 50 + + +/datum/round_event/anomaly/anomaly_grav/announce() + command_alert("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + +/datum/round_event/anomaly/anomaly_grav/start() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) newAnomaly = new /obj/effect/anomaly/grav(T.loc) \ No newline at end of file diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index c258cff6c8b..270ebed2aed 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -1,26 +1,26 @@ -/datum/round_event_control/anomaly/anomaly_pyro - name = "Pyroclastic Anomaly" - typepath = /datum/round_event/anomaly/anomaly_pyro - max_occurrences = 2 - weight = 15 - -/datum/round_event/anomaly/anomaly_pyro - startWhen = 10 - announceWhen = 3 - endWhen = 70 - - -/datum/round_event/anomaly/anomaly_pyro/announce() - command_alert("Atmospheric anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - -/datum/round_event/anomaly/anomaly_pyro/start() - var/turf/T = pick(get_area_turfs(impact_area)) - if(T) - newAnomaly = new /obj/effect/anomaly/pyro(T.loc) - -/datum/round_event/anomaly/anomaly_pyro/tick() - if(!newAnomaly) - kill() - return - if(IsMultiple(activeFor, 5)) +/datum/round_event_control/anomaly/anomaly_pyro + name = "Pyroclastic Anomaly" + typepath = /datum/round_event/anomaly/anomaly_pyro + max_occurrences = 2 + weight = 15 + +/datum/round_event/anomaly/anomaly_pyro + startWhen = 10 + announceWhen = 3 + endWhen = 70 + + +/datum/round_event/anomaly/anomaly_pyro/announce() + command_alert("Atmospheric anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + +/datum/round_event/anomaly/anomaly_pyro/start() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) + newAnomaly = new /obj/effect/anomaly/pyro(T.loc) + +/datum/round_event/anomaly/anomaly_pyro/tick() + if(!newAnomaly) + kill() + return + if(IsMultiple(activeFor, 5)) newAnomaly.anomalyEffect() \ No newline at end of file diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index 4fe6d440691..b97310c4ece 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -1,19 +1,19 @@ -/datum/round_event_control/anomaly/anomaly_vortex - name = "Vortex Anomaly" - typepath = /datum/round_event/anomaly/anomaly_vortex - max_occurrences = 5 - weight = 2 - -/datum/round_event/anomaly/anomaly_vortex - startWhen = 10 - announceWhen = 3 - endWhen = 80 - - -/datum/round_event/anomaly/anomaly_vortex/announce() - command_alert("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") - -/datum/round_event/anomaly/anomaly_vortex/start() - var/turf/T = pick(get_area_turfs(impact_area)) - if(T) +/datum/round_event_control/anomaly/anomaly_vortex + name = "Vortex Anomaly" + typepath = /datum/round_event/anomaly/anomaly_vortex + max_occurrences = 5 + weight = 2 + +/datum/round_event/anomaly/anomaly_vortex + startWhen = 10 + announceWhen = 3 + endWhen = 80 + + +/datum/round_event/anomaly/anomaly_vortex/announce() + command_alert("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") + +/datum/round_event/anomaly/anomaly_vortex/start() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) newAnomaly = new /obj/effect/anomaly/bhole(T.loc) \ No newline at end of file diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index 4ecc8db3cb0..2fb4b050b48 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -1,16 +1,16 @@ -/datum/round_event_control/falsealarm - name = "False Alarm" - typepath = /datum/round_event/falsealarm - weight = 9 - max_occurrences = 5 - -/datum/round_event/falsealarm - announceWhen = 0 - endWhen = 1 - -/datum/round_event/falsealarm/announce() - var/datum/round_event_control/E = pick(events.control) - var/datum/round_event/Event = new E.typepath() - message_admins("False Alarm: [Event]") - Event.kill() //do not process this event - no starts, no ticks, no ends +/datum/round_event_control/falsealarm + name = "False Alarm" + typepath = /datum/round_event/falsealarm + weight = 9 + max_occurrences = 5 + +/datum/round_event/falsealarm + announceWhen = 0 + endWhen = 1 + +/datum/round_event/falsealarm/announce() + var/datum/round_event_control/E = pick(events.control) + var/datum/round_event/Event = new E.typepath() + message_admins("False Alarm: [Event]") + Event.kill() //do not process this event - no starts, no ticks, no ends Event.announce() //just announce it like it's happening \ No newline at end of file diff --git a/code/modules/events/holiday/friday13th.dm b/code/modules/events/holiday/friday13th.dm index ac28aed256d..a227cb6f611 100644 --- a/code/modules/events/holiday/friday13th.dm +++ b/code/modules/events/holiday/friday13th.dm @@ -1,18 +1,18 @@ -// Basically, cut the event frequency in half to simulate unluckiness. - -/datum/round_event_control/fridaythethirteen - name = "Friday the 13th" - holidayID = "Friday the 13th" - typepath = /datum/round_event/fridaythethirteen - weight = -1 - max_occurrences = 1 - earliest_start = 0 - -/datum/round_event/fridaythethirteen/start() - //Very unlucky, cut the frequency of events in half. - events.frequency_lower /= 2 - events.frequency_upper /= 2 - -/datum/round_event/fridaythethirteen/announce() - for(var/mob/living/L in player_list) +// Basically, cut the event frequency in half to simulate unluckiness. + +/datum/round_event_control/fridaythethirteen + name = "Friday the 13th" + holidayID = "Friday the 13th" + typepath = /datum/round_event/fridaythethirteen + weight = -1 + max_occurrences = 1 + earliest_start = 0 + +/datum/round_event/fridaythethirteen/start() + //Very unlucky, cut the frequency of events in half. + events.frequency_lower /= 2 + events.frequency_upper /= 2 + +/datum/round_event/fridaythethirteen/announce() + for(var/mob/living/L in player_list) L << "You are feeling unlucky today." \ No newline at end of file diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm index 4de36c08ca4..56b5458ca8f 100644 --- a/code/modules/events/holiday/halloween.dm +++ b/code/modules/events/holiday/halloween.dm @@ -1,17 +1,17 @@ -/datum/round_event_control/spooky - name = "2 SPOOKY!" - holidayID = "Halloween" - typepath = /datum/round_event/spooky - weight = -1 //forces it to be called, regardless of weight - max_occurrences = 1 - earliest_start = 0 - -/datum/round_event/spooky/start() - for(var/mob/living/carbon/human/H in mob_list) - if(H.dna) - hardset_dna(H, null, null, null, "skeleton") - for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) - Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian)) - -/datum/round_event/spooky/announce() +/datum/round_event_control/spooky + name = "2 SPOOKY!" + holidayID = "Halloween" + typepath = /datum/round_event/spooky + weight = -1 //forces it to be called, regardless of weight + max_occurrences = 1 + earliest_start = 0 + +/datum/round_event/spooky/start() + for(var/mob/living/carbon/human/H in mob_list) + if(H.dna) + hardset_dna(H, null, null, null, "skeleton") + for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) + Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian)) + +/datum/round_event/spooky/announce() command_alert(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") \ No newline at end of file diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 50393dab127..ef47bc8df91 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -1,206 +1,206 @@ -#define HIJACK_SYNDIE 1 -#define RUSKY_PARTY 2 -#define SPIDER_GIFT 3 -#define DEPARTMENT_RESUPPLY 4 - -/datum/round_event_control/shuttle_loan - name = "Shuttle loan" - typepath = /datum/round_event/shuttle_loan - max_occurrences = 1 - earliest_start = 0 - -/datum/round_event/shuttle_loan - endWhen = 500 - var/dispatch_type = 4 - var/bonus_points = 100 - var/thanks_msg = "Have some supply points as thanks (the shuttle will be returned in 5 minutes)." - var/dispatched = 0 - -/datum/round_event/shuttle_loan/start() - dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY) - -/datum/round_event/shuttle_loan/announce() - supply_shuttle.shuttle_loan = src - switch(dispatch_type) - if(HIJACK_SYNDIE) - command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") - if(RUSKY_PARTY) - command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") - if(SPIDER_GIFT) - command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") - if(DEPARTMENT_RESUPPLY) - command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") - thanks_msg = "The shuttle will be returned in 5 minutes." - bonus_points = 0 - -/datum/round_event/shuttle_loan/proc/loan_shuttle() - command_alert(thanks_msg, "Cargo shuttle commandeered by Centcom.") - - dispatched = 1 - supply_shuttle.points += bonus_points - endWhen = activeFor + 1 - supply_shuttle.eta_timeofday = (world.timeofday + 3000) % 2160000 - supply_shuttle.moving = 1 - - switch(dispatch_type) - if(HIJACK_SYNDIE) - supply_shuttle.centcom_message += "Syndicate hijack team incoming." - if(RUSKY_PARTY) - supply_shuttle.centcom_message += "Partying Russians incoming." - if(SPIDER_GIFT) - supply_shuttle.centcom_message += "Spider Clan gift incoming." - if(DEPARTMENT_RESUPPLY) - supply_shuttle.centcom_message += "Department resupply incoming." - -/datum/round_event/shuttle_loan/tick() - if(dispatched) - if(supply_shuttle.moving) - endWhen = activeFor - else - endWhen = activeFor + 1 - -/datum/round_event/shuttle_loan/end() - if(supply_shuttle.shuttle_loan && supply_shuttle.shuttle_loan.dispatched) - //make sure the shuttle was dispatched in time - supply_shuttle.shuttle_loan = null - - //spawn some stuff as reward - var/area/shuttle_at = locate(SUPPLY_DOCK_AREATYPE) - var/list/empty_shuttle_turfs = list() - for(var/turf/simulated/shuttle/T in shuttle_at) - if(T.density) - continue - empty_shuttle_turfs.Add(T) - - var/list/shuttle_spawns = list() - switch(dispatch_type) - if(HIJACK_SYNDIE) - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = supply_shuttle.ordernum - O.object = new /datum/supply_packs/emergency/specialops() - O.orderedby = "Syndicate" - supply_shuttle.shoppinglist += O - - shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) - if(prob(75)) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) - if(prob(50)) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) - - var/turf/T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/blood(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/blood(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/blood(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/oil(T) - - if(RUSKY_PARTY) - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = supply_shuttle.ordernum - O.object = new /datum/supply_packs/organic/party() - O.orderedby = "Russian Confederation" - supply_shuttle.shoppinglist += O - - shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian/ranged) //drops a mateba - shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) - if(prob(75)) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) - if(prob(50)) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) - - var/turf/T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/vomit(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/vomit(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/vomit(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/vomit(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/ash(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/decal/cleanable/ash(T) - - if(SPIDER_GIFT) - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = supply_shuttle.ordernum - O.object = new /datum/supply_packs/emergency/specialops() - O.orderedby = "Spider Clan" - supply_shuttle.shoppinglist += O - - shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider/nurse) - if(prob(50)) - shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider/hunter) - - var/turf/T = pick(empty_shuttle_turfs) - empty_shuttle_turfs.Remove(T) - - new /obj/effect/decal/remains/human(T) - new /obj/item/clothing/shoes/space_ninja(T) - new /obj/item/clothing/mask/balaclava(T) - - T = pick(empty_shuttle_turfs) - new /obj/effect/spider/stickyweb(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/spider/stickyweb(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/spider/stickyweb(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/spider/stickyweb(T) - T = pick(empty_shuttle_turfs) - new /obj/effect/spider/stickyweb(T) - - if(DEPARTMENT_RESUPPLY) - var/list/crate_types = list() - - crate_types.Add(/datum/supply_packs/emergency/evac) - crate_types.Add(/datum/supply_packs/security/supplies) - crate_types.Add(/datum/supply_packs/organic/food) - crate_types.Add(/datum/supply_packs/emergency/weedcontrol) - crate_types.Add(/datum/supply_packs/engineering/tools) - crate_types.Add(/datum/supply_packs/engineering/engiequipment) - crate_types.Add(/datum/supply_packs/science/robotics) - crate_types.Add(/datum/supply_packs/science/plasma) - crate_types.Add(/datum/supply_packs/medical/supplies) - - while(crate_types.len > 0) - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = supply_shuttle.ordernum - O.orderedby = "Centcom" - supply_shuttle.shoppinglist += O - - var/spawn_type = crate_types[crate_types.len] - O.object = new spawn_type() - crate_types.Cut(crate_types.len, crate_types.len + 1) - - for(var/i=0,i<3,i++) - var/turf/T = pick(empty_shuttle_turfs) - var/spawn_type = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil) - new spawn_type(T) - - var/false_positive = 0 - while(shuttle_spawns.len > 0 && empty_shuttle_turfs.len > 0) - var/turf/T = pick(empty_shuttle_turfs) - if(T.contents.len && false_positive < 5) - false_positive++ - continue - - var/spawn_type = shuttle_spawns[1] - shuttle_spawns.Cut(1, 2) - empty_shuttle_turfs.Remove(T) - new spawn_type(T) - - supply_shuttle.buy() - //supply_shuttle.send() - //supply_shuttle.moving = 0 - -#undef HIJACK_SYNDIE -#undef RUSKY_PARTY -#undef SPIDER_GIFT -#undef DEPARTMENT_RESUPPLY +#define HIJACK_SYNDIE 1 +#define RUSKY_PARTY 2 +#define SPIDER_GIFT 3 +#define DEPARTMENT_RESUPPLY 4 + +/datum/round_event_control/shuttle_loan + name = "Shuttle loan" + typepath = /datum/round_event/shuttle_loan + max_occurrences = 1 + earliest_start = 0 + +/datum/round_event/shuttle_loan + endWhen = 500 + var/dispatch_type = 4 + var/bonus_points = 100 + var/thanks_msg = "Have some supply points as thanks (the shuttle will be returned in 5 minutes)." + var/dispatched = 0 + +/datum/round_event/shuttle_loan/start() + dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY) + +/datum/round_event/shuttle_loan/announce() + supply_shuttle.shuttle_loan = src + switch(dispatch_type) + if(HIJACK_SYNDIE) + command_alert("The syndicate are trying to infiltrate your station. If you let them hijack your shuttle, you'll save us a headache.","Centcom Counter Intelligence") + if(RUSKY_PARTY) + command_alert("A group of angry russians want to have a party, can you send them your cargo shuttle then make them disappear?","Centcom Russian Outreach Program") + if(SPIDER_GIFT) + command_alert("The Spider Clan has sent us a mysterious gift, can we ship it to you to see what's inside?","Centcom Diplomatic Corps") + if(DEPARTMENT_RESUPPLY) + command_alert("Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","Centcom Supply Department") + thanks_msg = "The shuttle will be returned in 5 minutes." + bonus_points = 0 + +/datum/round_event/shuttle_loan/proc/loan_shuttle() + command_alert(thanks_msg, "Cargo shuttle commandeered by Centcom.") + + dispatched = 1 + supply_shuttle.points += bonus_points + endWhen = activeFor + 1 + supply_shuttle.eta_timeofday = (world.timeofday + 3000) % 2160000 + supply_shuttle.moving = 1 + + switch(dispatch_type) + if(HIJACK_SYNDIE) + supply_shuttle.centcom_message += "Syndicate hijack team incoming." + if(RUSKY_PARTY) + supply_shuttle.centcom_message += "Partying Russians incoming." + if(SPIDER_GIFT) + supply_shuttle.centcom_message += "Spider Clan gift incoming." + if(DEPARTMENT_RESUPPLY) + supply_shuttle.centcom_message += "Department resupply incoming." + +/datum/round_event/shuttle_loan/tick() + if(dispatched) + if(supply_shuttle.moving) + endWhen = activeFor + else + endWhen = activeFor + 1 + +/datum/round_event/shuttle_loan/end() + if(supply_shuttle.shuttle_loan && supply_shuttle.shuttle_loan.dispatched) + //make sure the shuttle was dispatched in time + supply_shuttle.shuttle_loan = null + + //spawn some stuff as reward + var/area/shuttle_at = locate(SUPPLY_DOCK_AREATYPE) + var/list/empty_shuttle_turfs = list() + for(var/turf/simulated/shuttle/T in shuttle_at) + if(T.density) + continue + empty_shuttle_turfs.Add(T) + + var/list/shuttle_spawns = list() + switch(dispatch_type) + if(HIJACK_SYNDIE) + var/datum/supply_order/O = new /datum/supply_order() + O.ordernum = supply_shuttle.ordernum + O.object = new /datum/supply_packs/emergency/specialops() + O.orderedby = "Syndicate" + supply_shuttle.shoppinglist += O + + shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) + if(prob(75)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) + if(prob(50)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) + + var/turf/T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/blood(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/blood(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/blood(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/oil(T) + + if(RUSKY_PARTY) + var/datum/supply_order/O = new /datum/supply_order() + O.ordernum = supply_shuttle.ordernum + O.object = new /datum/supply_packs/organic/party() + O.orderedby = "Russian Confederation" + supply_shuttle.shoppinglist += O + + shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian/ranged) //drops a mateba + shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) + if(prob(75)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) + if(prob(50)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) + + var/turf/T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/vomit(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/vomit(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/vomit(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/vomit(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/ash(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/decal/cleanable/ash(T) + + if(SPIDER_GIFT) + var/datum/supply_order/O = new /datum/supply_order() + O.ordernum = supply_shuttle.ordernum + O.object = new /datum/supply_packs/emergency/specialops() + O.orderedby = "Spider Clan" + supply_shuttle.shoppinglist += O + + shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider/nurse) + if(prob(50)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/giant_spider/hunter) + + var/turf/T = pick(empty_shuttle_turfs) + empty_shuttle_turfs.Remove(T) + + new /obj/effect/decal/remains/human(T) + new /obj/item/clothing/shoes/space_ninja(T) + new /obj/item/clothing/mask/balaclava(T) + + T = pick(empty_shuttle_turfs) + new /obj/effect/spider/stickyweb(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/spider/stickyweb(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/spider/stickyweb(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/spider/stickyweb(T) + T = pick(empty_shuttle_turfs) + new /obj/effect/spider/stickyweb(T) + + if(DEPARTMENT_RESUPPLY) + var/list/crate_types = list() + + crate_types.Add(/datum/supply_packs/emergency/evac) + crate_types.Add(/datum/supply_packs/security/supplies) + crate_types.Add(/datum/supply_packs/organic/food) + crate_types.Add(/datum/supply_packs/emergency/weedcontrol) + crate_types.Add(/datum/supply_packs/engineering/tools) + crate_types.Add(/datum/supply_packs/engineering/engiequipment) + crate_types.Add(/datum/supply_packs/science/robotics) + crate_types.Add(/datum/supply_packs/science/plasma) + crate_types.Add(/datum/supply_packs/medical/supplies) + + while(crate_types.len > 0) + var/datum/supply_order/O = new /datum/supply_order() + O.ordernum = supply_shuttle.ordernum + O.orderedby = "Centcom" + supply_shuttle.shoppinglist += O + + var/spawn_type = crate_types[crate_types.len] + O.object = new spawn_type() + crate_types.Cut(crate_types.len, crate_types.len + 1) + + for(var/i=0,i<3,i++) + var/turf/T = pick(empty_shuttle_turfs) + var/spawn_type = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil) + new spawn_type(T) + + var/false_positive = 0 + while(shuttle_spawns.len > 0 && empty_shuttle_turfs.len > 0) + var/turf/T = pick(empty_shuttle_turfs) + if(T.contents.len && false_positive < 5) + false_positive++ + continue + + var/spawn_type = shuttle_spawns[1] + shuttle_spawns.Cut(1, 2) + empty_shuttle_turfs.Remove(T) + new spawn_type(T) + + supply_shuttle.buy() + //supply_shuttle.send() + //supply_shuttle.moving = 0 + +#undef HIJACK_SYNDIE +#undef RUSKY_PARTY +#undef SPIDER_GIFT +#undef DEPARTMENT_RESUPPLY diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 13c0cd78089..51e62dd24f1 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -1,40 +1,40 @@ -/datum/round_event_control/vent_clog - name = "Clogged Vents" - typepath = /datum/round_event/vent_clog - weight = 35 - -/datum/round_event/vent_clog - announceWhen = 0 - startWhen = 5 - endWhen = 35 - var/interval = 2 - var/list/vents = list() - -/datum/round_event/vent_clog/announce() - command_alert("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") - - -/datum/round_event/vent_clog/setup() - endWhen = rand(25, 100) - for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in machines) - if(temp_vent.loc.z == 1 && temp_vent.network) - if(temp_vent.network.normal_members.len > 20) - vents += temp_vent - if(!vents.len) - return kill() - -/datum/round_event/vent_clog/tick() - if(activeFor % interval == 0) - var/obj/vent = pick_n_take(vents) - if(vent && vent.loc) - var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", - "plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid") - var/datum/reagents/R = new/datum/reagents(50) - R.my_atom = vent - R.add_reagent(pick(gunk), 50) - - var/datum/effect/effect/system/chem_smoke_spread/smoke = new - smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) - playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - smoke.start() +/datum/round_event_control/vent_clog + name = "Clogged Vents" + typepath = /datum/round_event/vent_clog + weight = 35 + +/datum/round_event/vent_clog + announceWhen = 0 + startWhen = 5 + endWhen = 35 + var/interval = 2 + var/list/vents = list() + +/datum/round_event/vent_clog/announce() + command_alert("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") + + +/datum/round_event/vent_clog/setup() + endWhen = rand(25, 100) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in machines) + if(temp_vent.loc.z == 1 && temp_vent.network) + if(temp_vent.network.normal_members.len > 20) + vents += temp_vent + if(!vents.len) + return kill() + +/datum/round_event/vent_clog/tick() + if(activeFor % interval == 0) + var/obj/vent = pick_n_take(vents) + if(vent && vent.loc) + var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", + "plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid") + var/datum/reagents/R = new/datum/reagents(50) + R.my_atom = vent + R.add_reagent(pick(gunk), 50) + + var/datum/effect/effect/system/chem_smoke_spread/smoke = new + smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) + playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) + smoke.start() R.delete() //GC the reagents \ No newline at end of file diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index df93376c4f3..758bd4c27af 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -182,4 +182,4 @@ obj/machinery/seed_extractor/proc/add(var/obj/item/seeds/O as obj) return piles += new /datum/seed_pile(O.plantname, O.lifespan, O.endurance, O.maturation, O.production, O.yield, O.potency) - return + return diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index f5ca649a1a9..be74be45780 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -1,677 +1,677 @@ -/**********************Ore Redemption Unit**************************/ -//Turns all the various mining machines into a single unit to speed up mining and establish a point system - -/obj/machinery/mineral/ore_redemption - name = "ore redemption machine" - desc = "A machine that accepts ore and instantly transforms it into workable material sheets, but cannot produce alloys such as Plasteel. Points for ore are generated based on type and can be redeemed at a mining equipment locker." - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "ore_redemption" - density = 1 - anchored = 1.0 - input_dir = WEST - output_dir = SOUTH - req_one_access = list(access_mining_station, access_chemistry, access_bar, access_research, access_ce, access_virology) - var/stk_types = list() - var/stk_amt = list() - var/stack_list[0] //Key: Type. Value: Instance of type. - var/obj/item/weapon/card/id/inserted_id - var/points = 0 - var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("bananium" = 30), ("diamond" = 40), ("plasma" = 40)) - -/obj/machinery/mineral/ore_redemption/proc/process_sheet(obj/item/weapon/ore/O) - var/obj/item/stack/sheet/processed_sheet = SmeltMineral(O) - if(processed_sheet) - if(!(processed_sheet in stack_list)) //It's the first of this sheet added - var/obj/item/stack/sheet/s = new processed_sheet(src,0) - s.amount = 0 - stack_list[processed_sheet] = s - var/obj/item/stack/sheet/storage = stack_list[processed_sheet] - storage.amount += 1 //Stack the sheets - O.loc = null //Let the old sheet garbage collect - -/obj/machinery/mineral/ore_redemption/process() - var/turf/T = get_turf(get_step(src, input_dir)) - var/i - if(T) - if(locate(/obj/item/weapon/ore) in T) - for (i = 0; i < 10; i++) - var/obj/item/weapon/ore/O = locate() in T - if(O) - process_sheet(O) - else - break - else - var/obj/structure/ore_box/B = locate() in T - if(B) - for (i = 0; i < 10; i++) - var/obj/item/weapon/ore/O = locate() in B.contents - if(O) - process_sheet(O) - else - break - -/obj/machinery/mineral/ore_redemption/attackby(var/obj/item/weapon/W, var/mob/user) - if(istype(W,/obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/I = usr.get_active_hand() - if(istype(I) && !istype(inserted_id)) - usr.drop_item() - I.loc = src - inserted_id = I - interact(user) - -/obj/machinery/mineral/ore_redemption/proc/SmeltMineral(var/obj/item/weapon/ore/O) - if(O.refined_type) - var/obj/item/stack/sheet/M = O.refined_type - points += O.points - return M - qdel(O)//No refined type? Purge it. - return - -/obj/machinery/mineral/ore_redemption/attack_hand(user as mob) - if(..()) - return - interact(user) - -/obj/machinery/mineral/ore_redemption/interact(mob/user) - var/obj/item/stack/sheet/s - var/dat - - dat += text("Ore Redemption Machine

    ") - dat += text("This machine only accepts ore. Gibtonite and Slag are not accepted.

    ") - dat += text("Current unclaimed points: [points]
    ") - - if(istype(inserted_id)) - dat += text("You have [inserted_id.mining_points] mining points collected. Eject ID.
    ") - dat += text("Claim points.
    ") - else - dat += text("No ID inserted. Insert ID.
    ") - - for(var/O in stack_list) - s = stack_list[O] - if(s.amount > 0) - dat += text("[capitalize(s.name)]: [s.amount] Release
    ") - - dat += text("
    Mineral Value List:
    [get_ore_values()]") - - user << browse("[dat]", "window=console_stacking_machine") - - return - -/obj/machinery/mineral/ore_redemption/proc/get_ore_values() - var/dat = "" - for(var/ore in ore_values) - var/value = ore_values[ore] - dat += "" - dat += "
    [capitalize(ore)][value]
    " - return dat - -/obj/machinery/mineral/ore_redemption/Topic(href, href_list) - if(..()) - return - if(href_list["choice"]) - if(istype(inserted_id)) - if(href_list["choice"] == "eject") - inserted_id.loc = loc - inserted_id.verb_pickup() - inserted_id = null - if(href_list["choice"] == "claim") - if(access_mining_station in inserted_id.access) - inserted_id.mining_points += points - points = 0 - else - usr << "Required access not found." - else if(href_list["choice"] == "insert") - var/obj/item/weapon/card/id/I = usr.get_active_hand() - if(istype(I)) - usr.drop_item() - I.loc = src - inserted_id = I - else usr << "No valid ID." - if(href_list["release"] && istype(inserted_id)) - if(check_access(inserted_id)) - if(!(text2path(href_list["release"]) in stack_list)) return - var/obj/item/stack/sheet/inp = stack_list[text2path(href_list["release"])] - var/obj/item/stack/sheet/out = new inp.type() - var/desired = input("How much?", "How much to eject?", 1) as num - out.amount = min(desired,50,inp.amount) - if(out.amount >= 1) - inp.amount -= out.amount - unload_mineral(out) - else - usr << "Required access not found." - updateUsrDialog() - return - -/obj/machinery/mineral/ore_redemption/ex_act() - return //So some chucklefuck doesn't ruin miners reward with an explosion - -/**********************Mining Equipment Locker**************************/ - -/obj/machinery/mineral/equipment_locker - name = "mining equipment locker" - desc = "An equipment locker for miners, points collected at an ore redemption machine can be spent here." - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "mining" - density = 1 - anchored = 1.0 - var/obj/item/weapon/card/id/inserted_id - var/list/prize_list = list( - new /datum/data/mining_equipment("Chili", /obj/item/weapon/reagent_containers/food/snacks/hotchili, 100), - new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 100), - new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 150), - new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 150), - new /datum/data/mining_equipment("Stimulant pills", /obj/item/weapon/storage/pill_bottle/stimulant, 350), - new /datum/data/mining_equipment("Alien toy", /obj/item/clothing/mask/facehugger/toy, 250), - new /datum/data/mining_equipment("Laser pointer", /obj/item/device/laser_pointer, 500), - new /datum/data/mining_equipment("Point card", /obj/item/weapon/card/mining_point_card, 500), - new /datum/data/mining_equipment("Lazarus injector", /obj/item/weapon/lazarus_injector, 1000), - new /datum/data/mining_equipment("Space cash", /obj/item/weapon/spacecash/c1000, 5000), - new /datum/data/mining_equipment("Sonic jackhammer", /obj/item/weapon/pickaxe/jackhammer, 500), - new /datum/data/mining_equipment("Mining drone", /mob/living/simple_animal/hostile/mining_drone/, 500), - new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 200), - new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 750), - new /datum/data/mining_equipment("Kinetic accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 1000), - new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), - ) - -/datum/data/mining_equipment/ - var/equipment_name = "generic" - var/equipment_path = null - var/cost = 0 - -/datum/data/mining_equipment/New(name, path, cost) - src.equipment_name = name - src.equipment_path = path - src.cost = cost - -/obj/machinery/mineral/equipment_locker/attack_hand(user as mob) - if(..()) - return - interact(user) - -/obj/machinery/mineral/equipment_locker/interact(mob/user) - var/dat - dat += text("Mining Equipment Locker

    ") - - if(istype(inserted_id)) - dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " - else - dat += "No ID inserted. Insert ID.
    " - - dat += "
    Equipment point cost list:
    " - for(var/datum/data/mining_equipment/prize in prize_list) - dat += "" - dat += "
    [prize.equipment_name][prize.cost]Purchase
    " - - user << browse("[dat]", "window=mining_equipment_locker") - return - -/obj/machinery/mineral/equipment_locker/Topic(href, href_list) - if(..()) - return - if(href_list["choice"]) - if(istype(inserted_id)) - if(href_list["choice"] == "eject") - inserted_id.loc = loc - inserted_id.verb_pickup() - inserted_id = null - else if(href_list["choice"] == "insert") - var/obj/item/weapon/card/id/I = usr.get_active_hand() - if(istype(I)) - usr.drop_item() - I.loc = src - inserted_id = I - else usr << "\red No valid ID." - if(href_list["purchase"]) - if(istype(inserted_id)) - var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) - if (!prize || !(prize in prize_list)) - return - if(prize.cost > inserted_id.mining_points) - else - inserted_id.mining_points -= prize.cost - new prize.equipment_path(src.loc) - updateUsrDialog() - return - -/obj/machinery/mineral/equipment_locker/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/mining_voucher)) - RedeemVoucher(I, user) - return - if(istype(I,/obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/C = usr.get_active_hand() - if(istype(C) && !istype(inserted_id)) - usr.drop_item() - C.loc = src - inserted_id = C - interact(user) - return - ..() - -/obj/machinery/mineral/equipment_locker/proc/RedeemVoucher(voucher, redeemer) - var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") in list("Resonator", "Kinetic Accelerator", "Mining Drone", "Cancel") - if(!selection || !Adjacent(redeemer) || !voucher) - return - switch(selection) - if("Resonator") - new /obj/item/weapon/resonator(src.loc) - if("Kinetic Accelerator") - new /obj/item/weapon/gun/energy/kinetic_accelerator(src.loc) - if("Mining Drone") - new /mob/living/simple_animal/hostile/mining_drone(src.loc) - new /obj/item/weapon/weldingtool/hugetank(src.loc) - if("Cancel") - return - qdel(voucher) - -/obj/machinery/mineral/equipment_locker/ex_act() - return - -/**********************Mining Equipment Locker Items**************************/ - -/**********************Mining Equipment Voucher**********************/ - -/obj/item/weapon/mining_voucher - name = "mining voucher" - desc = "A token to redeem a piece of equipment. Use it on a mining equipment locker." - icon = 'icons/obj/items.dmi' - icon_state = "mining_voucher" - w_class = 1 - -/**********************Mining Point Card**********************/ - -/obj/item/weapon/card/mining_point_card - name = "mining point card" - desc = "A small card preloaded with mining points. Swipe your ID card over it to transfer the points, then discard." - icon_state = "data" - var/points = 500 - -/obj/item/weapon/card/mining_point_card/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/card/id)) - if(points) - var/obj/item/weapon/card/id/C = I - C.mining_points += points - user << "You transfer [points] points to [C]." - points = 0 - else - user << "There's no points left on [src]." - ..() - -/obj/item/weapon/card/mining_point_card/examine() - ..() - usr << "There's [points] points on the card." - -/**********************Jaunter**********************/ - -/obj/item/device/wormhole_jaunter - name = "wormhole jaunter" - desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least." - icon = 'icons/obj/items.dmi' - icon_state = "Jaunter" - item_state = "electronic" - throwforce = 0 - w_class = 2.0 - throw_speed = 3 - throw_range = 5 - origin_tech = "bluespace=2" - -/obj/item/device/wormhole_jaunter/attack_self(mob/user as mob) - var/turf/device_turf = get_turf(user) - if(!device_turf||device_turf.z==2||device_turf.z>=7) - user << "You're having difficulties getting the [src.name] to work." - return - else - user.visible_message("[user.name] activates the [src.name]!") - var/list/L = list() - for(var/obj/item/device/radio/beacon/B in world) - var/turf/T = get_turf(B) - if(T.z == 1) - L += B - if(!L.len) - user << "The [src.name] failed to create a wormhole." - return - var/chosen_beacon = pick(L) - var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) - J.target = chosen_beacon - try_move_adjacent(J) - playsound(src,'sound/effects/sparks4.ogg',50,1) - qdel(src) - -/obj/effect/portal/wormhole/jaunt_tunnel - name = "jaunt tunnel" - icon = 'icons/effects/effects.dmi' - icon_state = "bhole3" - desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." - -/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) - if(istype(M, /obj/effect)) - return - if(istype(M, /atom/movable)) - do_teleport(M, target, 6) - if(isliving(M)) - var/mob/living/L = M - L.Weaken(3) - if(ishuman(L)) - shake_camera(L, 20, 1) - spawn(20) - if(L) - L.visible_message("[L.name] vomits from travelling through the [src.name]!") - L.nutrition -= 20 - L.adjustToxLoss(-3) - var/turf/T = get_turf(L) - T.add_vomit_floor(L) - playsound(L, 'sound/effects/splat.ogg', 50, 1) - -/**********************Resonator**********************/ - -/obj/item/weapon/resonator - name = "resonator" - icon = 'icons/obj/items.dmi' - icon_state = "resonator" - item_state = "resonator" - desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It can also be activated without a target to create a field at the user's location, to act as a delayed time trap. It's more effective in a vaccuum." - w_class = 3 - force = 10 - throwforce = 10 - var/cooldown = 0 - -/obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator) - if(cooldown <= 0) - playsound(src,'sound/effects/stealthoff.ogg',50,1) - var/obj/effect/resonance/R = new /obj/effect/resonance(get_turf(target)) - R.creator = creator - cooldown = 1 - spawn(20) - cooldown = 0 - -/obj/item/weapon/resonator/attack_self(mob/user as mob) - CreateResonance(src, user) - ..() - -/obj/item/weapon/resonator/afterattack(atom/target, mob/user, proximity_flag) - if(target in user.contents) - return - if(proximity_flag) - CreateResonance(target, user) - -/obj/effect/resonance - name = "resonance field" - desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures." - icon = 'icons/effects/effects.dmi' - icon_state = "shield1" - layer = 4.1 - mouse_opacity = 0 - var/resonance_damage = 20 - var/creator = null - -/obj/effect/resonance/New() - var/turf/proj_turf = get_turf(src) - if(!istype(proj_turf)) - return - if(istype(proj_turf, /turf/simulated/mineral)) - var/turf/simulated/mineral/M = proj_turf - playsound(src,'sound/effects/sparks4.ogg',50,1) - M.gets_drilled() - spawn(5) - qdel(src) - else - var/datum/gas_mixture/environment = proj_turf.return_air() - var/pressure = environment.return_pressure() - if(pressure < 50) - name = "strong resonance field" - resonance_damage = 45 - spawn(50) - playsound(src,'sound/effects/sparks4.ogg',50,1) - if(creator) - for(var/mob/living/L in src.loc) - add_logs(creator, L, "used a resonator field on", object="resonator") - L << "The [src.name] ruptured with you in it!" - L.adjustBruteLoss(resonance_damage) - else - for(var/mob/living/L in src.loc) - L << "The [src.name] ruptured with you in it!" - L.adjustBruteLoss(resonance_damage) - qdel(src) - -/**********************Facehugger toy**********************/ - -/obj/item/clothing/mask/facehugger/toy - desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." - throwforce = 0 - sterile = 1 - tint = 3 //Makes it feel more authentic when it latches on - -/obj/item/clothing/mask/facehugger/toy/examine()//So that giant red text about probisci doesn't show up. - if(desc) - usr << desc - -/obj/item/clothing/mask/facehugger/toy/Die() - return - -/**********************Mining drone**********************/ - -/mob/living/simple_animal/hostile/mining_drone/ - name = "nanotrasen minebot" - desc = "The instructions printed on the side read: This is a small robot used to support miners, can be set to search and collect loose ore, or to help fend off wildlife. A mining scanner can instruct it to drop loose ore. Field repairs can be done with a welder." - icon = 'icons/obj/aibots.dmi' - icon_state = "mining_drone" - icon_living = "mining_drone" - status_flags = CANSTUN|CANWEAKEN|CANPUSH - stop_automated_movement_when_pulled = 1 - mouse_opacity = 1 - faction = "neutral" - a_intent = "harm" - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - wander = 0 - idle_vision_range = 5 - move_to_delay = 10 - retreat_distance = 1 - minimum_distance = 2 - health = 125 - maxHealth = 125 - melee_damage_lower = 15 - melee_damage_upper = 15 - environment_smash = 0 - attacktext = "drills" - attack_sound = 'sound/weapons/circsawhit.ogg' - ranged = 1 - ranged_message = "shoots" - ranged_cooldown_cap = 3 - projectiletype = /obj/item/projectile/kinetic - projectilesound = 'sound/weapons/Gunshot4.ogg' - wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, - /obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron, - /obj/item/weapon/ore/clown) - -/mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - if(W.welding && !stat) - if(stance != HOSTILE_STANCE_IDLE) - user << "[src] is moving around too much to repair!" - return - if(maxHealth == health) - user << "[src] is at full integrity." - else - health += 10 - user << "You repair some of the armor on [src]." - return - if(istype(I, /obj/item/device/mining_scanner)) - user << "You instruct [src] to drop any collected ore." - DropOre() - return - ..() - -/mob/living/simple_animal/hostile/mining_drone/Die() - ..() - visible_message("[src] is destroyed!") - new /obj/effect/decal/cleanable/robot_debris(src.loc) - DropOre() - qdel(src) - return - -/mob/living/simple_animal/hostile/mining_drone/New() - ..() - SetCollectBehavior() - -/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M) - if(M.a_intent == "help") - switch(search_objects) - if(0) - SetCollectBehavior() - M << "[src] has been set to search and store loose ore." - if(2) - SetOffenseBehavior() - M << "[src] has been set to attack hostile wildlife." - return - ..() - -/mob/living/simple_animal/hostile/mining_drone/proc/SetCollectBehavior() - idle_vision_range = 9 - search_objects = 2 - wander = 1 - ranged = 0 - minimum_distance = 1 - retreat_distance = null - icon_state = "mining_drone" - -/mob/living/simple_animal/hostile/mining_drone/proc/SetOffenseBehavior() - idle_vision_range = 7 - search_objects = 0 - wander = 0 - ranged = 1 - retreat_distance = 1 - minimum_distance = 2 - icon_state = "mining_drone_offense" - -/mob/living/simple_animal/hostile/mining_drone/AttackingTarget() - if(istype(target, /obj/item/weapon/ore)) - CollectOre() - return - ..() - -/mob/living/simple_animal/hostile/mining_drone/proc/CollectOre() - var/obj/item/weapon/ore/O - for(O in src.loc) - O.loc = src - for(var/dir in alldirs) - var/turf/T = get_step(src,dir) - for(O in T) - O.loc = src - return - -/mob/living/simple_animal/hostile/mining_drone/proc/DropOre() - if(!contents.len) - return - for(var/obj/item/weapon/ore/O in contents) - contents -= O - O.loc = src.loc - return - -/mob/living/simple_animal/hostile/mining_drone/adjustBruteLoss() - if(search_objects) - SetOffenseBehavior() - ..() - -/**********************Lazarus Injector**********************/ - -/obj/item/weapon/lazarus_injector - name = "lazarus injector" - desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." - icon = 'icons/obj/syringe.dmi' - icon_state = "lazarus_hypo" - item_state = "hypo" - throwforce = 0 - w_class = 2.0 - throw_speed = 3 - throw_range = 5 - var/loaded = 1 - -/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) - if(!loaded) - return - if(istype(target, /mob/living) && proximity_flag) - if(istype(target, /mob/living/simple_animal)) - var/mob/living/simple_animal/M = target - if(M.stat == DEAD) - M.faction = "lazarus" - M.revive() - if(istype(target, /mob/living/simple_animal/hostile)) - var/mob/living/simple_animal/hostile/H = M - H.friends += user - H.attack_same = 1 //No invincible army of completely loyal mobs - log_game("[user] has revived hostile mob [target] with a lazarus injector") - loaded = 0 - user.visible_message("[user] injects [M] with [src], reviving it.") - playsound(src,'sound/effects/refill.ogg',50,1) - icon_state = "lazarus_empty" - return - else - user << "[src] is only effective on the dead." - return - else - user << "[src] is only effective on lesser beings." - return - -/obj/item/weapon/lazarus_injector/examine() - ..() - if(!loaded) - usr << "[src] is empty." - -/**********************Mining Scanner**********************/ -/obj/item/device/mining_scanner - desc = "A scanner that checks surrounding rock for useful minerals, it can also be used to stop gibtonite detonations. Requires you to wear mesons to work properly." - name = "mining scanner" - icon_state = "mining" - item_state = "analyzer" - w_class = 2.0 - flags = CONDUCT - slot_flags = SLOT_BELT - var/cooldown = 0 - -/obj/item/device/mining_scanner/attack_self(mob/user) - if(!user.client) - return - if(!cooldown) - cooldown = 1 - spawn(40) - cooldown = 0 - var/client/C = user.client - var/list/L = list() - var/turf/simulated/mineral/M - for(M in range(7, user)) - if(M.scan_state) - L += M - if(!L.len) - user << "[src] reports that nothing was detected nearby." - return - else - for(M in L) - var/turf/T = get_turf(M) - var/image/I = image('icons/turf/walls.dmi', loc = T, icon_state = M.scan_state, layer = 18) - C.images += I - spawn(30) - if(C) - C.images -= I - -/**********************Xeno Warning Sign**********************/ -/obj/structure/sign/xeno_warning_mining - name = "DANGEROUS ALIEN LIFE" - desc = "A sign that warns would be travellers of hostile alien life in the vicinity." - icon = 'icons/obj/mining.dmi' - icon_state = "xeno_warning" - -/**********************Mining Jetpack**********************/ -/obj/item/weapon/tank/jetpack/carbondioxide/mining - name = "mining jetpack" - icon_state = "jetpack-mining" - item_state = "jetpack-mining" - desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. Should not be used for internals." +/**********************Ore Redemption Unit**************************/ +//Turns all the various mining machines into a single unit to speed up mining and establish a point system + +/obj/machinery/mineral/ore_redemption + name = "ore redemption machine" + desc = "A machine that accepts ore and instantly transforms it into workable material sheets, but cannot produce alloys such as Plasteel. Points for ore are generated based on type and can be redeemed at a mining equipment locker." + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "ore_redemption" + density = 1 + anchored = 1.0 + input_dir = WEST + output_dir = SOUTH + req_one_access = list(access_mining_station, access_chemistry, access_bar, access_research, access_ce, access_virology) + var/stk_types = list() + var/stk_amt = list() + var/stack_list[0] //Key: Type. Value: Instance of type. + var/obj/item/weapon/card/id/inserted_id + var/points = 0 + var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("bananium" = 30), ("diamond" = 40), ("plasma" = 40)) + +/obj/machinery/mineral/ore_redemption/proc/process_sheet(obj/item/weapon/ore/O) + var/obj/item/stack/sheet/processed_sheet = SmeltMineral(O) + if(processed_sheet) + if(!(processed_sheet in stack_list)) //It's the first of this sheet added + var/obj/item/stack/sheet/s = new processed_sheet(src,0) + s.amount = 0 + stack_list[processed_sheet] = s + var/obj/item/stack/sheet/storage = stack_list[processed_sheet] + storage.amount += 1 //Stack the sheets + O.loc = null //Let the old sheet garbage collect + +/obj/machinery/mineral/ore_redemption/process() + var/turf/T = get_turf(get_step(src, input_dir)) + var/i + if(T) + if(locate(/obj/item/weapon/ore) in T) + for (i = 0; i < 10; i++) + var/obj/item/weapon/ore/O = locate() in T + if(O) + process_sheet(O) + else + break + else + var/obj/structure/ore_box/B = locate() in T + if(B) + for (i = 0; i < 10; i++) + var/obj/item/weapon/ore/O = locate() in B.contents + if(O) + process_sheet(O) + else + break + +/obj/machinery/mineral/ore_redemption/attackby(var/obj/item/weapon/W, var/mob/user) + if(istype(W,/obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if(istype(I) && !istype(inserted_id)) + usr.drop_item() + I.loc = src + inserted_id = I + interact(user) + +/obj/machinery/mineral/ore_redemption/proc/SmeltMineral(var/obj/item/weapon/ore/O) + if(O.refined_type) + var/obj/item/stack/sheet/M = O.refined_type + points += O.points + return M + qdel(O)//No refined type? Purge it. + return + +/obj/machinery/mineral/ore_redemption/attack_hand(user as mob) + if(..()) + return + interact(user) + +/obj/machinery/mineral/ore_redemption/interact(mob/user) + var/obj/item/stack/sheet/s + var/dat + + dat += text("Ore Redemption Machine

    ") + dat += text("This machine only accepts ore. Gibtonite and Slag are not accepted.

    ") + dat += text("Current unclaimed points: [points]
    ") + + if(istype(inserted_id)) + dat += text("You have [inserted_id.mining_points] mining points collected. Eject ID.
    ") + dat += text("Claim points.
    ") + else + dat += text("No ID inserted. Insert ID.
    ") + + for(var/O in stack_list) + s = stack_list[O] + if(s.amount > 0) + dat += text("[capitalize(s.name)]: [s.amount] Release
    ") + + dat += text("
    Mineral Value List:
    [get_ore_values()]") + + user << browse("[dat]", "window=console_stacking_machine") + + return + +/obj/machinery/mineral/ore_redemption/proc/get_ore_values() + var/dat = "" + for(var/ore in ore_values) + var/value = ore_values[ore] + dat += "" + dat += "
    [capitalize(ore)][value]
    " + return dat + +/obj/machinery/mineral/ore_redemption/Topic(href, href_list) + if(..()) + return + if(href_list["choice"]) + if(istype(inserted_id)) + if(href_list["choice"] == "eject") + inserted_id.loc = loc + inserted_id.verb_pickup() + inserted_id = null + if(href_list["choice"] == "claim") + if(access_mining_station in inserted_id.access) + inserted_id.mining_points += points + points = 0 + else + usr << "Required access not found." + else if(href_list["choice"] == "insert") + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if(istype(I)) + usr.drop_item() + I.loc = src + inserted_id = I + else usr << "No valid ID." + if(href_list["release"] && istype(inserted_id)) + if(check_access(inserted_id)) + if(!(text2path(href_list["release"]) in stack_list)) return + var/obj/item/stack/sheet/inp = stack_list[text2path(href_list["release"])] + var/obj/item/stack/sheet/out = new inp.type() + var/desired = input("How much?", "How much to eject?", 1) as num + out.amount = min(desired,50,inp.amount) + if(out.amount >= 1) + inp.amount -= out.amount + unload_mineral(out) + else + usr << "Required access not found." + updateUsrDialog() + return + +/obj/machinery/mineral/ore_redemption/ex_act() + return //So some chucklefuck doesn't ruin miners reward with an explosion + +/**********************Mining Equipment Locker**************************/ + +/obj/machinery/mineral/equipment_locker + name = "mining equipment locker" + desc = "An equipment locker for miners, points collected at an ore redemption machine can be spent here." + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "mining" + density = 1 + anchored = 1.0 + var/obj/item/weapon/card/id/inserted_id + var/list/prize_list = list( + new /datum/data/mining_equipment("Chili", /obj/item/weapon/reagent_containers/food/snacks/hotchili, 100), + new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 100), + new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 150), + new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 150), + new /datum/data/mining_equipment("Stimulant pills", /obj/item/weapon/storage/pill_bottle/stimulant, 350), + new /datum/data/mining_equipment("Alien toy", /obj/item/clothing/mask/facehugger/toy, 250), + new /datum/data/mining_equipment("Laser pointer", /obj/item/device/laser_pointer, 500), + new /datum/data/mining_equipment("Point card", /obj/item/weapon/card/mining_point_card, 500), + new /datum/data/mining_equipment("Lazarus injector", /obj/item/weapon/lazarus_injector, 1000), + new /datum/data/mining_equipment("Space cash", /obj/item/weapon/spacecash/c1000, 5000), + new /datum/data/mining_equipment("Sonic jackhammer", /obj/item/weapon/pickaxe/jackhammer, 500), + new /datum/data/mining_equipment("Mining drone", /mob/living/simple_animal/hostile/mining_drone/, 500), + new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 200), + new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 750), + new /datum/data/mining_equipment("Kinetic accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 1000), + new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), + ) + +/datum/data/mining_equipment/ + var/equipment_name = "generic" + var/equipment_path = null + var/cost = 0 + +/datum/data/mining_equipment/New(name, path, cost) + src.equipment_name = name + src.equipment_path = path + src.cost = cost + +/obj/machinery/mineral/equipment_locker/attack_hand(user as mob) + if(..()) + return + interact(user) + +/obj/machinery/mineral/equipment_locker/interact(mob/user) + var/dat + dat += text("Mining Equipment Locker

    ") + + if(istype(inserted_id)) + dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " + else + dat += "No ID inserted. Insert ID.
    " + + dat += "
    Equipment point cost list:
    " + for(var/datum/data/mining_equipment/prize in prize_list) + dat += "" + dat += "
    [prize.equipment_name][prize.cost]Purchase
    " + + user << browse("[dat]", "window=mining_equipment_locker") + return + +/obj/machinery/mineral/equipment_locker/Topic(href, href_list) + if(..()) + return + if(href_list["choice"]) + if(istype(inserted_id)) + if(href_list["choice"] == "eject") + inserted_id.loc = loc + inserted_id.verb_pickup() + inserted_id = null + else if(href_list["choice"] == "insert") + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if(istype(I)) + usr.drop_item() + I.loc = src + inserted_id = I + else usr << "\red No valid ID." + if(href_list["purchase"]) + if(istype(inserted_id)) + var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) + if (!prize || !(prize in prize_list)) + return + if(prize.cost > inserted_id.mining_points) + else + inserted_id.mining_points -= prize.cost + new prize.equipment_path(src.loc) + updateUsrDialog() + return + +/obj/machinery/mineral/equipment_locker/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/mining_voucher)) + RedeemVoucher(I, user) + return + if(istype(I,/obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/C = usr.get_active_hand() + if(istype(C) && !istype(inserted_id)) + usr.drop_item() + C.loc = src + inserted_id = C + interact(user) + return + ..() + +/obj/machinery/mineral/equipment_locker/proc/RedeemVoucher(voucher, redeemer) + var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") in list("Resonator", "Kinetic Accelerator", "Mining Drone", "Cancel") + if(!selection || !Adjacent(redeemer) || !voucher) + return + switch(selection) + if("Resonator") + new /obj/item/weapon/resonator(src.loc) + if("Kinetic Accelerator") + new /obj/item/weapon/gun/energy/kinetic_accelerator(src.loc) + if("Mining Drone") + new /mob/living/simple_animal/hostile/mining_drone(src.loc) + new /obj/item/weapon/weldingtool/hugetank(src.loc) + if("Cancel") + return + qdel(voucher) + +/obj/machinery/mineral/equipment_locker/ex_act() + return + +/**********************Mining Equipment Locker Items**************************/ + +/**********************Mining Equipment Voucher**********************/ + +/obj/item/weapon/mining_voucher + name = "mining voucher" + desc = "A token to redeem a piece of equipment. Use it on a mining equipment locker." + icon = 'icons/obj/items.dmi' + icon_state = "mining_voucher" + w_class = 1 + +/**********************Mining Point Card**********************/ + +/obj/item/weapon/card/mining_point_card + name = "mining point card" + desc = "A small card preloaded with mining points. Swipe your ID card over it to transfer the points, then discard." + icon_state = "data" + var/points = 500 + +/obj/item/weapon/card/mining_point_card/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/card/id)) + if(points) + var/obj/item/weapon/card/id/C = I + C.mining_points += points + user << "You transfer [points] points to [C]." + points = 0 + else + user << "There's no points left on [src]." + ..() + +/obj/item/weapon/card/mining_point_card/examine() + ..() + usr << "There's [points] points on the card." + +/**********************Jaunter**********************/ + +/obj/item/device/wormhole_jaunter + name = "wormhole jaunter" + desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least." + icon = 'icons/obj/items.dmi' + icon_state = "Jaunter" + item_state = "electronic" + throwforce = 0 + w_class = 2.0 + throw_speed = 3 + throw_range = 5 + origin_tech = "bluespace=2" + +/obj/item/device/wormhole_jaunter/attack_self(mob/user as mob) + var/turf/device_turf = get_turf(user) + if(!device_turf||device_turf.z==2||device_turf.z>=7) + user << "You're having difficulties getting the [src.name] to work." + return + else + user.visible_message("[user.name] activates the [src.name]!") + var/list/L = list() + for(var/obj/item/device/radio/beacon/B in world) + var/turf/T = get_turf(B) + if(T.z == 1) + L += B + if(!L.len) + user << "The [src.name] failed to create a wormhole." + return + var/chosen_beacon = pick(L) + var/obj/effect/portal/wormhole/jaunt_tunnel/J = new /obj/effect/portal/wormhole/jaunt_tunnel(get_turf(src), chosen_beacon, lifespan=100) + J.target = chosen_beacon + try_move_adjacent(J) + playsound(src,'sound/effects/sparks4.ogg',50,1) + qdel(src) + +/obj/effect/portal/wormhole/jaunt_tunnel + name = "jaunt tunnel" + icon = 'icons/effects/effects.dmi' + icon_state = "bhole3" + desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." + +/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) + if(istype(M, /obj/effect)) + return + if(istype(M, /atom/movable)) + do_teleport(M, target, 6) + if(isliving(M)) + var/mob/living/L = M + L.Weaken(3) + if(ishuman(L)) + shake_camera(L, 20, 1) + spawn(20) + if(L) + L.visible_message("[L.name] vomits from travelling through the [src.name]!") + L.nutrition -= 20 + L.adjustToxLoss(-3) + var/turf/T = get_turf(L) + T.add_vomit_floor(L) + playsound(L, 'sound/effects/splat.ogg', 50, 1) + +/**********************Resonator**********************/ + +/obj/item/weapon/resonator + name = "resonator" + icon = 'icons/obj/items.dmi' + icon_state = "resonator" + item_state = "resonator" + desc = "A handheld device that creates small fields of energy that resonate until they detonate, crushing rock. It can also be activated without a target to create a field at the user's location, to act as a delayed time trap. It's more effective in a vaccuum." + w_class = 3 + force = 10 + throwforce = 10 + var/cooldown = 0 + +/obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator) + if(cooldown <= 0) + playsound(src,'sound/effects/stealthoff.ogg',50,1) + var/obj/effect/resonance/R = new /obj/effect/resonance(get_turf(target)) + R.creator = creator + cooldown = 1 + spawn(20) + cooldown = 0 + +/obj/item/weapon/resonator/attack_self(mob/user as mob) + CreateResonance(src, user) + ..() + +/obj/item/weapon/resonator/afterattack(atom/target, mob/user, proximity_flag) + if(target in user.contents) + return + if(proximity_flag) + CreateResonance(target, user) + +/obj/effect/resonance + name = "resonance field" + desc = "A resonating field that significantly damages anything inside of it when the field eventually ruptures." + icon = 'icons/effects/effects.dmi' + icon_state = "shield1" + layer = 4.1 + mouse_opacity = 0 + var/resonance_damage = 20 + var/creator = null + +/obj/effect/resonance/New() + var/turf/proj_turf = get_turf(src) + if(!istype(proj_turf)) + return + if(istype(proj_turf, /turf/simulated/mineral)) + var/turf/simulated/mineral/M = proj_turf + playsound(src,'sound/effects/sparks4.ogg',50,1) + M.gets_drilled() + spawn(5) + qdel(src) + else + var/datum/gas_mixture/environment = proj_turf.return_air() + var/pressure = environment.return_pressure() + if(pressure < 50) + name = "strong resonance field" + resonance_damage = 45 + spawn(50) + playsound(src,'sound/effects/sparks4.ogg',50,1) + if(creator) + for(var/mob/living/L in src.loc) + add_logs(creator, L, "used a resonator field on", object="resonator") + L << "The [src.name] ruptured with you in it!" + L.adjustBruteLoss(resonance_damage) + else + for(var/mob/living/L in src.loc) + L << "The [src.name] ruptured with you in it!" + L.adjustBruteLoss(resonance_damage) + qdel(src) + +/**********************Facehugger toy**********************/ + +/obj/item/clothing/mask/facehugger/toy + desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." + throwforce = 0 + sterile = 1 + tint = 3 //Makes it feel more authentic when it latches on + +/obj/item/clothing/mask/facehugger/toy/examine()//So that giant red text about probisci doesn't show up. + if(desc) + usr << desc + +/obj/item/clothing/mask/facehugger/toy/Die() + return + +/**********************Mining drone**********************/ + +/mob/living/simple_animal/hostile/mining_drone/ + name = "nanotrasen minebot" + desc = "The instructions printed on the side read: This is a small robot used to support miners, can be set to search and collect loose ore, or to help fend off wildlife. A mining scanner can instruct it to drop loose ore. Field repairs can be done with a welder." + icon = 'icons/obj/aibots.dmi' + icon_state = "mining_drone" + icon_living = "mining_drone" + status_flags = CANSTUN|CANWEAKEN|CANPUSH + stop_automated_movement_when_pulled = 1 + mouse_opacity = 1 + faction = "neutral" + a_intent = "harm" + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + wander = 0 + idle_vision_range = 5 + move_to_delay = 10 + retreat_distance = 1 + minimum_distance = 2 + health = 125 + maxHealth = 125 + melee_damage_lower = 15 + melee_damage_upper = 15 + environment_smash = 0 + attacktext = "drills" + attack_sound = 'sound/weapons/circsawhit.ogg' + ranged = 1 + ranged_message = "shoots" + ranged_cooldown_cap = 3 + projectiletype = /obj/item/projectile/kinetic + projectilesound = 'sound/weapons/Gunshot4.ogg' + wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/clown) + +/mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = I + if(W.welding && !stat) + if(stance != HOSTILE_STANCE_IDLE) + user << "[src] is moving around too much to repair!" + return + if(maxHealth == health) + user << "[src] is at full integrity." + else + health += 10 + user << "You repair some of the armor on [src]." + return + if(istype(I, /obj/item/device/mining_scanner)) + user << "You instruct [src] to drop any collected ore." + DropOre() + return + ..() + +/mob/living/simple_animal/hostile/mining_drone/Die() + ..() + visible_message("[src] is destroyed!") + new /obj/effect/decal/cleanable/robot_debris(src.loc) + DropOre() + qdel(src) + return + +/mob/living/simple_animal/hostile/mining_drone/New() + ..() + SetCollectBehavior() + +/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M) + if(M.a_intent == "help") + switch(search_objects) + if(0) + SetCollectBehavior() + M << "[src] has been set to search and store loose ore." + if(2) + SetOffenseBehavior() + M << "[src] has been set to attack hostile wildlife." + return + ..() + +/mob/living/simple_animal/hostile/mining_drone/proc/SetCollectBehavior() + idle_vision_range = 9 + search_objects = 2 + wander = 1 + ranged = 0 + minimum_distance = 1 + retreat_distance = null + icon_state = "mining_drone" + +/mob/living/simple_animal/hostile/mining_drone/proc/SetOffenseBehavior() + idle_vision_range = 7 + search_objects = 0 + wander = 0 + ranged = 1 + retreat_distance = 1 + minimum_distance = 2 + icon_state = "mining_drone_offense" + +/mob/living/simple_animal/hostile/mining_drone/AttackingTarget() + if(istype(target, /obj/item/weapon/ore)) + CollectOre() + return + ..() + +/mob/living/simple_animal/hostile/mining_drone/proc/CollectOre() + var/obj/item/weapon/ore/O + for(O in src.loc) + O.loc = src + for(var/dir in alldirs) + var/turf/T = get_step(src,dir) + for(O in T) + O.loc = src + return + +/mob/living/simple_animal/hostile/mining_drone/proc/DropOre() + if(!contents.len) + return + for(var/obj/item/weapon/ore/O in contents) + contents -= O + O.loc = src.loc + return + +/mob/living/simple_animal/hostile/mining_drone/adjustBruteLoss() + if(search_objects) + SetOffenseBehavior() + ..() + +/**********************Lazarus Injector**********************/ + +/obj/item/weapon/lazarus_injector + name = "lazarus injector" + desc = "An injector with a cocktail of nanomachines and chemicals, this device can seemingly raise animals from the dead, making them become friendly to the user. Unfortunately, the process is useless on higher forms of life and incredibly costly, so these were hidden in storage until an executive thought they'd be great motivation for some of their employees." + icon = 'icons/obj/syringe.dmi' + icon_state = "lazarus_hypo" + item_state = "hypo" + throwforce = 0 + w_class = 2.0 + throw_speed = 3 + throw_range = 5 + var/loaded = 1 + +/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) + if(!loaded) + return + if(istype(target, /mob/living) && proximity_flag) + if(istype(target, /mob/living/simple_animal)) + var/mob/living/simple_animal/M = target + if(M.stat == DEAD) + M.faction = "lazarus" + M.revive() + if(istype(target, /mob/living/simple_animal/hostile)) + var/mob/living/simple_animal/hostile/H = M + H.friends += user + H.attack_same = 1 //No invincible army of completely loyal mobs + log_game("[user] has revived hostile mob [target] with a lazarus injector") + loaded = 0 + user.visible_message("[user] injects [M] with [src], reviving it.") + playsound(src,'sound/effects/refill.ogg',50,1) + icon_state = "lazarus_empty" + return + else + user << "[src] is only effective on the dead." + return + else + user << "[src] is only effective on lesser beings." + return + +/obj/item/weapon/lazarus_injector/examine() + ..() + if(!loaded) + usr << "[src] is empty." + +/**********************Mining Scanner**********************/ +/obj/item/device/mining_scanner + desc = "A scanner that checks surrounding rock for useful minerals, it can also be used to stop gibtonite detonations. Requires you to wear mesons to work properly." + name = "mining scanner" + icon_state = "mining" + item_state = "analyzer" + w_class = 2.0 + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 0 + +/obj/item/device/mining_scanner/attack_self(mob/user) + if(!user.client) + return + if(!cooldown) + cooldown = 1 + spawn(40) + cooldown = 0 + var/client/C = user.client + var/list/L = list() + var/turf/simulated/mineral/M + for(M in range(7, user)) + if(M.scan_state) + L += M + if(!L.len) + user << "[src] reports that nothing was detected nearby." + return + else + for(M in L) + var/turf/T = get_turf(M) + var/image/I = image('icons/turf/walls.dmi', loc = T, icon_state = M.scan_state, layer = 18) + C.images += I + spawn(30) + if(C) + C.images -= I + +/**********************Xeno Warning Sign**********************/ +/obj/structure/sign/xeno_warning_mining + name = "DANGEROUS ALIEN LIFE" + desc = "A sign that warns would be travellers of hostile alien life in the vicinity." + icon = 'icons/obj/mining.dmi' + icon_state = "xeno_warning" + +/**********************Mining Jetpack**********************/ +/obj/item/weapon/tank/jetpack/carbondioxide/mining + name = "mining jetpack" + icon_state = "jetpack-mining" + item_state = "jetpack-mining" + desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. Should not be used for internals." diff --git a/code/modules/mining/laborcamp/laborminerals.dm b/code/modules/mining/laborcamp/laborminerals.dm index 8c5d70b08ea..8649128cd23 100644 --- a/code/modules/mining/laborcamp/laborminerals.dm +++ b/code/modules/mining/laborcamp/laborminerals.dm @@ -1,7 +1,7 @@ -/turf/simulated/mineral/random/labormineral - mineralSpawnChanceList = list("Uranium" = 1, "Iron" = 100, "Diamond" = 1, "Gold" = 1, "Silver" = 1, "Plasma" = 1/*, "Adamantine" =5, "Cave" = 1 */) //Don't suffocate the prisoners with caves - icon_state = "rock_labor" - -/turf/simulated/mineral/random/labormineral/New() - icon_state = "rock" +/turf/simulated/mineral/random/labormineral + mineralSpawnChanceList = list("Uranium" = 1, "Iron" = 100, "Diamond" = 1, "Gold" = 1, "Silver" = 1, "Plasma" = 1/*, "Adamantine" =5, "Cave" = 1 */) //Don't suffocate the prisoners with caves + icon_state = "rock_labor" + +/turf/simulated/mineral/random/labormineral/New() + icon_state = "rock" ..() \ No newline at end of file diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index fb93f98e83a..535edbb899d 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -1,22 +1,22 @@ -/obj/machinery/computer/shuttle/labor - name = "Labor Shuttle Console" - icon = 'icons/obj/computer.dmi' - icon_state = "shuttle" - circuit = /obj/item/weapon/circuitboard/labor_shuttle - id = "laborcamp" - req_access = list(access_brig) - - -/obj/machinery/computer/shuttle/labor/one_way - name = "Prisoner Shuttle Console" - desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." - circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way - req_access = list( ) - -/obj/machinery/computer/shuttle/labor/one_way/Topic(href, href_list) - if(href_list["move"]) - var/datum/shuttle_manager/s = shuttles["laborcamp"] - if(s.location == /area/shuttle/laborcamp/outpost) - usr << "\blue Shuttle is already at the outpost." - return 0 +/obj/machinery/computer/shuttle/labor + name = "Labor Shuttle Console" + icon = 'icons/obj/computer.dmi' + icon_state = "shuttle" + circuit = /obj/item/weapon/circuitboard/labor_shuttle + id = "laborcamp" + req_access = list(access_brig) + + +/obj/machinery/computer/shuttle/labor/one_way + name = "Prisoner Shuttle Console" + desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." + circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way + req_access = list( ) + +/obj/machinery/computer/shuttle/labor/one_way/Topic(href, href_list) + if(href_list["move"]) + var/datum/shuttle_manager/s = shuttles["laborcamp"] + if(s.location == /area/shuttle/laborcamp/outpost) + usr << "\blue Shuttle is already at the outpost." + return 0 ..() \ No newline at end of file diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 97233d6d4cb..13195eff487 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -1,139 +1,139 @@ -/**********************Prisoners' Console**************************/ - -/obj/machinery/mineral/labor_claim_console - name = "Point Claim Console" - desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners." - name = "stacking machine console" - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "console" - density = 0 - anchored = 1 - var/obj/machinery/mineral/stacking_machine/laborstacker/machine = null - var/machinedir = SOUTH - var/obj/item/weapon/card/id/prisoner/inserted_id - var/obj/machinery/door/airlock/release_door - var/door_tag = "prisonshuttle" - -/obj/machinery/mineral/labor_claim_console/New() - ..() - spawn(7) - src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) - var/t - for(var/obj/machinery/door/airlock/d in range(5,src)) - t = d.id_tag - if(t == src.door_tag) - src.release_door = d - if (machine && release_door) - machine.CONSOLE = src - else - qdel(src) - -/obj/machinery/mineral/labor_claim_console/proc/check_auth() - if(emagged) return 1 //Shuttle is emagged, let any ol' person through - return (istype(inserted_id) && inserted_id.points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. - - -/obj/machinery/mineral/labor_claim_console/attack_hand(user as mob) - name = "Point Claim Console" - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "console" - desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners." - density = 0 - anchored = 1 - var/dat - dat += text("Point Claim Console

    ") - if(emagged) //Shit's broken - dat += text("QU&#t0A In%aL*D
    ") - else if(istype(inserted_id)) //There's an ID in there. - dat += text("[inserted_id.points] / [inserted_id.goal] collected. Eject ID.
    ") - dat += text("Unclaimed Collection Points: [machine.points]. Claim points.
    ") - else //No ID in sight. Complain about it. - dat += text("No ID inserted. Insert ID.
    ") - if(check_auth()) - dat += text("Proceed to Station.
    ") - dat += text("Open release door.
    ") - if(machine) - dat += text("
    Mineral Value List:
    [machine.get_ore_values()]") - - - user << browse("[dat]", "window=console_stacking_machine") - - -/obj/machinery/mineral/labor_claim_console/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/card/emag)) - emagged = 1 - user << "PZZTTPFFFT" - return - else if(istype(I, /obj/item/weapon/card/id)) - return attack_hand(user) - ..() - - - - - -/obj/machinery/mineral/labor_claim_console/Topic(href, href_list) - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["choice"]) - if(istype(inserted_id)) //Sanity check against href spoofs - if(href_list["choice"] == "eject") - inserted_id.loc = loc - inserted_id.verb_pickup() - inserted_id = null - if(href_list["choice"] == "claim") - inserted_id.points += machine.points - machine.points = 0 - src << "Points transferred." - else if(href_list["choice"] == "insert") - var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand() - if(istype(I)) - usr.drop_item() - I.loc = src - inserted_id = I - else usr << "\red No valid ID." - if(check_auth()) //Sanity check against hef spoofs - if(href_list["choice"] == "station") - var/datum/shuttle_manager/s = shuttles["laborcamp"] - if(s.location == /area/shuttle/laborcamp/outpost) - if(alone_in_area(get_area(loc), usr)) - if (s.move_shuttle(0)) // No delay, to stop people from getting on while it is departing. - usr << "\blue Shuttle recieved message and will be sent shortly." - else - usr << "\blue Shuttle is already moving." - else - usr << "\red Prisoners are only allowed to be released while alone." - else - usr << "\blue Shuttle is already on-station." - if(href_list["choice"] == "release") - if(alone_in_area(get_area(loc), usr)) - if(release_door.density) - release_door.open() - else - usr << "\red Prisoners are only allowed to be released while alone." - src.updateUsrDialog() - return - - -/**********************Prisoner Collection Unit**************************/ - - -/obj/machinery/mineral/stacking_machine/laborstacker - var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. - var/list/ore_values = list(("glass" = 1), ("metal" = 2), ("solid plasma" = 20), ("plasteel" = 23), ("reinforced glass" = 4), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("diamond" = 25), ("bananium" = 50)) - -/obj/machinery/mineral/stacking_machine/laborstacker/proc/get_ore_values() - var/dat = "" - for(var/ore in ore_values) - var/value = ore_values[ore] - dat += "" - dat += "
    [capitalize(ore)][value]
    " - return dat - -/obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) - if(istype(inp)) - var/n = inp.name - var/a = inp.amount - if(n in ore_values) - points += ore_values[n] * a +/**********************Prisoners' Console**************************/ + +/obj/machinery/mineral/labor_claim_console + name = "Point Claim Console" + desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners." + name = "stacking machine console" + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "console" + density = 0 + anchored = 1 + var/obj/machinery/mineral/stacking_machine/laborstacker/machine = null + var/machinedir = SOUTH + var/obj/item/weapon/card/id/prisoner/inserted_id + var/obj/machinery/door/airlock/release_door + var/door_tag = "prisonshuttle" + +/obj/machinery/mineral/labor_claim_console/New() + ..() + spawn(7) + src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) + var/t + for(var/obj/machinery/door/airlock/d in range(5,src)) + t = d.id_tag + if(t == src.door_tag) + src.release_door = d + if (machine && release_door) + machine.CONSOLE = src + else + qdel(src) + +/obj/machinery/mineral/labor_claim_console/proc/check_auth() + if(emagged) return 1 //Shuttle is emagged, let any ol' person through + return (istype(inserted_id) && inserted_id.points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. + + +/obj/machinery/mineral/labor_claim_console/attack_hand(user as mob) + name = "Point Claim Console" + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "console" + desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners." + density = 0 + anchored = 1 + var/dat + dat += text("Point Claim Console

    ") + if(emagged) //Shit's broken + dat += text("QU&#t0A In%aL*D
    ") + else if(istype(inserted_id)) //There's an ID in there. + dat += text("[inserted_id.points] / [inserted_id.goal] collected. Eject ID.
    ") + dat += text("Unclaimed Collection Points: [machine.points]. Claim points.
    ") + else //No ID in sight. Complain about it. + dat += text("No ID inserted. Insert ID.
    ") + if(check_auth()) + dat += text("Proceed to Station.
    ") + dat += text("Open release door.
    ") + if(machine) + dat += text("
    Mineral Value List:
    [machine.get_ore_values()]") + + + user << browse("[dat]", "window=console_stacking_machine") + + +/obj/machinery/mineral/labor_claim_console/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/card/emag)) + emagged = 1 + user << "PZZTTPFFFT" + return + else if(istype(I, /obj/item/weapon/card/id)) + return attack_hand(user) + ..() + + + + + +/obj/machinery/mineral/labor_claim_console/Topic(href, href_list) + usr.set_machine(src) + src.add_fingerprint(usr) + if(href_list["choice"]) + if(istype(inserted_id)) //Sanity check against href spoofs + if(href_list["choice"] == "eject") + inserted_id.loc = loc + inserted_id.verb_pickup() + inserted_id = null + if(href_list["choice"] == "claim") + inserted_id.points += machine.points + machine.points = 0 + src << "Points transferred." + else if(href_list["choice"] == "insert") + var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand() + if(istype(I)) + usr.drop_item() + I.loc = src + inserted_id = I + else usr << "\red No valid ID." + if(check_auth()) //Sanity check against hef spoofs + if(href_list["choice"] == "station") + var/datum/shuttle_manager/s = shuttles["laborcamp"] + if(s.location == /area/shuttle/laborcamp/outpost) + if(alone_in_area(get_area(loc), usr)) + if (s.move_shuttle(0)) // No delay, to stop people from getting on while it is departing. + usr << "\blue Shuttle recieved message and will be sent shortly." + else + usr << "\blue Shuttle is already moving." + else + usr << "\red Prisoners are only allowed to be released while alone." + else + usr << "\blue Shuttle is already on-station." + if(href_list["choice"] == "release") + if(alone_in_area(get_area(loc), usr)) + if(release_door.density) + release_door.open() + else + usr << "\red Prisoners are only allowed to be released while alone." + src.updateUsrDialog() + return + + +/**********************Prisoner Collection Unit**************************/ + + +/obj/machinery/mineral/stacking_machine/laborstacker + var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. + var/list/ore_values = list(("glass" = 1), ("metal" = 2), ("solid plasma" = 20), ("plasteel" = 23), ("reinforced glass" = 4), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("diamond" = 25), ("bananium" = 50)) + +/obj/machinery/mineral/stacking_machine/laborstacker/proc/get_ore_values() + var/dat = "" + for(var/ore in ore_values) + var/value = ore_values[ore] + dat += "" + dat += "
    [capitalize(ore)][value]
    " + return dat + +/obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) + if(istype(inp)) + var/n = inp.name + var/a = inp.amount + if(n in ore_values) + points += ore_values[n] * a ..() \ No newline at end of file diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index 528e9222117..ae68c995671 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -1,15 +1,15 @@ -// Camera mob, used by AI camera and blob. - -/mob/camera - name = "camera mob" - density = 0 - anchored = 1 - status_flags = GODMODE // You can't damage it. - mouse_opacity = 0 - see_in_dark = 7 - invisibility = 101 // No one can see us - - move_on_shuttle = 0 - -/mob/camera/experience_pressure_difference() +// Camera mob, used by AI camera and blob. + +/mob/camera + name = "camera mob" + density = 0 + anchored = 1 + status_flags = GODMODE // You can't damage it. + mouse_opacity = 0 + see_in_dark = 7 + invisibility = 101 // No one can see us + + move_on_shuttle = 0 + +/mob/camera/experience_pressure_difference() return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 989e09c6755..7766851cbf1 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -1,2 +1,2 @@ -/mob/living/carbon/alien/hitby(atom/movable/AM) +/mob/living/carbon/alien/hitby(atom/movable/AM) ..(AM, 1) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 39d744769fb..2e2c464a30c 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -312,4 +312,4 @@ else var/mob/living/carbon/alien/humanoid/A = new(loc) A.key = key - qdel(src) */ + qdel(src) */ diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index a3312bed63f..82498bd1afd 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -51,4 +51,4 @@ return canmove /mob/living/carbon/brain/toggle_throw_mode() - return + return diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 753589628c6..28ebc72d92a 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -1,12 +1,12 @@ -/mob/living/carbon/hitby(atom/movable/AM, skip) - if(!skip) //ugly, but easy - if(in_throw_mode && !get_active_hand()) //empty active hand and we're in throw mode - if(canmove && !restrained()) - if(istype(AM, /obj/item)) - var/obj/item/I = AM - if(isturf(I.loc)) - put_in_active_hand(I) - visible_message("[src] catches [I]!") - throw_mode_off() - return +/mob/living/carbon/hitby(atom/movable/AM, skip) + if(!skip) //ugly, but easy + if(in_throw_mode && !get_active_hand()) //empty active hand and we're in throw mode + if(canmove && !restrained()) + if(istype(AM, /obj/item)) + var/obj/item/I = AM + if(isturf(I.loc)) + put_in_active_hand(I) + visible_message("[src] catches [I]!") + throw_mode_off() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 6541ebe7c56..af48fdc58b7 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -1,200 +1,200 @@ -//This only assumes that the mob has a body and face with at least one eye, and one mouth. -//Things like airguitar can be done without arms, and the flap thing makes so little sense it's a keeper. -//Intended to be called by a higher up emote proc if the requested emote isn't in the custom emotes. - -/mob/living/carbon/emote(var/act,var/m_type=1,var/message = null) - var/param = null - - if (findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - var/muzzled = (src.wear_mask && istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) - //var/m_type = 1 - - switch(act)//Even carbon organisms want it alphabetically ordered.. - if ("aflap") - if (!src.restrained()) - message = "[src] flaps \his wings ANGRILY!" - m_type = 2 - - if ("airguitar") - if (!src.restrained()) - message = "[src] is strumming the air and headbanging like a safari chimp." - m_type = 1 - - if ("blink") - message = "[src] blinks." - m_type = 1 - - if ("blink_r") - message = "[src] blinks rapidly." - m_type = 1 - - if ("blush") - message = "[src] blushes." - m_type = 1 - - if ("bow") - if (!src.buckled) - var/M = null - if (param) - for (var/mob/A in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - param = null - if (param) - message = "[src] bows to [param]." - else - message = "[src] bows." - m_type = 1 - - if ("burp") - if (!muzzled) - ..(act) - - if ("choke") - if (!muzzled) - ..(act) - else - message = "[src] makes a strong noise." - m_type = 2 - - if ("chuckle") - if (!muzzled) - ..(act) - else - message = "[src] makes a noise." - m_type = 2 - - if ("clap") - if (!src.restrained()) - message = "[src] claps." - m_type = 2 - - if ("cough") - if (!muzzled) - ..(act) - else - message = "[src] makes a strong noise." - m_type = 2 - - if ("deathgasp") - message = "[src] seizes up and falls limp, \his eyes dead and lifeless..." - m_type = 1 - - if ("flap") - if (!src.restrained()) - message = "[src] flaps \his wings." - m_type = 2 - - if ("gasp") - if (!muzzled) - ..(act) - else - message = "[src] makes a weak noise." - m_type = 2 - - if ("giggle") - if (!muzzled) - ..(act) - else - message = "[src] makes a noise." - m_type = 2 - - if ("laugh") - if (!muzzled) - ..(act) - else - message = "[src] makes a noise." - - if ("nod") - message = "[src] nods." - m_type = 1 - - if ("scream") - if (!muzzled) - ..(act) - else - message = "[src] makes a very loud noise." - m_type = 2 - - if ("shake") - message = "[src] shakes \his head." - m_type = 1 - - if ("sneeze") - if (!muzzled) - ..(act) - else - message = "[src] makes a strange noise." - m_type = 2 - - if ("sigh") - if (!muzzled) - ..(act) - else - message = "[src] sighs." - m_type = 2 - - if ("sniff") - message = "[src] sniffs." - m_type = 2 - - if ("snore") - if (!muzzled) - ..(act) - else - message = "[src] makes a noise." - m_type = 2 - - if ("whimper") - if (!muzzled) - ..(act) - else - message = "[src] makes a weak noise." - m_type = 2 - - if ("wink") - message = "[src] winks." - m_type = 1 - - if ("yawn") - if (!muzzled) - ..(act) - - if ("help") - src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, jump, laugh, look, me, nod, point-atom, scream, shake, sigh, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tremble, twitch, twitch_s, wave, whimper, wink, yawn" - - else - ..(act) - - - - - - if (message) - log_emote("[name]/[key] : [message]") - - //Hearing gasp and such every five seconds is not good emotes were not global for a reason. - // Maybe some people are okay with that. - - for(var/mob/M in dead_mob_list) - if(!M.client || istype(M, /mob/new_player)) - continue //skip monkeys, leavers and new players - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) - M.show_message(message) - - - if (m_type & 1) - for (var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - else if (m_type & 2) - for (var/mob/O in hearers(src.loc, null)) - O.show_message(message, m_type) +//This only assumes that the mob has a body and face with at least one eye, and one mouth. +//Things like airguitar can be done without arms, and the flap thing makes so little sense it's a keeper. +//Intended to be called by a higher up emote proc if the requested emote isn't in the custom emotes. + +/mob/living/carbon/emote(var/act,var/m_type=1,var/message = null) + var/param = null + + if (findtext(act, "-", 1, null)) + var/t1 = findtext(act, "-", 1, null) + param = copytext(act, t1 + 1, length(act) + 1) + act = copytext(act, 1, t1) + + if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' + act = copytext(act,1,length(act)) + + var/muzzled = (src.wear_mask && istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) + //var/m_type = 1 + + switch(act)//Even carbon organisms want it alphabetically ordered.. + if ("aflap") + if (!src.restrained()) + message = "[src] flaps \his wings ANGRILY!" + m_type = 2 + + if ("airguitar") + if (!src.restrained()) + message = "[src] is strumming the air and headbanging like a safari chimp." + m_type = 1 + + if ("blink") + message = "[src] blinks." + m_type = 1 + + if ("blink_r") + message = "[src] blinks rapidly." + m_type = 1 + + if ("blush") + message = "[src] blushes." + m_type = 1 + + if ("bow") + if (!src.buckled) + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] bows to [param]." + else + message = "[src] bows." + m_type = 1 + + if ("burp") + if (!muzzled) + ..(act) + + if ("choke") + if (!muzzled) + ..(act) + else + message = "[src] makes a strong noise." + m_type = 2 + + if ("chuckle") + if (!muzzled) + ..(act) + else + message = "[src] makes a noise." + m_type = 2 + + if ("clap") + if (!src.restrained()) + message = "[src] claps." + m_type = 2 + + if ("cough") + if (!muzzled) + ..(act) + else + message = "[src] makes a strong noise." + m_type = 2 + + if ("deathgasp") + message = "[src] seizes up and falls limp, \his eyes dead and lifeless..." + m_type = 1 + + if ("flap") + if (!src.restrained()) + message = "[src] flaps \his wings." + m_type = 2 + + if ("gasp") + if (!muzzled) + ..(act) + else + message = "[src] makes a weak noise." + m_type = 2 + + if ("giggle") + if (!muzzled) + ..(act) + else + message = "[src] makes a noise." + m_type = 2 + + if ("laugh") + if (!muzzled) + ..(act) + else + message = "[src] makes a noise." + + if ("nod") + message = "[src] nods." + m_type = 1 + + if ("scream") + if (!muzzled) + ..(act) + else + message = "[src] makes a very loud noise." + m_type = 2 + + if ("shake") + message = "[src] shakes \his head." + m_type = 1 + + if ("sneeze") + if (!muzzled) + ..(act) + else + message = "[src] makes a strange noise." + m_type = 2 + + if ("sigh") + if (!muzzled) + ..(act) + else + message = "[src] sighs." + m_type = 2 + + if ("sniff") + message = "[src] sniffs." + m_type = 2 + + if ("snore") + if (!muzzled) + ..(act) + else + message = "[src] makes a noise." + m_type = 2 + + if ("whimper") + if (!muzzled) + ..(act) + else + message = "[src] makes a weak noise." + m_type = 2 + + if ("wink") + message = "[src] winks." + m_type = 1 + + if ("yawn") + if (!muzzled) + ..(act) + + if ("help") + src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, jump, laugh, look, me, nod, point-atom, scream, shake, sigh, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tremble, twitch, twitch_s, wave, whimper, wink, yawn" + + else + ..(act) + + + + + + if (message) + log_emote("[name]/[key] : [message]") + + //Hearing gasp and such every five seconds is not good emotes were not global for a reason. + // Maybe some people are okay with that. + + for(var/mob/M in dead_mob_list) + if(!M.client || istype(M, /mob/new_player)) + continue //skip monkeys, leavers and new players + if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + M.show_message(message) + + + if (m_type & 1) + for (var/mob/O in viewers(src, null)) + O.show_message(message, m_type) + else if (m_type & 2) + for (var/mob/O in hearers(src.loc, null)) + O.show_message(message, m_type) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 1aab445d093..c1c1e7240f1 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -1,192 +1,192 @@ -//Updates the mob's health from organs and mob damage variables -/mob/living/carbon/human/updatehealth() - if(status_flags & GODMODE) - health = maxHealth - stat = CONSCIOUS - return - var/total_burn = 0 - var/total_brute = 0 - for(var/obj/item/organ/limb/O in organs) //hardcoded to streamline things a bit - total_brute += O.brute_dam - total_burn += O.burn_dam - health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute - //TODO: fix husking - if( ((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD ) - ChangeToHusk() - return - - -//These procs fetch a cumulative total damage from all organs -/mob/living/carbon/human/getBruteLoss() - var/amount = 0 - for(var/obj/item/organ/limb/O in organs) - amount += O.brute_dam - return amount - -/mob/living/carbon/human/getFireLoss() - var/amount = 0 - for(var/obj/item/organ/limb/O in organs) - amount += O.burn_dam - return amount - - -/mob/living/carbon/human/adjustBruteLoss(var/amount) - if(amount > 0) - take_overall_damage(amount, 0) - else - heal_overall_damage(-amount, 0) - -/mob/living/carbon/human/adjustFireLoss(var/amount) - if(amount > 0) - take_overall_damage(0, amount) - else - heal_overall_damage(0, -amount) - -/mob/living/carbon/human/Stun(amount) - if(HULK in mutations) return - ..() - -/mob/living/carbon/human/Weaken(amount) - if(HULK in mutations) return - ..() - -/mob/living/carbon/human/Paralyse(amount) - if(HULK in mutations) return - ..() - -mob/living/carbon/human/proc/hat_fall_prob() - var/multiplier = 1 - var/obj/item/clothing/head/H = head - var/loose = 40 - if(stat || (status_flags & FAKEDEATH)) - multiplier = 2 - if(H.flags & (HEADCOVERSEYES | HEADCOVERSMOUTH) || H.flags_inv & (HIDEEYES | HIDEFACE)) - loose = 0 - return loose * multiplier - -//////////////////////////////////////////// - -//Returns a list of damaged organs -/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn) - var/list/obj/item/organ/limb/parts = list() - for(var/obj/item/organ/limb/O in organs) - if((brute && O.brute_dam) || (burn && O.burn_dam)) - parts += O - return parts - -//Returns a list of damageable organs -/mob/living/carbon/human/proc/get_damageable_organs() - var/list/obj/item/organ/limb/parts = list() - for(var/obj/item/organ/limb/O in organs) - if(O.brute_dam + O.burn_dam < O.max_damage) - parts += O - return parts - -//Heals ONE external organ, organ gets randomly selected from damaged ones. -//It automatically updates damage overlays if necesary -//It automatically updates health status -/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn) - var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) - if(!parts.len) return - var/obj/item/organ/limb/picked = pick(parts) - if(picked.heal_damage(brute,burn,0)) - update_damage_overlays(0) - updatehealth() - -//Damages ONE external organ, organ gets randomly selected from damagable ones. -//It automatically updates damage overlays if necesary -//It automatically updates health status -/mob/living/carbon/human/take_organ_damage(var/brute, var/burn) - var/list/obj/item/organ/limb/parts = get_damageable_organs() - if(!parts.len) return - var/obj/item/organ/limb/picked = pick(parts) - if(picked.take_damage(brute,burn)) - update_damage_overlays(0) - updatehealth() - - -//Heal MANY external organs, in random order -/mob/living/carbon/human/heal_overall_damage(var/brute, var/burn) - var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) - - var/update = 0 - while(parts.len && (brute>0 || burn>0) ) - var/obj/item/organ/limb/picked = pick(parts) - - var/brute_was = picked.brute_dam - var/burn_was = picked.burn_dam - - update |= picked.heal_damage(brute,burn,0) - - brute -= (brute_was-picked.brute_dam) - burn -= (burn_was-picked.burn_dam) - - parts -= picked - updatehealth() - if(update) update_damage_overlays(0) - -// damage MANY external organs, in random order -/mob/living/carbon/human/take_overall_damage(var/brute, var/burn) - if(status_flags & GODMODE) return //godmode - var/list/obj/item/organ/limb/parts = get_damageable_organs() - var/update = 0 - while(parts.len && (brute>0 || burn>0) ) - var/obj/item/organ/limb/picked = pick(parts) - - var/brute_was = picked.brute_dam - var/burn_was = picked.burn_dam - - - update |= picked.take_damage(brute,burn) - - brute -= (picked.brute_dam - brute_was) - burn -= (picked.burn_dam - burn_was) - - parts -= picked - updatehealth() - if(update) update_damage_overlays(0) - - -//////////////////////////////////////////// - - -/mob/living/carbon/human/proc/get_organ(var/zone) - if(!zone) zone = "chest" - for(var/obj/item/organ/limb/O in organs) - if(O.name == zone) - return O - return null - - -/mob/living/carbon/human/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0) - if((damagetype != BRUTE) && (damagetype != BURN)) - ..(damage, damagetype, def_zone, blocked) - return 1 - - blocked = (100-blocked)/100 - if(blocked <= 0) return 0 - - var/obj/item/organ/limb/organ = null - if(isorgan(def_zone)) - organ = def_zone - else - if(!def_zone) def_zone = ran_zone(def_zone) - organ = get_organ(check_zone(def_zone)) - if(!organ) return 0 - - damage = (damage * blocked) - - switch(damagetype) - if(BRUTE) - damageoverlaytemp = 20 - if(organ.take_damage(damage, 0)) - update_damage_overlays(0) - if(BURN) - damageoverlaytemp = 20 - if(organ.take_damage(0, damage)) - update_damage_overlays(0) - - // Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life(). - - updatehealth() - return 1 +//Updates the mob's health from organs and mob damage variables +/mob/living/carbon/human/updatehealth() + if(status_flags & GODMODE) + health = maxHealth + stat = CONSCIOUS + return + var/total_burn = 0 + var/total_brute = 0 + for(var/obj/item/organ/limb/O in organs) //hardcoded to streamline things a bit + total_brute += O.brute_dam + total_burn += O.burn_dam + health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute + //TODO: fix husking + if( ((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD ) + ChangeToHusk() + return + + +//These procs fetch a cumulative total damage from all organs +/mob/living/carbon/human/getBruteLoss() + var/amount = 0 + for(var/obj/item/organ/limb/O in organs) + amount += O.brute_dam + return amount + +/mob/living/carbon/human/getFireLoss() + var/amount = 0 + for(var/obj/item/organ/limb/O in organs) + amount += O.burn_dam + return amount + + +/mob/living/carbon/human/adjustBruteLoss(var/amount) + if(amount > 0) + take_overall_damage(amount, 0) + else + heal_overall_damage(-amount, 0) + +/mob/living/carbon/human/adjustFireLoss(var/amount) + if(amount > 0) + take_overall_damage(0, amount) + else + heal_overall_damage(0, -amount) + +/mob/living/carbon/human/Stun(amount) + if(HULK in mutations) return + ..() + +/mob/living/carbon/human/Weaken(amount) + if(HULK in mutations) return + ..() + +/mob/living/carbon/human/Paralyse(amount) + if(HULK in mutations) return + ..() + +mob/living/carbon/human/proc/hat_fall_prob() + var/multiplier = 1 + var/obj/item/clothing/head/H = head + var/loose = 40 + if(stat || (status_flags & FAKEDEATH)) + multiplier = 2 + if(H.flags & (HEADCOVERSEYES | HEADCOVERSMOUTH) || H.flags_inv & (HIDEEYES | HIDEFACE)) + loose = 0 + return loose * multiplier + +//////////////////////////////////////////// + +//Returns a list of damaged organs +/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn) + var/list/obj/item/organ/limb/parts = list() + for(var/obj/item/organ/limb/O in organs) + if((brute && O.brute_dam) || (burn && O.burn_dam)) + parts += O + return parts + +//Returns a list of damageable organs +/mob/living/carbon/human/proc/get_damageable_organs() + var/list/obj/item/organ/limb/parts = list() + for(var/obj/item/organ/limb/O in organs) + if(O.brute_dam + O.burn_dam < O.max_damage) + parts += O + return parts + +//Heals ONE external organ, organ gets randomly selected from damaged ones. +//It automatically updates damage overlays if necesary +//It automatically updates health status +/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn) + var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) + if(!parts.len) return + var/obj/item/organ/limb/picked = pick(parts) + if(picked.heal_damage(brute,burn,0)) + update_damage_overlays(0) + updatehealth() + +//Damages ONE external organ, organ gets randomly selected from damagable ones. +//It automatically updates damage overlays if necesary +//It automatically updates health status +/mob/living/carbon/human/take_organ_damage(var/brute, var/burn) + var/list/obj/item/organ/limb/parts = get_damageable_organs() + if(!parts.len) return + var/obj/item/organ/limb/picked = pick(parts) + if(picked.take_damage(brute,burn)) + update_damage_overlays(0) + updatehealth() + + +//Heal MANY external organs, in random order +/mob/living/carbon/human/heal_overall_damage(var/brute, var/burn) + var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) + + var/update = 0 + while(parts.len && (brute>0 || burn>0) ) + var/obj/item/organ/limb/picked = pick(parts) + + var/brute_was = picked.brute_dam + var/burn_was = picked.burn_dam + + update |= picked.heal_damage(brute,burn,0) + + brute -= (brute_was-picked.brute_dam) + burn -= (burn_was-picked.burn_dam) + + parts -= picked + updatehealth() + if(update) update_damage_overlays(0) + +// damage MANY external organs, in random order +/mob/living/carbon/human/take_overall_damage(var/brute, var/burn) + if(status_flags & GODMODE) return //godmode + var/list/obj/item/organ/limb/parts = get_damageable_organs() + var/update = 0 + while(parts.len && (brute>0 || burn>0) ) + var/obj/item/organ/limb/picked = pick(parts) + + var/brute_was = picked.brute_dam + var/burn_was = picked.burn_dam + + + update |= picked.take_damage(brute,burn) + + brute -= (picked.brute_dam - brute_was) + burn -= (picked.burn_dam - burn_was) + + parts -= picked + updatehealth() + if(update) update_damage_overlays(0) + + +//////////////////////////////////////////// + + +/mob/living/carbon/human/proc/get_organ(var/zone) + if(!zone) zone = "chest" + for(var/obj/item/organ/limb/O in organs) + if(O.name == zone) + return O + return null + + +/mob/living/carbon/human/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0) + if((damagetype != BRUTE) && (damagetype != BURN)) + ..(damage, damagetype, def_zone, blocked) + return 1 + + blocked = (100-blocked)/100 + if(blocked <= 0) return 0 + + var/obj/item/organ/limb/organ = null + if(isorgan(def_zone)) + organ = def_zone + else + if(!def_zone) def_zone = ran_zone(def_zone) + organ = get_organ(check_zone(def_zone)) + if(!organ) return 0 + + damage = (damage * blocked) + + switch(damagetype) + if(BRUTE) + damageoverlaytemp = 20 + if(organ.take_damage(damage, 0)) + update_damage_overlays(0) + if(BURN) + damageoverlaytemp = 20 + if(organ.take_damage(0, damage)) + update_damage_overlays(0) + + // Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life(). + + updatehealth() + return 1 diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 737e102d87f..d3aabfd97fb 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -1,119 +1,119 @@ - -/mob/living/carbon/human/restrained() - if (handcuffed) - return 1 - if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket)) - return 1 - return 0 - -//gets assignment from ID or ID inside PDA or PDA itself -//Useful when player do something with computers -/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job") - var/obj/item/weapon/card/id/id = get_idcard() - if(id) - . = id.assignment - else - var/obj/item/device/pda/pda = wear_id - if(istype(pda)) - . = pda.ownjob - else - return if_no_id - if(!.) - return if_no_job - -//gets name from ID or ID inside PDA or PDA itself -//Useful when player do something with computers -/mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown") - var/obj/item/weapon/card/id/id = get_idcard() - if(id) - return id.registered_name - var/obj/item/device/pda/pda = wear_id - if(istype(pda)) - return pda.owner - return if_no_id - -//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere -/mob/living/carbon/human/get_visible_name() - var/face_name = get_face_name("") - var/id_name = get_id_name("") - if(face_name) - if(id_name && (id_name != face_name)) - return "[face_name] (as [id_name])" - return face_name - if(id_name) - return id_name - return "Unknown" - -//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable -/mob/living/carbon/human/proc/get_face_name(if_no_face="Unknown") - if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible - return if_no_face - if( head && (head.flags_inv&HIDEFACE) ) - return if_no_face //Likewise for hats - var/obj/item/organ/limb/O = get_organ("head") - if( (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible - return if_no_face - return real_name - -//gets name from ID or PDA itself, ID inside PDA doesn't matter -//Useful when player is being seen by other mobs -/mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown") - var/obj/item/weapon/storage/wallet/wallet = wear_id - var/obj/item/device/pda/pda = wear_id - var/obj/item/weapon/card/id/id = wear_id - if(istype(wallet)) id = wallet.front_id - if(istype(id)) . = id.registered_name - else if(istype(pda)) . = pda.owner - if(!.) . = if_no_id //to prevent null-names making the mob unclickable - return - -//gets ID card object from special clothes slot or null. -/mob/living/carbon/human/proc/get_idcard() - if(wear_id) - return wear_id.GetID() - -///eyecheck() -///Returns a number between -1 to 2 -/mob/living/carbon/human/eyecheck() - var/number = 0 - if(istype(src.head, /obj/item/clothing/head)) //are they wearing something on their head - var/obj/item/clothing/head/HFP = src.head //if yes gets the flash protection value from that item - number += HFP.flash_protect - if(istype(src.glasses, /obj/item/clothing/glasses)) //glasses - var/obj/item/clothing/glasses/GFP = src.glasses - number += GFP.flash_protect - if(istype(src.wear_mask, /obj/item/clothing/mask)) //mask - var/obj/item/clothing/mask/MFP = src.wear_mask - number += MFP.flash_protect - return number - -///tintcheck() -///Checks eye covering items for visually impairing tinting, such as welding masks -///Checked in life.dm. 0 & 1 = no impairment, 2 = welding mask overlay, 3 = You can see jack, but you can't see shit. -/mob/living/carbon/human/tintcheck() - var/tinted = 0 - if(istype(src.head, /obj/item/clothing/head)) - var/obj/item/clothing/head/HT = src.head - tinted += HT.tint - if(istype(src.glasses, /obj/item/clothing/glasses)) - var/obj/item/clothing/glasses/GT = src.glasses - tinted += GT.tint - if(istype(src.wear_mask, /obj/item/clothing/mask)) - var/obj/item/clothing/mask/MT = src.wear_mask - tinted += MT.tint - return tinted - -/mob/living/carbon/human/abiotic(var/full_body = 0) - if(full_body && ((src.l_hand && !( src.l_hand.flags&ABSTRACT )) || (src.r_hand && !( src.r_hand.flags&ABSTRACT )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) - return 1 - - if( (src.l_hand && !(src.l_hand.flags&ABSTRACT)) || (src.r_hand && !(src.r_hand.flags&ABSTRACT)) ) - return 1 - - return 0 - -/mob/living/carbon/human/IsAdvancedToolUser() - return 1//Humans can use guns and such - -/mob/living/carbon/human/InCritical() + +/mob/living/carbon/human/restrained() + if (handcuffed) + return 1 + if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket)) + return 1 + return 0 + +//gets assignment from ID or ID inside PDA or PDA itself +//Useful when player do something with computers +/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job") + var/obj/item/weapon/card/id/id = get_idcard() + if(id) + . = id.assignment + else + var/obj/item/device/pda/pda = wear_id + if(istype(pda)) + . = pda.ownjob + else + return if_no_id + if(!.) + return if_no_job + +//gets name from ID or ID inside PDA or PDA itself +//Useful when player do something with computers +/mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown") + var/obj/item/weapon/card/id/id = get_idcard() + if(id) + return id.registered_name + var/obj/item/device/pda/pda = wear_id + if(istype(pda)) + return pda.owner + return if_no_id + +//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere +/mob/living/carbon/human/get_visible_name() + var/face_name = get_face_name("") + var/id_name = get_id_name("") + if(face_name) + if(id_name && (id_name != face_name)) + return "[face_name] (as [id_name])" + return face_name + if(id_name) + return id_name + return "Unknown" + +//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable +/mob/living/carbon/human/proc/get_face_name(if_no_face="Unknown") + if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible + return if_no_face + if( head && (head.flags_inv&HIDEFACE) ) + return if_no_face //Likewise for hats + var/obj/item/organ/limb/O = get_organ("head") + if( (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible + return if_no_face + return real_name + +//gets name from ID or PDA itself, ID inside PDA doesn't matter +//Useful when player is being seen by other mobs +/mob/living/carbon/human/proc/get_id_name(var/if_no_id = "Unknown") + var/obj/item/weapon/storage/wallet/wallet = wear_id + var/obj/item/device/pda/pda = wear_id + var/obj/item/weapon/card/id/id = wear_id + if(istype(wallet)) id = wallet.front_id + if(istype(id)) . = id.registered_name + else if(istype(pda)) . = pda.owner + if(!.) . = if_no_id //to prevent null-names making the mob unclickable + return + +//gets ID card object from special clothes slot or null. +/mob/living/carbon/human/proc/get_idcard() + if(wear_id) + return wear_id.GetID() + +///eyecheck() +///Returns a number between -1 to 2 +/mob/living/carbon/human/eyecheck() + var/number = 0 + if(istype(src.head, /obj/item/clothing/head)) //are they wearing something on their head + var/obj/item/clothing/head/HFP = src.head //if yes gets the flash protection value from that item + number += HFP.flash_protect + if(istype(src.glasses, /obj/item/clothing/glasses)) //glasses + var/obj/item/clothing/glasses/GFP = src.glasses + number += GFP.flash_protect + if(istype(src.wear_mask, /obj/item/clothing/mask)) //mask + var/obj/item/clothing/mask/MFP = src.wear_mask + number += MFP.flash_protect + return number + +///tintcheck() +///Checks eye covering items for visually impairing tinting, such as welding masks +///Checked in life.dm. 0 & 1 = no impairment, 2 = welding mask overlay, 3 = You can see jack, but you can't see shit. +/mob/living/carbon/human/tintcheck() + var/tinted = 0 + if(istype(src.head, /obj/item/clothing/head)) + var/obj/item/clothing/head/HT = src.head + tinted += HT.tint + if(istype(src.glasses, /obj/item/clothing/glasses)) + var/obj/item/clothing/glasses/GT = src.glasses + tinted += GT.tint + if(istype(src.wear_mask, /obj/item/clothing/mask)) + var/obj/item/clothing/mask/MT = src.wear_mask + tinted += MT.tint + return tinted + +/mob/living/carbon/human/abiotic(var/full_body = 0) + if(full_body && ((src.l_hand && !( src.l_hand.flags&ABSTRACT )) || (src.r_hand && !( src.r_hand.flags&ABSTRACT )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) + return 1 + + if( (src.l_hand && !(src.l_hand.flags&ABSTRACT)) || (src.r_hand && !(src.r_hand.flags&ABSTRACT)) ) + return 1 + + return 0 + +/mob/living/carbon/human/IsAdvancedToolUser() + return 1//Humans can use guns and such + +/mob/living/carbon/human/InCritical() return (health <= config.health_threshold_crit && stat == UNCONSCIOUS) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 35176f0514d..5a7455748cf 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -1,15 +1,15 @@ -/mob/living/carbon/get_item_by_slot(slot_id) - switch(slot_id) - if(slot_back) - return back - if(slot_wear_mask) - return wear_mask - if(slot_handcuffed) - return handcuffed - if(slot_legcuffed) - return legcuffed - if(slot_l_hand) - return l_hand - if(slot_r_hand) - return r_hand +/mob/living/carbon/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_back) + return back + if(slot_wear_mask) + return wear_mask + if(slot_handcuffed) + return handcuffed + if(slot_legcuffed) + return legcuffed + if(slot_l_hand) + return l_hand + if(slot_r_hand) + return r_hand return null \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index df4d2324286..771fc56eae1 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -225,4 +225,4 @@ else src << "I am not ready to reproduce yet..." else - src << "I am not old enough to reproduce yet..." + src << "I am not old enough to reproduce yet..." diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index a2a20c93b5c..c58542f7b6a 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -1,25 +1,25 @@ -//LOOK G-MA, I'VE JOINED CARBON PROCS THAT ARE IDENTICAL IN ALL CASES INTO ONE PROC, I'M BETTER THAN LIFE() -//I thought about mob/living but silicons and simple_animals don't want this just yet. -//Right now just handles lying down, but could handle other cases later. -//IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can. -/mob/living/carbon/update_transform() - var/matrix/ntransform = matrix(transform) //aka transform.Copy() - var/final_pixel_y = pixel_y - var/final_dir = dir - var/changed = 0 - - if(lying != lying_prev) - changed++ - ntransform.TurnTo(lying_prev,lying) - if(lying == 0) //Lying to standing - final_pixel_y += 6 - else //if(lying != 0) - if(lying_prev == 0) //Standing to lying - final_pixel_y -= 6 - - if(dir & (EAST|WEST)) //Facing east or west - final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass - lying_prev = lying //so we don't try to animate until there's been another change. - - if(changed) +//LOOK G-MA, I'VE JOINED CARBON PROCS THAT ARE IDENTICAL IN ALL CASES INTO ONE PROC, I'M BETTER THAN LIFE() +//I thought about mob/living but silicons and simple_animals don't want this just yet. +//Right now just handles lying down, but could handle other cases later. +//IMPORTANT: Multiple animate() calls do not stack well, so try to do them all at once if you can. +/mob/living/carbon/update_transform() + var/matrix/ntransform = matrix(transform) //aka transform.Copy() + var/final_pixel_y = pixel_y + var/final_dir = dir + var/changed = 0 + + if(lying != lying_prev) + changed++ + ntransform.TurnTo(lying_prev,lying) + if(lying == 0) //Lying to standing + final_pixel_y += 6 + else //if(lying != 0) + if(lying_prev == 0) //Standing to lying + final_pixel_y -= 6 + + if(dir & (EAST|WEST)) //Facing east or west + final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass + lying_prev = lying //so we don't try to animate until there's been another change. + + if(changed) animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT) \ No newline at end of file diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 6cfe2ea8729..9b0accbe230 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -1,63 +1,63 @@ -/mob/living/gib(var/animation = 1) - var/prev_lying = lying - death(1) - - var/atom/movable/overlay/animate = setup_animation(animation, prev_lying) - if(animate) - gib_animation(animate) - - spawn_gibs() - - end_animation(animate) // Will qdel(src) - -/mob/living/proc/spawn_gibs() - gibs(loc, viruses) - -/mob/living/proc/gib_animation(var/animate, var/flick_name = "gibbed") - flick(flick_name, animate) - -/mob/living/dust(var/animation = 0) - death(1) - var/atom/movable/overlay/animate = setup_animation(animation, 0) - if(animate) - dust_animation(animate) - - spawn_dust() - end_animation(animate) - -/mob/living/proc/spawn_dust() - new /obj/effect/decal/cleanable/ash(loc) - -/mob/living/proc/dust_animation(var/animate, var/flick_name = "") - flick(flick_name, animate) - -/mob/living/death(gibbed) - timeofdeath = world.time - - living_mob_list -= src - if(!gibbed) - dead_mob_list += src - - -/mob/living/proc/setup_animation(var/animation, var/prev_lying) - var/atom/movable/overlay/animate = null - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - alpha = 0 - - if(!prev_lying && animation) - animate = new(loc) - animate.icon_state = "blank" - animate.icon = 'icons/mob/mob.dmi' - animate.master = src - return animate - -/mob/living/proc/end_animation(var/animate) - if(!animate) - qdel(src) - else - spawn(15) - if(animate) qdel(animate) +/mob/living/gib(var/animation = 1) + var/prev_lying = lying + death(1) + + var/atom/movable/overlay/animate = setup_animation(animation, prev_lying) + if(animate) + gib_animation(animate) + + spawn_gibs() + + end_animation(animate) // Will qdel(src) + +/mob/living/proc/spawn_gibs() + gibs(loc, viruses) + +/mob/living/proc/gib_animation(var/animate, var/flick_name = "gibbed") + flick(flick_name, animate) + +/mob/living/dust(var/animation = 0) + death(1) + var/atom/movable/overlay/animate = setup_animation(animation, 0) + if(animate) + dust_animation(animate) + + spawn_dust() + end_animation(animate) + +/mob/living/proc/spawn_dust() + new /obj/effect/decal/cleanable/ash(loc) + +/mob/living/proc/dust_animation(var/animate, var/flick_name = "") + flick(flick_name, animate) + +/mob/living/death(gibbed) + timeofdeath = world.time + + living_mob_list -= src + if(!gibbed) + dead_mob_list += src + + +/mob/living/proc/setup_animation(var/animation, var/prev_lying) + var/atom/movable/overlay/animate = null + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + alpha = 0 + + if(!prev_lying && animation) + animate = new(loc) + animate.icon_state = "blank" + animate.icon = 'icons/mob/mob.dmi' + animate.master = src + return animate + +/mob/living/proc/end_animation(var/animate) + if(!animate) + qdel(src) + else + spawn(15) + if(animate) qdel(animate) if(src) qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 1543b3f14aa..f4dcb2f7648 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -1,282 +1,282 @@ -//This only assumes that the mob has a body and face with at least one mouth. -//Things like airguitar can be done without arms, and the flap thing makes so little sense it's a keeper. -//Intended to be called by a higher up emote proc if the requested emote isn't in the custom emotes. - -/mob/living/emote(var/act,var/m_type=1,var/message = null) - var/param = null - - if (findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - switch(act)//Hello, how would you like to order? Alphabetically! - if ("aflap") - if (!src.restrained()) - message = "[src] flaps its wings ANGRILY!" - m_type = 2 - - if ("blush") - message = "[src] blushes." - m_type = 1 - - if ("bow") - if (!src.buckled) - var/M = null - if (param) - for (var/mob/A in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - param = null - if (param) - message = "[src] bows to [param]." - else - message = "[src] bows." - m_type = 1 - - if ("burp") - message = "[src] burps." - m_type = 2 - - if ("choke") - message = "[src] chokes!" - m_type = 2 - - if ("chuckle") - message = "[src] chuckles." - m_type = 2 - - if ("collapse") - Paralyse(2) - message = "[src] collapses!" - m_type = 2 - - if ("cough") - message = "[src] coughs!" - m_type = 2 - - if ("dance") - if (!src.restrained()) - message = "[src] dances around happily." - m_type = 1 - - if ("deathgasp") - message = "[src] seizes up and falls limp, its eyes dead and lifeless..." - m_type = 1 - - if ("drool") - message = "[src] drools." - m_type = 1 - - if ("faint") - message = "[src] faints." - if(src.sleeping) - return //Can't faint while asleep - src.sleeping += 10 //Short-short nap - m_type = 1 - - if ("flap") - if (!src.restrained()) - message = "[src] flaps its wings." - m_type = 2 - - if ("frown") - message = "[src] frowns." - m_type = 1 - - if ("gasp") - message = "[src] gasps!" - m_type = 2 - - if ("giggle") - message = "[src] giggles." - m_type = 2 - - if ("glare") - var/M = null - if (param) - for (var/mob/A in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - param = null - if (param) - message = "[src] glares at [param]." - else - message = "[src] glares." - - if ("grin") - message = "[src] grins." - m_type = 1 - - if ("jump") - message = "[src] jumps!" - m_type = 1 - - if ("laugh") - message = "[src] laughs." - m_type = 2 - - if ("look") - var/M = null - if (param) - for (var/mob/A in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - param = null - if (param) - message = "[src] looks at [param]." - else - message = "[src] looks." - m_type = 1 - - if ("me") - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "You cannot send IC messages (muted)." - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - if (stat) - return - if(!(message)) - return - else - message = "[src] [message]" - - if ("nod") - message = "[src] nods." - m_type = 1 - - if ("point") - if (!src.restrained()) - var/mob/M = null - if (param) - for (var/atom/A as mob|obj|turf|area in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - message = "[src] points." - else - M.point() - if (M) - message = "[src] points to [M]." - else - m_type = 1 - - if ("scream") - message = "[src] screams!" - m_type = 2 - - if ("shake") - message = "[src] shakes its head." - m_type = 1 - - if ("sigh") - message = "[src] sighs." - m_type = 2 - - if ("sit") - message = "[src] sits down." - m_type = 1 - - if ("smile") - message = "[src] smiles." - m_type = 1 - - if ("sneeze") - message = "[src] sneezes." - m_type = 2 - - if ("sniff") - message = "[src] sniffs." - m_type = 2 - - if ("snore") - message = "[src] snores." - m_type = 2 - - if ("stare") - var/M = null - if (param) - for (var/mob/A in view(1, src)) - if (param == A.name) - M = A - break - if (!M) - param = null - if (param) - message = "[src] stares at [param]." - else - message = "[src] stares." - - if ("sulk") - message = "[src] sulks down sadly." - m_type = 1 - - if ("sway") - message = "[src] sways around dizzily." - m_type = 1 - - if ("tremble") - message = "[src] trembles in fear!" - m_type = 1 - - if ("twitch") - message = "[src] twitches violently." - m_type = 1 - - if ("twitch_s") - message = "[src] twitches." - m_type = 1 - - if ("wave") - message = "[src] waves." - m_type = 1 - - if ("whimper") - message = "[src] whimpers." - m_type = 2 - - if ("yawn") - message = "[src] yawns." - m_type = 2 - - if ("help") - src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, jump, laugh, look, me, nod, point-atom, scream, shake, sit, sigh, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tremble, twitch, twitch_s, wave, whimper, yawn" - - else - src << "\blue Unusable emote '[act]'. Say *help for a list." - - - - - - if (message) - log_emote("[name]/[key] : [message]") - - //Hearing gasp and such every five seconds is not good emotes were not global for a reason. - // Maybe some people are okay with that. - - for(var/mob/M in dead_mob_list) - if(!M.client || istype(M, /mob/new_player)) - continue //skip monkeys, leavers and new players - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) - M.show_message(message) - - - if (m_type & 1) - for (var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - else if (m_type & 2) - for (var/mob/O in hearers(src.loc, null)) - O.show_message(message, m_type) +//This only assumes that the mob has a body and face with at least one mouth. +//Things like airguitar can be done without arms, and the flap thing makes so little sense it's a keeper. +//Intended to be called by a higher up emote proc if the requested emote isn't in the custom emotes. + +/mob/living/emote(var/act,var/m_type=1,var/message = null) + var/param = null + + if (findtext(act, "-", 1, null)) + var/t1 = findtext(act, "-", 1, null) + param = copytext(act, t1 + 1, length(act) + 1) + act = copytext(act, 1, t1) + + if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' + act = copytext(act,1,length(act)) + + switch(act)//Hello, how would you like to order? Alphabetically! + if ("aflap") + if (!src.restrained()) + message = "[src] flaps its wings ANGRILY!" + m_type = 2 + + if ("blush") + message = "[src] blushes." + m_type = 1 + + if ("bow") + if (!src.buckled) + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] bows to [param]." + else + message = "[src] bows." + m_type = 1 + + if ("burp") + message = "[src] burps." + m_type = 2 + + if ("choke") + message = "[src] chokes!" + m_type = 2 + + if ("chuckle") + message = "[src] chuckles." + m_type = 2 + + if ("collapse") + Paralyse(2) + message = "[src] collapses!" + m_type = 2 + + if ("cough") + message = "[src] coughs!" + m_type = 2 + + if ("dance") + if (!src.restrained()) + message = "[src] dances around happily." + m_type = 1 + + if ("deathgasp") + message = "[src] seizes up and falls limp, its eyes dead and lifeless..." + m_type = 1 + + if ("drool") + message = "[src] drools." + m_type = 1 + + if ("faint") + message = "[src] faints." + if(src.sleeping) + return //Can't faint while asleep + src.sleeping += 10 //Short-short nap + m_type = 1 + + if ("flap") + if (!src.restrained()) + message = "[src] flaps its wings." + m_type = 2 + + if ("frown") + message = "[src] frowns." + m_type = 1 + + if ("gasp") + message = "[src] gasps!" + m_type = 2 + + if ("giggle") + message = "[src] giggles." + m_type = 2 + + if ("glare") + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] glares at [param]." + else + message = "[src] glares." + + if ("grin") + message = "[src] grins." + m_type = 1 + + if ("jump") + message = "[src] jumps!" + m_type = 1 + + if ("laugh") + message = "[src] laughs." + m_type = 2 + + if ("look") + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] looks at [param]." + else + message = "[src] looks." + m_type = 1 + + if ("me") + if (src.client) + if(client.prefs.muted & MUTE_IC) + src << "You cannot send IC messages (muted)." + return + if (src.client.handle_spam_prevention(message,MUTE_IC)) + return + if (stat) + return + if(!(message)) + return + else + message = "[src] [message]" + + if ("nod") + message = "[src] nods." + m_type = 1 + + if ("point") + if (!src.restrained()) + var/mob/M = null + if (param) + for (var/atom/A as mob|obj|turf|area in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + message = "[src] points." + else + M.point() + if (M) + message = "[src] points to [M]." + else + m_type = 1 + + if ("scream") + message = "[src] screams!" + m_type = 2 + + if ("shake") + message = "[src] shakes its head." + m_type = 1 + + if ("sigh") + message = "[src] sighs." + m_type = 2 + + if ("sit") + message = "[src] sits down." + m_type = 1 + + if ("smile") + message = "[src] smiles." + m_type = 1 + + if ("sneeze") + message = "[src] sneezes." + m_type = 2 + + if ("sniff") + message = "[src] sniffs." + m_type = 2 + + if ("snore") + message = "[src] snores." + m_type = 2 + + if ("stare") + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] stares at [param]." + else + message = "[src] stares." + + if ("sulk") + message = "[src] sulks down sadly." + m_type = 1 + + if ("sway") + message = "[src] sways around dizzily." + m_type = 1 + + if ("tremble") + message = "[src] trembles in fear!" + m_type = 1 + + if ("twitch") + message = "[src] twitches violently." + m_type = 1 + + if ("twitch_s") + message = "[src] twitches." + m_type = 1 + + if ("wave") + message = "[src] waves." + m_type = 1 + + if ("whimper") + message = "[src] whimpers." + m_type = 2 + + if ("yawn") + message = "[src] yawns." + m_type = 2 + + if ("help") + src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, jump, laugh, look, me, nod, point-atom, scream, shake, sit, sigh, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tremble, twitch, twitch_s, wave, whimper, yawn" + + else + src << "\blue Unusable emote '[act]'. Say *help for a list." + + + + + + if (message) + log_emote("[name]/[key] : [message]") + + //Hearing gasp and such every five seconds is not good emotes were not global for a reason. + // Maybe some people are okay with that. + + for(var/mob/M in dead_mob_list) + if(!M.client || istype(M, /mob/new_player)) + continue //skip monkeys, leavers and new players + if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) + M.show_message(message) + + + if (m_type & 1) + for (var/mob/O in viewers(src, null)) + O.show_message(message, m_type) + else if (m_type & 2) + for (var/mob/O in hearers(src.loc, null)) + O.show_message(message, m_type) diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index 3502c8d76f1..aa2bb96cfe2 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -1,719 +1,719 @@ -// List is required to compile the resources into the game when it loads. -// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable. -#ifdef AI_VOX - -var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', -"." = 'sound/vox_fem/..ogg', -"a" = 'sound/vox_fem/a.ogg', -"abortions" = 'sound/vox_fem/abortions.ogg', -"accelerating" = 'sound/vox_fem/accelerating.ogg', -"accelerator" = 'sound/vox_fem/accelerator.ogg', -"accepted" = 'sound/vox_fem/accepted.ogg', -"access" = 'sound/vox_fem/access.ogg', -"acknowledge" = 'sound/vox_fem/acknowledge.ogg', -"acknowledged" = 'sound/vox_fem/acknowledged.ogg', -"acquired" = 'sound/vox_fem/acquired.ogg', -"acquisition" = 'sound/vox_fem/acquisition.ogg', -"across" = 'sound/vox_fem/across.ogg', -"activate" = 'sound/vox_fem/activate.ogg', -"activated" = 'sound/vox_fem/activated.ogg', -"activity" = 'sound/vox_fem/activity.ogg', -"adios" = 'sound/vox_fem/adios.ogg', -"administration" = 'sound/vox_fem/administration.ogg', -"advanced" = 'sound/vox_fem/advanced.ogg', -"aft" = 'sound/vox_fem/aft.ogg', -"after" = 'sound/vox_fem/after.ogg', -"agent" = 'sound/vox_fem/agent.ogg', -"ai" = 'sound/vox_fem/ai.ogg', -"alarm" = 'sound/vox_fem/alarm.ogg', -"alert" = 'sound/vox_fem/alert.ogg', -"alien" = 'sound/vox_fem/alien.ogg', -"aligned" = 'sound/vox_fem/aligned.ogg', -"all" = 'sound/vox_fem/all.ogg', -"alpha" = 'sound/vox_fem/alpha.ogg', -"am" = 'sound/vox_fem/am.ogg', -"amigo" = 'sound/vox_fem/amigo.ogg', -"ammunition" = 'sound/vox_fem/ammunition.ogg', -"an" = 'sound/vox_fem/an.ogg', -"and" = 'sound/vox_fem/and.ogg', -"announcement" = 'sound/vox_fem/announcement.ogg', -"anomalous" = 'sound/vox_fem/anomalous.ogg', -"antenna" = 'sound/vox_fem/antenna.ogg', -"any" = 'sound/vox_fem/any.ogg', -"apprehend" = 'sound/vox_fem/apprehend.ogg', -"approach" = 'sound/vox_fem/approach.ogg', -"are" = 'sound/vox_fem/are.ogg', -"area" = 'sound/vox_fem/area.ogg', -"arm" = 'sound/vox_fem/arm.ogg', -"armed" = 'sound/vox_fem/armed.ogg', -"armor" = 'sound/vox_fem/armor.ogg', -"armory" = 'sound/vox_fem/armory.ogg', -"array" = 'sound/vox_fem/array.ogg', -"arrest" = 'sound/vox_fem/arrest.ogg', -"asimov" = 'sound/vox_fem/asimov.ogg', -"ass" = 'sound/vox_fem/ass.ogg', -"asshole" = 'sound/vox_fem/asshole.ogg', -"assholes" = 'sound/vox_fem/assholes.ogg', -"at" = 'sound/vox_fem/at.ogg', -"atomic" = 'sound/vox_fem/atomic.ogg', -"attention" = 'sound/vox_fem/attention.ogg', -"authorize" = 'sound/vox_fem/authorize.ogg', -"authorized" = 'sound/vox_fem/authorized.ogg', -"automatic" = 'sound/vox_fem/automatic.ogg', -"away" = 'sound/vox_fem/away.ogg', -"b" = 'sound/vox_fem/b.ogg', -"back" = 'sound/vox_fem/back.ogg', -"backman" = 'sound/vox_fem/backman.ogg', -"bad" = 'sound/vox_fem/bad.ogg', -"bag" = 'sound/vox_fem/bag.ogg', -"bailey" = 'sound/vox_fem/bailey.ogg', -"barracks" = 'sound/vox_fem/barracks.ogg', -"base" = 'sound/vox_fem/base.ogg', -"bay" = 'sound/vox_fem/bay.ogg', -"be" = 'sound/vox_fem/be.ogg', -"been" = 'sound/vox_fem/been.ogg', -"before" = 'sound/vox_fem/before.ogg', -"beyond" = 'sound/vox_fem/beyond.ogg', -"biohazard" = 'sound/vox_fem/biohazard.ogg', -"biological" = 'sound/vox_fem/biological.ogg', -"birdwell" = 'sound/vox_fem/birdwell.ogg', -"bitch" = 'sound/vox_fem/bitch.ogg', -"bitches" = 'sound/vox_fem/bitches.ogg', -"black" = 'sound/vox_fem/black.ogg', -"blast" = 'sound/vox_fem/blast.ogg', -"blocked" = 'sound/vox_fem/blocked.ogg', -"blue" = 'sound/vox_fem/blue.ogg', -"bottom" = 'sound/vox_fem/bottom.ogg', -"bravo" = 'sound/vox_fem/bravo.ogg', -"breach" = 'sound/vox_fem/breach.ogg', -"breached" = 'sound/vox_fem/breached.ogg', -"break" = 'sound/vox_fem/break.ogg', -"bridge" = 'sound/vox_fem/bridge.ogg', -"bust" = 'sound/vox_fem/bust.ogg', -"but" = 'sound/vox_fem/but.ogg', -"button" = 'sound/vox_fem/button.ogg', -"bypass" = 'sound/vox_fem/bypass.ogg', -"c" = 'sound/vox_fem/c.ogg', -"cable" = 'sound/vox_fem/cable.ogg', -"call" = 'sound/vox_fem/call.ogg', -"called" = 'sound/vox_fem/called.ogg', -"canal" = 'sound/vox_fem/canal.ogg', -"cap" = 'sound/vox_fem/cap.ogg', -"captain" = 'sound/vox_fem/captain.ogg', -"capture" = 'sound/vox_fem/capture.ogg', -"cargo" = 'sound/vox_fem/cargo.ogg', -"ceiling" = 'sound/vox_fem/ceiling.ogg', -"celsius" = 'sound/vox_fem/celsius.ogg', -"centcom" = 'sound/vox_fem/centcom.ogg', -"center" = 'sound/vox_fem/center.ogg', -"centi" = 'sound/vox_fem/centi.ogg', -"central" = 'sound/vox_fem/central.ogg', -"chamber" = 'sound/vox_fem/chamber.ogg', -"changed" = 'sound/vox_fem/changed.ogg', -"charlie" = 'sound/vox_fem/charlie.ogg', -"check" = 'sound/vox_fem/check.ogg', -"checkpoint" = 'sound/vox_fem/checkpoint.ogg', -"chemical" = 'sound/vox_fem/chemical.ogg', -"cleanup" = 'sound/vox_fem/cleanup.ogg', -"clear" = 'sound/vox_fem/clear.ogg', -"clearance" = 'sound/vox_fem/clearance.ogg', -"close" = 'sound/vox_fem/close.ogg', -"clown" = 'sound/vox_fem/clown.ogg', -"code" = 'sound/vox_fem/code.ogg', -"coded" = 'sound/vox_fem/coded.ogg', -"collider" = 'sound/vox_fem/collider.ogg', -"come" = 'sound/vox_fem/come.ogg', -"command" = 'sound/vox_fem/command.ogg', -"communication" = 'sound/vox_fem/communication.ogg', -"complex" = 'sound/vox_fem/complex.ogg', -"computer" = 'sound/vox_fem/computer.ogg', -"condition" = 'sound/vox_fem/condition.ogg', -"connor" = 'sound/vox_fem/connor.ogg', -"containment" = 'sound/vox_fem/containment.ogg', -"contamination" = 'sound/vox_fem/contamination.ogg', -"contraband" = 'sound/vox_fem/contraband.ogg', -"control" = 'sound/vox_fem/control.ogg', -"coolant" = 'sound/vox_fem/coolant.ogg', -"coomer" = 'sound/vox_fem/coomer.ogg', -"core" = 'sound/vox_fem/core.ogg', -"correct" = 'sound/vox_fem/correct.ogg', -"corridor" = 'sound/vox_fem/corridor.ogg', -"coward" = 'sound/vox_fem/coward.ogg', -"cowards" = 'sound/vox_fem/cowards.ogg', -"crew" = 'sound/vox_fem/crew.ogg', -"cross" = 'sound/vox_fem/cross.ogg', -"cryogenic" = 'sound/vox_fem/cryogenic.ogg', -"cunt" = 'sound/vox_fem/cunt.ogg', -"cyborg" = 'sound/vox_fem/cyborg.ogg', -"cyborgs" = 'sound/vox_fem/cyborgs.ogg', -"d" = 'sound/vox_fem/d.ogg', -"damage" = 'sound/vox_fem/damage.ogg', -"damaged" = 'sound/vox_fem/damaged.ogg', -"danger" = 'sound/vox_fem/danger.ogg', -"day" = 'sound/vox_fem/day.ogg', -"deactivated" = 'sound/vox_fem/deactivated.ogg', -"decompression" = 'sound/vox_fem/decompression.ogg', -"decontamination" = 'sound/vox_fem/decontamination.ogg', -"deeoo" = 'sound/vox_fem/deeoo.ogg', -"defense" = 'sound/vox_fem/defense.ogg', -"degrees" = 'sound/vox_fem/degrees.ogg', -"delta" = 'sound/vox_fem/delta.ogg', -"denied" = 'sound/vox_fem/denied.ogg', -"deploy" = 'sound/vox_fem/deploy.ogg', -"deployed" = 'sound/vox_fem/deployed.ogg', -"destroy" = 'sound/vox_fem/destroy.ogg', -"destroyed" = 'sound/vox_fem/destroyed.ogg', -"detain" = 'sound/vox_fem/detain.ogg', -"detected" = 'sound/vox_fem/detected.ogg', -"detonation" = 'sound/vox_fem/detonation.ogg', -"device" = 'sound/vox_fem/device.ogg', -"did" = 'sound/vox_fem/did.ogg', -"die" = 'sound/vox_fem/die.ogg', -"dimensional" = 'sound/vox_fem/dimensional.ogg', -"dirt" = 'sound/vox_fem/dirt.ogg', -"disengaged" = 'sound/vox_fem/disengaged.ogg', -"dish" = 'sound/vox_fem/dish.ogg', -"disposal" = 'sound/vox_fem/disposal.ogg', -"distance" = 'sound/vox_fem/distance.ogg', -"distortion" = 'sound/vox_fem/distortion.ogg', -"do" = 'sound/vox_fem/do.ogg', -"doctor" = 'sound/vox_fem/doctor.ogg', -"door" = 'sound/vox_fem/door.ogg', -"down" = 'sound/vox_fem/down.ogg', -"dual" = 'sound/vox_fem/dual.ogg', -"duct" = 'sound/vox_fem/duct.ogg', -"e" = 'sound/vox_fem/e.ogg', -"east" = 'sound/vox_fem/east.ogg', -"echo" = 'sound/vox_fem/echo.ogg', -"ed" = 'sound/vox_fem/ed.ogg', -"effect" = 'sound/vox_fem/effect.ogg', -"egress" = 'sound/vox_fem/egress.ogg', -"eight" = 'sound/vox_fem/eight.ogg', -"eighteen" = 'sound/vox_fem/eighteen.ogg', -"eighty" = 'sound/vox_fem/eighty.ogg', -"electric" = 'sound/vox_fem/electric.ogg', -"electromagnetic" = 'sound/vox_fem/electromagnetic.ogg', -"elevator" = 'sound/vox_fem/elevator.ogg', -"eleven" = 'sound/vox_fem/eleven.ogg', -"eliminate" = 'sound/vox_fem/eliminate.ogg', -"emergency" = 'sound/vox_fem/emergency.ogg', -"energy" = 'sound/vox_fem/energy.ogg', -"engage" = 'sound/vox_fem/engage.ogg', -"engaged" = 'sound/vox_fem/engaged.ogg', -"engine" = 'sound/vox_fem/engine.ogg', -"enter" = 'sound/vox_fem/enter.ogg', -"entry" = 'sound/vox_fem/entry.ogg', -"environment" = 'sound/vox_fem/environment.ogg', -"error" = 'sound/vox_fem/error.ogg', -"escape" = 'sound/vox_fem/escape.ogg', -"evacuate" = 'sound/vox_fem/evacuate.ogg', -"exchange" = 'sound/vox_fem/exchange.ogg', -"exit" = 'sound/vox_fem/exit.ogg', -"expect" = 'sound/vox_fem/expect.ogg', -"experiment" = 'sound/vox_fem/experiment.ogg', -"experimental" = 'sound/vox_fem/experimental.ogg', -"explode" = 'sound/vox_fem/explode.ogg', -"explosion" = 'sound/vox_fem/explosion.ogg', -"exposure" = 'sound/vox_fem/exposure.ogg', -"exterminate" = 'sound/vox_fem/exterminate.ogg', -"extinguish" = 'sound/vox_fem/extinguish.ogg', -"extinguisher" = 'sound/vox_fem/extinguisher.ogg', -"extreme" = 'sound/vox_fem/extreme.ogg', -"f" = 'sound/vox_fem/f.ogg', -"facility" = 'sound/vox_fem/facility.ogg', -"fahrenheit" = 'sound/vox_fem/fahrenheit.ogg', -"failed" = 'sound/vox_fem/failed.ogg', -"failure" = 'sound/vox_fem/failure.ogg', -"farthest" = 'sound/vox_fem/farthest.ogg', -"fast" = 'sound/vox_fem/fast.ogg', -"feet" = 'sound/vox_fem/feet.ogg', -"field" = 'sound/vox_fem/field.ogg', -"fifteen" = 'sound/vox_fem/fifteen.ogg', -"fifth" = 'sound/vox_fem/fifth.ogg', -"fifty" = 'sound/vox_fem/fifty.ogg', -"final" = 'sound/vox_fem/final.ogg', -"fine" = 'sound/vox_fem/fine.ogg', -"fire" = 'sound/vox_fem/fire.ogg', -"first" = 'sound/vox_fem/first.ogg', -"five" = 'sound/vox_fem/five.ogg', -"flooding" = 'sound/vox_fem/flooding.ogg', -"floor" = 'sound/vox_fem/floor.ogg', -"fool" = 'sound/vox_fem/fool.ogg', -"for" = 'sound/vox_fem/for.ogg', -"forbidden" = 'sound/vox_fem/forbidden.ogg', -"force" = 'sound/vox_fem/force.ogg', -"fore" = 'sound/vox_fem/fore.ogg', -"forms" = 'sound/vox_fem/forms.ogg', -"found" = 'sound/vox_fem/found.ogg', -"four" = 'sound/vox_fem/four.ogg', -"fourteen" = 'sound/vox_fem/fourteen.ogg', -"fourth" = 'sound/vox_fem/fourth.ogg', -"fourty" = 'sound/vox_fem/fourty.ogg', -"foxtrot" = 'sound/vox_fem/foxtrot.ogg', -"freeman" = 'sound/vox_fem/freeman.ogg', -"freezer" = 'sound/vox_fem/freezer.ogg', -"from" = 'sound/vox_fem/from.ogg', -"front" = 'sound/vox_fem/front.ogg', -"fuck" = 'sound/vox_fem/fuck.ogg', -"fucking" = 'sound/vox_fem/fucking.ogg', -"fucks" = 'sound/vox_fem/fucks.ogg', -"fuel" = 'sound/vox_fem/fuel.ogg', -"g" = 'sound/vox_fem/g.ogg', -"gas" = 'sound/vox_fem/gas.ogg', -"get" = 'sound/vox_fem/get.ogg', -"glory" = 'sound/vox_fem/glory.ogg', -"go" = 'sound/vox_fem/go.ogg', -"going" = 'sound/vox_fem/going.ogg', -"good" = 'sound/vox_fem/good.ogg', -"goodbye" = 'sound/vox_fem/goodbye.ogg', -"gordon" = 'sound/vox_fem/gordon.ogg', -"got" = 'sound/vox_fem/got.ogg', -"government" = 'sound/vox_fem/government.ogg', -"granted" = 'sound/vox_fem/granted.ogg', -"gray" = 'sound/vox_fem/gray.ogg', -"great" = 'sound/vox_fem/great.ogg', -"green" = 'sound/vox_fem/green.ogg', -"grenade" = 'sound/vox_fem/grenade.ogg', -"guard" = 'sound/vox_fem/guard.ogg', -"gulf" = 'sound/vox_fem/gulf.ogg', -"gun" = 'sound/vox_fem/gun.ogg', -"guthrie" = 'sound/vox_fem/guthrie.ogg', -"h" = 'sound/vox_fem/h.ogg', -"hacker" = 'sound/vox_fem/hacker.ogg', -"hackers" = 'sound/vox_fem/hackers.ogg', -"handling" = 'sound/vox_fem/handling.ogg', -"hangar" = 'sound/vox_fem/hangar.ogg', -"harm" = 'sound/vox_fem/harm.ogg', -"has" = 'sound/vox_fem/has.ogg', -"have" = 'sound/vox_fem/have.ogg', -"hazard" = 'sound/vox_fem/hazard.ogg', -"head" = 'sound/vox_fem/head.ogg', -"health" = 'sound/vox_fem/health.ogg', -"heat" = 'sound/vox_fem/heat.ogg', -"helicopter" = 'sound/vox_fem/helicopter.ogg', -"helium" = 'sound/vox_fem/helium.ogg', -"hello" = 'sound/vox_fem/hello.ogg', -"help" = 'sound/vox_fem/help.ogg', -"here" = 'sound/vox_fem/here.ogg', -"hide" = 'sound/vox_fem/hide.ogg', -"high" = 'sound/vox_fem/high.ogg', -"highest" = 'sound/vox_fem/highest.ogg', -"hit" = 'sound/vox_fem/hit.ogg', -"hole" = 'sound/vox_fem/hole.ogg', -"hostile" = 'sound/vox_fem/hostile.ogg', -"hot" = 'sound/vox_fem/hot.ogg', -"hotel" = 'sound/vox_fem/hotel.ogg', -"hour" = 'sound/vox_fem/hour.ogg', -"hours" = 'sound/vox_fem/hours.ogg', -"human" = 'sound/vox_fem/human.ogg', -"hundred" = 'sound/vox_fem/hundred.ogg', -"hunger" = 'sound/vox_fem/hunger.ogg', -"hydro" = 'sound/vox_fem/hydro.ogg', -"hydroponics" = 'sound/vox_fem/hydroponics.ogg', -"i" = 'sound/vox_fem/i.ogg', -"idiot" = 'sound/vox_fem/idiot.ogg', -"illegal" = 'sound/vox_fem/illegal.ogg', -"immediate" = 'sound/vox_fem/immediate.ogg', -"immediately" = 'sound/vox_fem/immediately.ogg', -"in" = 'sound/vox_fem/in.ogg', -"inches" = 'sound/vox_fem/inches.ogg', -"india" = 'sound/vox_fem/india.ogg', -"ing" = 'sound/vox_fem/ing.ogg', -"inoperative" = 'sound/vox_fem/inoperative.ogg', -"inside" = 'sound/vox_fem/inside.ogg', -"inspection" = 'sound/vox_fem/inspection.ogg', -"inspector" = 'sound/vox_fem/inspector.ogg', -"interchange" = 'sound/vox_fem/interchange.ogg', -"intruder" = 'sound/vox_fem/intruder.ogg', -"invalid" = 'sound/vox_fem/invalid.ogg', -"invasion" = 'sound/vox_fem/invasion.ogg', -"is" = 'sound/vox_fem/is.ogg', -"it" = 'sound/vox_fem/it.ogg', -"j" = 'sound/vox_fem/j.ogg', -"johnson" = 'sound/vox_fem/johnson.ogg', -"juliet" = 'sound/vox_fem/juliet.ogg', -"k" = 'sound/vox_fem/k.ogg', -"key" = 'sound/vox_fem/key.ogg', -"kill" = 'sound/vox_fem/kill.ogg', -"kilo" = 'sound/vox_fem/kilo.ogg', -"kit" = 'sound/vox_fem/kit.ogg', -"l" = 'sound/vox_fem/l.ogg', -"lab" = 'sound/vox_fem/lab.ogg', -"lambda" = 'sound/vox_fem/lambda.ogg', -"laser" = 'sound/vox_fem/laser.ogg', -"last" = 'sound/vox_fem/last.ogg', -"launch" = 'sound/vox_fem/launch.ogg', -"law" = 'sound/vox_fem/law.ogg', -"laws" = 'sound/vox_fem/laws.ogg', -"leak" = 'sound/vox_fem/leak.ogg', -"leave" = 'sound/vox_fem/leave.ogg', -"left" = 'sound/vox_fem/left.ogg', -"legal" = 'sound/vox_fem/legal.ogg', -"level" = 'sound/vox_fem/level.ogg', -"lever" = 'sound/vox_fem/lever.ogg', -"lie" = 'sound/vox_fem/lie.ogg', -"lieutenant" = 'sound/vox_fem/lieutenant.ogg', -"life" = 'sound/vox_fem/life.ogg', -"light" = 'sound/vox_fem/light.ogg', -"lima" = 'sound/vox_fem/lima.ogg', -"liquid" = 'sound/vox_fem/liquid.ogg', -"loading" = 'sound/vox_fem/loading.ogg', -"locate" = 'sound/vox_fem/locate.ogg', -"located" = 'sound/vox_fem/located.ogg', -"location" = 'sound/vox_fem/location.ogg', -"lock" = 'sound/vox_fem/lock.ogg', -"locked" = 'sound/vox_fem/locked.ogg', -"locker" = 'sound/vox_fem/locker.ogg', -"lockout" = 'sound/vox_fem/lockout.ogg', -"loose" = 'sound/vox_fem/loose.ogg', -"lower" = 'sound/vox_fem/lower.ogg', -"lowest" = 'sound/vox_fem/lowest.ogg', -"m" = 'sound/vox_fem/m.ogg', -"magnetic" = 'sound/vox_fem/magnetic.ogg', -"main" = 'sound/vox_fem/main.ogg', -"maintenance" = 'sound/vox_fem/maintenance.ogg', -"malfunction" = 'sound/vox_fem/malfunction.ogg', -"man" = 'sound/vox_fem/man.ogg', -"mass" = 'sound/vox_fem/mass.ogg', -"materials" = 'sound/vox_fem/materials.ogg', -"maximum" = 'sound/vox_fem/maximum.ogg', -"may" = 'sound/vox_fem/may.ogg', -"me" = 'sound/vox_fem/me.ogg', -"medbay" = 'sound/vox_fem/medbay.ogg', -"medical" = 'sound/vox_fem/medical.ogg', -"men" = 'sound/vox_fem/men.ogg', -"mercy" = 'sound/vox_fem/mercy.ogg', -"mesa" = 'sound/vox_fem/mesa.ogg', -"message" = 'sound/vox_fem/message.ogg', -"meter" = 'sound/vox_fem/meter.ogg', -"micro" = 'sound/vox_fem/micro.ogg', -"middle" = 'sound/vox_fem/middle.ogg', -"mike" = 'sound/vox_fem/mike.ogg', -"miles" = 'sound/vox_fem/miles.ogg', -"military" = 'sound/vox_fem/military.ogg', -"milli" = 'sound/vox_fem/milli.ogg', -"million" = 'sound/vox_fem/million.ogg', -"minefield" = 'sound/vox_fem/minefield.ogg', -"minimum" = 'sound/vox_fem/minimum.ogg', -"minutes" = 'sound/vox_fem/minutes.ogg', -"mister" = 'sound/vox_fem/mister.ogg', -"mode" = 'sound/vox_fem/mode.ogg', -"money" = 'sound/vox_fem/money.ogg', -"motor" = 'sound/vox_fem/motor.ogg', -"motorpool" = 'sound/vox_fem/motorpool.ogg', -"move" = 'sound/vox_fem/move.ogg', -"must" = 'sound/vox_fem/must.ogg', -"my" = 'sound/vox_fem/my.ogg', -"n" = 'sound/vox_fem/n.ogg', -"nanotrasen" = 'sound/vox_fem/nanotrasen.ogg', -"nearest" = 'sound/vox_fem/nearest.ogg', -"nice" = 'sound/vox_fem/nice.ogg', -"nine" = 'sound/vox_fem/nine.ogg', -"nineteen" = 'sound/vox_fem/nineteen.ogg', -"ninety" = 'sound/vox_fem/ninety.ogg', -"no" = 'sound/vox_fem/no.ogg', -"nominal" = 'sound/vox_fem/nominal.ogg', -"north" = 'sound/vox_fem/north.ogg', -"not" = 'sound/vox_fem/not.ogg', -"november" = 'sound/vox_fem/november.ogg', -"now" = 'sound/vox_fem/now.ogg', -"number" = 'sound/vox_fem/number.ogg', -"o" = 'sound/vox_fem/o.ogg', -"objective" = 'sound/vox_fem/objective.ogg', -"observation" = 'sound/vox_fem/observation.ogg', -"obtain" = 'sound/vox_fem/obtain.ogg', -"of" = 'sound/vox_fem/of.ogg', -"officer" = 'sound/vox_fem/officer.ogg', -"ok" = 'sound/vox_fem/ok.ogg', -"on" = 'sound/vox_fem/on.ogg', -"one" = 'sound/vox_fem/one.ogg', -"open" = 'sound/vox_fem/open.ogg', -"operating" = 'sound/vox_fem/operating.ogg', -"operations" = 'sound/vox_fem/operations.ogg', -"operative" = 'sound/vox_fem/operative.ogg', -"option" = 'sound/vox_fem/option.ogg', -"order" = 'sound/vox_fem/order.ogg', -"organic" = 'sound/vox_fem/organic.ogg', -"oscar" = 'sound/vox_fem/oscar.ogg', -"out" = 'sound/vox_fem/out.ogg', -"outside" = 'sound/vox_fem/outside.ogg', -"over" = 'sound/vox_fem/over.ogg', -"overload" = 'sound/vox_fem/overload.ogg', -"override" = 'sound/vox_fem/override.ogg', -"p" = 'sound/vox_fem/p.ogg', -"pacify" = 'sound/vox_fem/pacify.ogg', -"pain" = 'sound/vox_fem/pain.ogg', -"pal" = 'sound/vox_fem/pal.ogg', -"panel" = 'sound/vox_fem/panel.ogg', -"percent" = 'sound/vox_fem/percent.ogg', -"perimeter" = 'sound/vox_fem/perimeter.ogg', -"permitted" = 'sound/vox_fem/permitted.ogg', -"personnel" = 'sound/vox_fem/personnel.ogg', -"pipe" = 'sound/vox_fem/pipe.ogg', -"plant" = 'sound/vox_fem/plant.ogg', -"plasma" = 'sound/vox_fem/plasma.ogg', -"platform" = 'sound/vox_fem/platform.ogg', -"please" = 'sound/vox_fem/please.ogg', -"point" = 'sound/vox_fem/point.ogg', -"port" = 'sound/vox_fem/port.ogg', -"portal" = 'sound/vox_fem/portal.ogg', -"power" = 'sound/vox_fem/power.ogg', -"presence" = 'sound/vox_fem/presence.ogg', -"press" = 'sound/vox_fem/press.ogg', -"primary" = 'sound/vox_fem/primary.ogg', -"proceed" = 'sound/vox_fem/proceed.ogg', -"processing" = 'sound/vox_fem/processing.ogg', -"progress" = 'sound/vox_fem/progress.ogg', -"proper" = 'sound/vox_fem/proper.ogg', -"propulsion" = 'sound/vox_fem/propulsion.ogg', -"prosecute" = 'sound/vox_fem/prosecute.ogg', -"protective" = 'sound/vox_fem/protective.ogg', -"push" = 'sound/vox_fem/push.ogg', -"q" = 'sound/vox_fem/q.ogg', -"quantum" = 'sound/vox_fem/quantum.ogg', -"quebec" = 'sound/vox_fem/quebec.ogg', -"queen" = 'sound/vox_fem/queen.ogg', -"question" = 'sound/vox_fem/question.ogg', -"questioning" = 'sound/vox_fem/questioning.ogg', -"quick" = 'sound/vox_fem/quick.ogg', -"quit" = 'sound/vox_fem/quit.ogg', -"r" = 'sound/vox_fem/r.ogg', -"radiation" = 'sound/vox_fem/radiation.ogg', -"radioactive" = 'sound/vox_fem/radioactive.ogg', -"rads" = 'sound/vox_fem/rads.ogg', -"raider" = 'sound/vox_fem/raider.ogg', -"raiders" = 'sound/vox_fem/raiders.ogg', -"rapid" = 'sound/vox_fem/rapid.ogg', -"reach" = 'sound/vox_fem/reach.ogg', -"reached" = 'sound/vox_fem/reached.ogg', -"reactor" = 'sound/vox_fem/reactor.ogg', -"red" = 'sound/vox_fem/red.ogg', -"relay" = 'sound/vox_fem/relay.ogg', -"released" = 'sound/vox_fem/released.ogg', -"remaining" = 'sound/vox_fem/remaining.ogg', -"removal" = 'sound/vox_fem/removal.ogg', -"renegade" = 'sound/vox_fem/renegade.ogg', -"repair" = 'sound/vox_fem/repair.ogg', -"report" = 'sound/vox_fem/report.ogg', -"reports" = 'sound/vox_fem/reports.ogg', -"required" = 'sound/vox_fem/required.ogg', -"research" = 'sound/vox_fem/research.ogg', -"resevoir" = 'sound/vox_fem/resevoir.ogg', -"resistance" = 'sound/vox_fem/resistance.ogg', -"rest" = 'sound/vox_fem/rest.ogg', -"right" = 'sound/vox_fem/right.ogg', -"rocket" = 'sound/vox_fem/rocket.ogg', -"roger" = 'sound/vox_fem/roger.ogg', -"romeo" = 'sound/vox_fem/romeo.ogg', -"room" = 'sound/vox_fem/room.ogg', -"round" = 'sound/vox_fem/round.ogg', -"run" = 'sound/vox_fem/run.ogg', -"s" = 'sound/vox_fem/s.ogg', -"safe" = 'sound/vox_fem/safe.ogg', -"safety" = 'sound/vox_fem/safety.ogg', -"sarah" = 'sound/vox_fem/sarah.ogg', -"sargeant" = 'sound/vox_fem/sargeant.ogg', -"satellite" = 'sound/vox_fem/satellite.ogg', -"save" = 'sound/vox_fem/save.ogg', -"science" = 'sound/vox_fem/science.ogg', -"scream" = 'sound/vox_fem/scream.ogg', -"screen" = 'sound/vox_fem/screen.ogg', -"search" = 'sound/vox_fem/search.ogg', -"second" = 'sound/vox_fem/second.ogg', -"secondary" = 'sound/vox_fem/secondary.ogg', -"seconds" = 'sound/vox_fem/seconds.ogg', -"sector" = 'sound/vox_fem/sector.ogg', -"secure" = 'sound/vox_fem/secure.ogg', -"secured" = 'sound/vox_fem/secured.ogg', -"security" = 'sound/vox_fem/security.ogg', -"select" = 'sound/vox_fem/select.ogg', -"selected" = 'sound/vox_fem/selected.ogg', -"sensors" = 'sound/vox_fem/sensors.ogg', -"service" = 'sound/vox_fem/service.ogg', -"seven" = 'sound/vox_fem/seven.ogg', -"seventeen" = 'sound/vox_fem/seventeen.ogg', -"seventy" = 'sound/vox_fem/seventy.ogg', -"severe" = 'sound/vox_fem/severe.ogg', -"sewage" = 'sound/vox_fem/sewage.ogg', -"sewer" = 'sound/vox_fem/sewer.ogg', -"shield" = 'sound/vox_fem/shield.ogg', -"shipment" = 'sound/vox_fem/shipment.ogg', -"shirt" = 'sound/vox_fem/shirt.ogg', -"shit" = 'sound/vox_fem/shit.ogg', -"shitlord" = 'sound/vox_fem/shitlord.ogg', -"shits" = 'sound/vox_fem/shits.ogg', -"shitting" = 'sound/vox_fem/shitting.ogg', -"shock" = 'sound/vox_fem/shock.ogg', -"shoot" = 'sound/vox_fem/shoot.ogg', -"shower" = 'sound/vox_fem/shower.ogg', -"shut" = 'sound/vox_fem/shut.ogg', -"shuttle" = 'sound/vox_fem/shuttle.ogg', -"side" = 'sound/vox_fem/side.ogg', -"sierra" = 'sound/vox_fem/sierra.ogg', -"sight" = 'sound/vox_fem/sight.ogg', -"silo" = 'sound/vox_fem/silo.ogg', -"singularity" = 'sound/vox_fem/singularity.ogg', -"six" = 'sound/vox_fem/six.ogg', -"sixteen" = 'sound/vox_fem/sixteen.ogg', -"sixty" = 'sound/vox_fem/sixty.ogg', -"slime" = 'sound/vox_fem/slime.ogg', -"slow" = 'sound/vox_fem/slow.ogg', -"solar" = 'sound/vox_fem/solar.ogg', -"solars" = 'sound/vox_fem/solars.ogg', -"soldier" = 'sound/vox_fem/soldier.ogg', -"some" = 'sound/vox_fem/some.ogg', -"someone" = 'sound/vox_fem/someone.ogg', -"something" = 'sound/vox_fem/something.ogg', -"son" = 'sound/vox_fem/son.ogg', -"sorry" = 'sound/vox_fem/sorry.ogg', -"south" = 'sound/vox_fem/south.ogg', -"squad" = 'sound/vox_fem/squad.ogg', -"square" = 'sound/vox_fem/square.ogg', -"ss13" = 'sound/vox_fem/ss13.ogg', -"stairway" = 'sound/vox_fem/stairway.ogg', -"starboard" = 'sound/vox_fem/starboard.ogg', -"station" = 'sound/vox_fem/station.ogg', -"status" = 'sound/vox_fem/status.ogg', -"sterile" = 'sound/vox_fem/sterile.ogg', -"sterilization" = 'sound/vox_fem/sterilization.ogg', -"storage" = 'sound/vox_fem/storage.ogg', -"stuck" = 'sound/vox_fem/stuck.ogg', -"sub" = 'sound/vox_fem/sub.ogg', -"subsurface" = 'sound/vox_fem/subsurface.ogg', -"sudden" = 'sound/vox_fem/sudden.ogg', -"suffer" = 'sound/vox_fem/suffer.ogg', -"suit" = 'sound/vox_fem/suit.ogg', -"superconducting" = 'sound/vox_fem/superconducting.ogg', -"supercooled" = 'sound/vox_fem/supercooled.ogg', -"supply" = 'sound/vox_fem/supply.ogg', -"surface" = 'sound/vox_fem/surface.ogg', -"surrender" = 'sound/vox_fem/surrender.ogg', -"surround" = 'sound/vox_fem/surround.ogg', -"surrounded" = 'sound/vox_fem/surrounded.ogg', -"switch" = 'sound/vox_fem/switch.ogg', -"syndicate" = 'sound/vox_fem/syndicate.ogg', -"system" = 'sound/vox_fem/system.ogg', -"systems" = 'sound/vox_fem/systems.ogg', -"t" = 'sound/vox_fem/t.ogg', -"tactical" = 'sound/vox_fem/tactical.ogg', -"take" = 'sound/vox_fem/take.ogg', -"talk" = 'sound/vox_fem/talk.ogg', -"tango" = 'sound/vox_fem/tango.ogg', -"tank" = 'sound/vox_fem/tank.ogg', -"target" = 'sound/vox_fem/target.ogg', -"team" = 'sound/vox_fem/team.ogg', -"temperature" = 'sound/vox_fem/temperature.ogg', -"temporal" = 'sound/vox_fem/temporal.ogg', -"ten" = 'sound/vox_fem/ten.ogg', -"terminal" = 'sound/vox_fem/terminal.ogg', -"terminated" = 'sound/vox_fem/terminated.ogg', -"termination" = 'sound/vox_fem/termination.ogg', -"test" = 'sound/vox_fem/test.ogg', -"that" = 'sound/vox_fem/that.ogg', -"the" = 'sound/vox_fem/the.ogg', -"then" = 'sound/vox_fem/then.ogg', -"there" = 'sound/vox_fem/there.ogg', -"third" = 'sound/vox_fem/third.ogg', -"thirteen" = 'sound/vox_fem/thirteen.ogg', -"thirty" = 'sound/vox_fem/thirty.ogg', -"this" = 'sound/vox_fem/this.ogg', -"those" = 'sound/vox_fem/those.ogg', -"thousand" = 'sound/vox_fem/thousand.ogg', -"threat" = 'sound/vox_fem/threat.ogg', -"three" = 'sound/vox_fem/three.ogg', -"through" = 'sound/vox_fem/through.ogg', -"tide" = 'sound/vox_fem/tide.ogg', -"time" = 'sound/vox_fem/time.ogg', -"to" = 'sound/vox_fem/to.ogg', -"top" = 'sound/vox_fem/top.ogg', -"topside" = 'sound/vox_fem/topside.ogg', -"touch" = 'sound/vox_fem/touch.ogg', -"towards" = 'sound/vox_fem/towards.ogg', -"toxins" = 'sound/vox_fem/toxins.ogg', -"track" = 'sound/vox_fem/track.ogg', -"train" = 'sound/vox_fem/train.ogg', -"traitor" = 'sound/vox_fem/traitor.ogg', -"transportation" = 'sound/vox_fem/transportation.ogg', -"truck" = 'sound/vox_fem/truck.ogg', -"tunnel" = 'sound/vox_fem/tunnel.ogg', -"turn" = 'sound/vox_fem/turn.ogg', -"turret" = 'sound/vox_fem/turret.ogg', -"twelve" = 'sound/vox_fem/twelve.ogg', -"twenty" = 'sound/vox_fem/twenty.ogg', -"two" = 'sound/vox_fem/two.ogg', -"u" = 'sound/vox_fem/u.ogg', -"unauthorized" = 'sound/vox_fem/unauthorized.ogg', -"under" = 'sound/vox_fem/under.ogg', -"uniform" = 'sound/vox_fem/uniform.ogg', -"unlocked" = 'sound/vox_fem/unlocked.ogg', -"until" = 'sound/vox_fem/until.ogg', -"up" = 'sound/vox_fem/up.ogg', -"update" = 'sound/vox_fem/update.ogg', -"updated" = 'sound/vox_fem/updated.ogg', -"updating" = 'sound/vox_fem/updating.ogg', -"upload" = 'sound/vox_fem/upload.ogg', -"upper" = 'sound/vox_fem/upper.ogg', -"uranium" = 'sound/vox_fem/uranium.ogg', -"us" = 'sound/vox_fem/us.ogg', -"usa" = 'sound/vox_fem/usa.ogg', -"use" = 'sound/vox_fem/use.ogg', -"used" = 'sound/vox_fem/used.ogg', -"user" = 'sound/vox_fem/user.ogg', -"v" = 'sound/vox_fem/v.ogg', -"vacate" = 'sound/vox_fem/vacate.ogg', -"valid" = 'sound/vox_fem/valid.ogg', -"vapor" = 'sound/vox_fem/vapor.ogg', -"vent" = 'sound/vox_fem/vent.ogg', -"ventilation" = 'sound/vox_fem/ventilation.ogg', -"victor" = 'sound/vox_fem/victor.ogg', -"violated" = 'sound/vox_fem/violated.ogg', -"violation" = 'sound/vox_fem/violation.ogg', -"virology" = 'sound/vox_fem/virology.ogg', -"voltage" = 'sound/vox_fem/voltage.ogg', -"vox" = 'sound/vox_fem/vox.ogg', -"vox_login" = 'sound/vox_fem/vox_login.ogg', -"voxtest" = 'sound/vox_fem/voxtest.ogg', -"voxtest2" = 'sound/vox_fem/voxtest2.ogg', -"w" = 'sound/vox_fem/w.ogg', -"walk" = 'sound/vox_fem/walk.ogg', -"wall" = 'sound/vox_fem/wall.ogg', -"wanker" = 'sound/vox_fem/wanker.ogg', -"want" = 'sound/vox_fem/want.ogg', -"wanted" = 'sound/vox_fem/wanted.ogg', -"warm" = 'sound/vox_fem/warm.ogg', -"warn" = 'sound/vox_fem/warn.ogg', -"warning" = 'sound/vox_fem/warning.ogg', -"waste" = 'sound/vox_fem/waste.ogg', -"water" = 'sound/vox_fem/water.ogg', -"we" = 'sound/vox_fem/we.ogg', -"weapon" = 'sound/vox_fem/weapon.ogg', -"welcome" = 'sound/vox_fem/welcome.ogg', -"west" = 'sound/vox_fem/west.ogg', -"whiskey" = 'sound/vox_fem/whiskey.ogg', -"white" = 'sound/vox_fem/white.ogg', -"wilco" = 'sound/vox_fem/wilco.ogg', -"will" = 'sound/vox_fem/will.ogg', -"with" = 'sound/vox_fem/with.ogg', -"without" = 'sound/vox_fem/without.ogg', -"wood" = 'sound/vox_fem/wood.ogg', -"woody" = 'sound/vox_fem/woody.ogg', -"x" = 'sound/vox_fem/x.ogg', -"xeno" = 'sound/vox_fem/xeno.ogg', -"xenobiology" = 'sound/vox_fem/xenobiology.ogg', -"xenomorph" = 'sound/vox_fem/xenomorph.ogg', -"xenomorphs" = 'sound/vox_fem/xenomorphs.ogg', -"y" = 'sound/vox_fem/y.ogg', -"yankee" = 'sound/vox_fem/yankee.ogg', -"yards" = 'sound/vox_fem/yards.ogg', -"year" = 'sound/vox_fem/year.ogg', -"yellow" = 'sound/vox_fem/yellow.ogg', -"yes" = 'sound/vox_fem/yes.ogg', -"you" = 'sound/vox_fem/you.ogg', -"your" = 'sound/vox_fem/your.ogg', -"yourself" = 'sound/vox_fem/yourself.ogg', -"z" = 'sound/vox_fem/z.ogg', -"zero" = 'sound/vox_fem/zero.ogg', -"zone" = 'sound/vox_fem/zone.ogg', -"zulu" = 'sound/vox_fem/zulu.ogg', -) +// List is required to compile the resources into the game when it loads. +// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable. +#ifdef AI_VOX + +var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg', +"." = 'sound/vox_fem/..ogg', +"a" = 'sound/vox_fem/a.ogg', +"abortions" = 'sound/vox_fem/abortions.ogg', +"accelerating" = 'sound/vox_fem/accelerating.ogg', +"accelerator" = 'sound/vox_fem/accelerator.ogg', +"accepted" = 'sound/vox_fem/accepted.ogg', +"access" = 'sound/vox_fem/access.ogg', +"acknowledge" = 'sound/vox_fem/acknowledge.ogg', +"acknowledged" = 'sound/vox_fem/acknowledged.ogg', +"acquired" = 'sound/vox_fem/acquired.ogg', +"acquisition" = 'sound/vox_fem/acquisition.ogg', +"across" = 'sound/vox_fem/across.ogg', +"activate" = 'sound/vox_fem/activate.ogg', +"activated" = 'sound/vox_fem/activated.ogg', +"activity" = 'sound/vox_fem/activity.ogg', +"adios" = 'sound/vox_fem/adios.ogg', +"administration" = 'sound/vox_fem/administration.ogg', +"advanced" = 'sound/vox_fem/advanced.ogg', +"aft" = 'sound/vox_fem/aft.ogg', +"after" = 'sound/vox_fem/after.ogg', +"agent" = 'sound/vox_fem/agent.ogg', +"ai" = 'sound/vox_fem/ai.ogg', +"alarm" = 'sound/vox_fem/alarm.ogg', +"alert" = 'sound/vox_fem/alert.ogg', +"alien" = 'sound/vox_fem/alien.ogg', +"aligned" = 'sound/vox_fem/aligned.ogg', +"all" = 'sound/vox_fem/all.ogg', +"alpha" = 'sound/vox_fem/alpha.ogg', +"am" = 'sound/vox_fem/am.ogg', +"amigo" = 'sound/vox_fem/amigo.ogg', +"ammunition" = 'sound/vox_fem/ammunition.ogg', +"an" = 'sound/vox_fem/an.ogg', +"and" = 'sound/vox_fem/and.ogg', +"announcement" = 'sound/vox_fem/announcement.ogg', +"anomalous" = 'sound/vox_fem/anomalous.ogg', +"antenna" = 'sound/vox_fem/antenna.ogg', +"any" = 'sound/vox_fem/any.ogg', +"apprehend" = 'sound/vox_fem/apprehend.ogg', +"approach" = 'sound/vox_fem/approach.ogg', +"are" = 'sound/vox_fem/are.ogg', +"area" = 'sound/vox_fem/area.ogg', +"arm" = 'sound/vox_fem/arm.ogg', +"armed" = 'sound/vox_fem/armed.ogg', +"armor" = 'sound/vox_fem/armor.ogg', +"armory" = 'sound/vox_fem/armory.ogg', +"array" = 'sound/vox_fem/array.ogg', +"arrest" = 'sound/vox_fem/arrest.ogg', +"asimov" = 'sound/vox_fem/asimov.ogg', +"ass" = 'sound/vox_fem/ass.ogg', +"asshole" = 'sound/vox_fem/asshole.ogg', +"assholes" = 'sound/vox_fem/assholes.ogg', +"at" = 'sound/vox_fem/at.ogg', +"atomic" = 'sound/vox_fem/atomic.ogg', +"attention" = 'sound/vox_fem/attention.ogg', +"authorize" = 'sound/vox_fem/authorize.ogg', +"authorized" = 'sound/vox_fem/authorized.ogg', +"automatic" = 'sound/vox_fem/automatic.ogg', +"away" = 'sound/vox_fem/away.ogg', +"b" = 'sound/vox_fem/b.ogg', +"back" = 'sound/vox_fem/back.ogg', +"backman" = 'sound/vox_fem/backman.ogg', +"bad" = 'sound/vox_fem/bad.ogg', +"bag" = 'sound/vox_fem/bag.ogg', +"bailey" = 'sound/vox_fem/bailey.ogg', +"barracks" = 'sound/vox_fem/barracks.ogg', +"base" = 'sound/vox_fem/base.ogg', +"bay" = 'sound/vox_fem/bay.ogg', +"be" = 'sound/vox_fem/be.ogg', +"been" = 'sound/vox_fem/been.ogg', +"before" = 'sound/vox_fem/before.ogg', +"beyond" = 'sound/vox_fem/beyond.ogg', +"biohazard" = 'sound/vox_fem/biohazard.ogg', +"biological" = 'sound/vox_fem/biological.ogg', +"birdwell" = 'sound/vox_fem/birdwell.ogg', +"bitch" = 'sound/vox_fem/bitch.ogg', +"bitches" = 'sound/vox_fem/bitches.ogg', +"black" = 'sound/vox_fem/black.ogg', +"blast" = 'sound/vox_fem/blast.ogg', +"blocked" = 'sound/vox_fem/blocked.ogg', +"blue" = 'sound/vox_fem/blue.ogg', +"bottom" = 'sound/vox_fem/bottom.ogg', +"bravo" = 'sound/vox_fem/bravo.ogg', +"breach" = 'sound/vox_fem/breach.ogg', +"breached" = 'sound/vox_fem/breached.ogg', +"break" = 'sound/vox_fem/break.ogg', +"bridge" = 'sound/vox_fem/bridge.ogg', +"bust" = 'sound/vox_fem/bust.ogg', +"but" = 'sound/vox_fem/but.ogg', +"button" = 'sound/vox_fem/button.ogg', +"bypass" = 'sound/vox_fem/bypass.ogg', +"c" = 'sound/vox_fem/c.ogg', +"cable" = 'sound/vox_fem/cable.ogg', +"call" = 'sound/vox_fem/call.ogg', +"called" = 'sound/vox_fem/called.ogg', +"canal" = 'sound/vox_fem/canal.ogg', +"cap" = 'sound/vox_fem/cap.ogg', +"captain" = 'sound/vox_fem/captain.ogg', +"capture" = 'sound/vox_fem/capture.ogg', +"cargo" = 'sound/vox_fem/cargo.ogg', +"ceiling" = 'sound/vox_fem/ceiling.ogg', +"celsius" = 'sound/vox_fem/celsius.ogg', +"centcom" = 'sound/vox_fem/centcom.ogg', +"center" = 'sound/vox_fem/center.ogg', +"centi" = 'sound/vox_fem/centi.ogg', +"central" = 'sound/vox_fem/central.ogg', +"chamber" = 'sound/vox_fem/chamber.ogg', +"changed" = 'sound/vox_fem/changed.ogg', +"charlie" = 'sound/vox_fem/charlie.ogg', +"check" = 'sound/vox_fem/check.ogg', +"checkpoint" = 'sound/vox_fem/checkpoint.ogg', +"chemical" = 'sound/vox_fem/chemical.ogg', +"cleanup" = 'sound/vox_fem/cleanup.ogg', +"clear" = 'sound/vox_fem/clear.ogg', +"clearance" = 'sound/vox_fem/clearance.ogg', +"close" = 'sound/vox_fem/close.ogg', +"clown" = 'sound/vox_fem/clown.ogg', +"code" = 'sound/vox_fem/code.ogg', +"coded" = 'sound/vox_fem/coded.ogg', +"collider" = 'sound/vox_fem/collider.ogg', +"come" = 'sound/vox_fem/come.ogg', +"command" = 'sound/vox_fem/command.ogg', +"communication" = 'sound/vox_fem/communication.ogg', +"complex" = 'sound/vox_fem/complex.ogg', +"computer" = 'sound/vox_fem/computer.ogg', +"condition" = 'sound/vox_fem/condition.ogg', +"connor" = 'sound/vox_fem/connor.ogg', +"containment" = 'sound/vox_fem/containment.ogg', +"contamination" = 'sound/vox_fem/contamination.ogg', +"contraband" = 'sound/vox_fem/contraband.ogg', +"control" = 'sound/vox_fem/control.ogg', +"coolant" = 'sound/vox_fem/coolant.ogg', +"coomer" = 'sound/vox_fem/coomer.ogg', +"core" = 'sound/vox_fem/core.ogg', +"correct" = 'sound/vox_fem/correct.ogg', +"corridor" = 'sound/vox_fem/corridor.ogg', +"coward" = 'sound/vox_fem/coward.ogg', +"cowards" = 'sound/vox_fem/cowards.ogg', +"crew" = 'sound/vox_fem/crew.ogg', +"cross" = 'sound/vox_fem/cross.ogg', +"cryogenic" = 'sound/vox_fem/cryogenic.ogg', +"cunt" = 'sound/vox_fem/cunt.ogg', +"cyborg" = 'sound/vox_fem/cyborg.ogg', +"cyborgs" = 'sound/vox_fem/cyborgs.ogg', +"d" = 'sound/vox_fem/d.ogg', +"damage" = 'sound/vox_fem/damage.ogg', +"damaged" = 'sound/vox_fem/damaged.ogg', +"danger" = 'sound/vox_fem/danger.ogg', +"day" = 'sound/vox_fem/day.ogg', +"deactivated" = 'sound/vox_fem/deactivated.ogg', +"decompression" = 'sound/vox_fem/decompression.ogg', +"decontamination" = 'sound/vox_fem/decontamination.ogg', +"deeoo" = 'sound/vox_fem/deeoo.ogg', +"defense" = 'sound/vox_fem/defense.ogg', +"degrees" = 'sound/vox_fem/degrees.ogg', +"delta" = 'sound/vox_fem/delta.ogg', +"denied" = 'sound/vox_fem/denied.ogg', +"deploy" = 'sound/vox_fem/deploy.ogg', +"deployed" = 'sound/vox_fem/deployed.ogg', +"destroy" = 'sound/vox_fem/destroy.ogg', +"destroyed" = 'sound/vox_fem/destroyed.ogg', +"detain" = 'sound/vox_fem/detain.ogg', +"detected" = 'sound/vox_fem/detected.ogg', +"detonation" = 'sound/vox_fem/detonation.ogg', +"device" = 'sound/vox_fem/device.ogg', +"did" = 'sound/vox_fem/did.ogg', +"die" = 'sound/vox_fem/die.ogg', +"dimensional" = 'sound/vox_fem/dimensional.ogg', +"dirt" = 'sound/vox_fem/dirt.ogg', +"disengaged" = 'sound/vox_fem/disengaged.ogg', +"dish" = 'sound/vox_fem/dish.ogg', +"disposal" = 'sound/vox_fem/disposal.ogg', +"distance" = 'sound/vox_fem/distance.ogg', +"distortion" = 'sound/vox_fem/distortion.ogg', +"do" = 'sound/vox_fem/do.ogg', +"doctor" = 'sound/vox_fem/doctor.ogg', +"door" = 'sound/vox_fem/door.ogg', +"down" = 'sound/vox_fem/down.ogg', +"dual" = 'sound/vox_fem/dual.ogg', +"duct" = 'sound/vox_fem/duct.ogg', +"e" = 'sound/vox_fem/e.ogg', +"east" = 'sound/vox_fem/east.ogg', +"echo" = 'sound/vox_fem/echo.ogg', +"ed" = 'sound/vox_fem/ed.ogg', +"effect" = 'sound/vox_fem/effect.ogg', +"egress" = 'sound/vox_fem/egress.ogg', +"eight" = 'sound/vox_fem/eight.ogg', +"eighteen" = 'sound/vox_fem/eighteen.ogg', +"eighty" = 'sound/vox_fem/eighty.ogg', +"electric" = 'sound/vox_fem/electric.ogg', +"electromagnetic" = 'sound/vox_fem/electromagnetic.ogg', +"elevator" = 'sound/vox_fem/elevator.ogg', +"eleven" = 'sound/vox_fem/eleven.ogg', +"eliminate" = 'sound/vox_fem/eliminate.ogg', +"emergency" = 'sound/vox_fem/emergency.ogg', +"energy" = 'sound/vox_fem/energy.ogg', +"engage" = 'sound/vox_fem/engage.ogg', +"engaged" = 'sound/vox_fem/engaged.ogg', +"engine" = 'sound/vox_fem/engine.ogg', +"enter" = 'sound/vox_fem/enter.ogg', +"entry" = 'sound/vox_fem/entry.ogg', +"environment" = 'sound/vox_fem/environment.ogg', +"error" = 'sound/vox_fem/error.ogg', +"escape" = 'sound/vox_fem/escape.ogg', +"evacuate" = 'sound/vox_fem/evacuate.ogg', +"exchange" = 'sound/vox_fem/exchange.ogg', +"exit" = 'sound/vox_fem/exit.ogg', +"expect" = 'sound/vox_fem/expect.ogg', +"experiment" = 'sound/vox_fem/experiment.ogg', +"experimental" = 'sound/vox_fem/experimental.ogg', +"explode" = 'sound/vox_fem/explode.ogg', +"explosion" = 'sound/vox_fem/explosion.ogg', +"exposure" = 'sound/vox_fem/exposure.ogg', +"exterminate" = 'sound/vox_fem/exterminate.ogg', +"extinguish" = 'sound/vox_fem/extinguish.ogg', +"extinguisher" = 'sound/vox_fem/extinguisher.ogg', +"extreme" = 'sound/vox_fem/extreme.ogg', +"f" = 'sound/vox_fem/f.ogg', +"facility" = 'sound/vox_fem/facility.ogg', +"fahrenheit" = 'sound/vox_fem/fahrenheit.ogg', +"failed" = 'sound/vox_fem/failed.ogg', +"failure" = 'sound/vox_fem/failure.ogg', +"farthest" = 'sound/vox_fem/farthest.ogg', +"fast" = 'sound/vox_fem/fast.ogg', +"feet" = 'sound/vox_fem/feet.ogg', +"field" = 'sound/vox_fem/field.ogg', +"fifteen" = 'sound/vox_fem/fifteen.ogg', +"fifth" = 'sound/vox_fem/fifth.ogg', +"fifty" = 'sound/vox_fem/fifty.ogg', +"final" = 'sound/vox_fem/final.ogg', +"fine" = 'sound/vox_fem/fine.ogg', +"fire" = 'sound/vox_fem/fire.ogg', +"first" = 'sound/vox_fem/first.ogg', +"five" = 'sound/vox_fem/five.ogg', +"flooding" = 'sound/vox_fem/flooding.ogg', +"floor" = 'sound/vox_fem/floor.ogg', +"fool" = 'sound/vox_fem/fool.ogg', +"for" = 'sound/vox_fem/for.ogg', +"forbidden" = 'sound/vox_fem/forbidden.ogg', +"force" = 'sound/vox_fem/force.ogg', +"fore" = 'sound/vox_fem/fore.ogg', +"forms" = 'sound/vox_fem/forms.ogg', +"found" = 'sound/vox_fem/found.ogg', +"four" = 'sound/vox_fem/four.ogg', +"fourteen" = 'sound/vox_fem/fourteen.ogg', +"fourth" = 'sound/vox_fem/fourth.ogg', +"fourty" = 'sound/vox_fem/fourty.ogg', +"foxtrot" = 'sound/vox_fem/foxtrot.ogg', +"freeman" = 'sound/vox_fem/freeman.ogg', +"freezer" = 'sound/vox_fem/freezer.ogg', +"from" = 'sound/vox_fem/from.ogg', +"front" = 'sound/vox_fem/front.ogg', +"fuck" = 'sound/vox_fem/fuck.ogg', +"fucking" = 'sound/vox_fem/fucking.ogg', +"fucks" = 'sound/vox_fem/fucks.ogg', +"fuel" = 'sound/vox_fem/fuel.ogg', +"g" = 'sound/vox_fem/g.ogg', +"gas" = 'sound/vox_fem/gas.ogg', +"get" = 'sound/vox_fem/get.ogg', +"glory" = 'sound/vox_fem/glory.ogg', +"go" = 'sound/vox_fem/go.ogg', +"going" = 'sound/vox_fem/going.ogg', +"good" = 'sound/vox_fem/good.ogg', +"goodbye" = 'sound/vox_fem/goodbye.ogg', +"gordon" = 'sound/vox_fem/gordon.ogg', +"got" = 'sound/vox_fem/got.ogg', +"government" = 'sound/vox_fem/government.ogg', +"granted" = 'sound/vox_fem/granted.ogg', +"gray" = 'sound/vox_fem/gray.ogg', +"great" = 'sound/vox_fem/great.ogg', +"green" = 'sound/vox_fem/green.ogg', +"grenade" = 'sound/vox_fem/grenade.ogg', +"guard" = 'sound/vox_fem/guard.ogg', +"gulf" = 'sound/vox_fem/gulf.ogg', +"gun" = 'sound/vox_fem/gun.ogg', +"guthrie" = 'sound/vox_fem/guthrie.ogg', +"h" = 'sound/vox_fem/h.ogg', +"hacker" = 'sound/vox_fem/hacker.ogg', +"hackers" = 'sound/vox_fem/hackers.ogg', +"handling" = 'sound/vox_fem/handling.ogg', +"hangar" = 'sound/vox_fem/hangar.ogg', +"harm" = 'sound/vox_fem/harm.ogg', +"has" = 'sound/vox_fem/has.ogg', +"have" = 'sound/vox_fem/have.ogg', +"hazard" = 'sound/vox_fem/hazard.ogg', +"head" = 'sound/vox_fem/head.ogg', +"health" = 'sound/vox_fem/health.ogg', +"heat" = 'sound/vox_fem/heat.ogg', +"helicopter" = 'sound/vox_fem/helicopter.ogg', +"helium" = 'sound/vox_fem/helium.ogg', +"hello" = 'sound/vox_fem/hello.ogg', +"help" = 'sound/vox_fem/help.ogg', +"here" = 'sound/vox_fem/here.ogg', +"hide" = 'sound/vox_fem/hide.ogg', +"high" = 'sound/vox_fem/high.ogg', +"highest" = 'sound/vox_fem/highest.ogg', +"hit" = 'sound/vox_fem/hit.ogg', +"hole" = 'sound/vox_fem/hole.ogg', +"hostile" = 'sound/vox_fem/hostile.ogg', +"hot" = 'sound/vox_fem/hot.ogg', +"hotel" = 'sound/vox_fem/hotel.ogg', +"hour" = 'sound/vox_fem/hour.ogg', +"hours" = 'sound/vox_fem/hours.ogg', +"human" = 'sound/vox_fem/human.ogg', +"hundred" = 'sound/vox_fem/hundred.ogg', +"hunger" = 'sound/vox_fem/hunger.ogg', +"hydro" = 'sound/vox_fem/hydro.ogg', +"hydroponics" = 'sound/vox_fem/hydroponics.ogg', +"i" = 'sound/vox_fem/i.ogg', +"idiot" = 'sound/vox_fem/idiot.ogg', +"illegal" = 'sound/vox_fem/illegal.ogg', +"immediate" = 'sound/vox_fem/immediate.ogg', +"immediately" = 'sound/vox_fem/immediately.ogg', +"in" = 'sound/vox_fem/in.ogg', +"inches" = 'sound/vox_fem/inches.ogg', +"india" = 'sound/vox_fem/india.ogg', +"ing" = 'sound/vox_fem/ing.ogg', +"inoperative" = 'sound/vox_fem/inoperative.ogg', +"inside" = 'sound/vox_fem/inside.ogg', +"inspection" = 'sound/vox_fem/inspection.ogg', +"inspector" = 'sound/vox_fem/inspector.ogg', +"interchange" = 'sound/vox_fem/interchange.ogg', +"intruder" = 'sound/vox_fem/intruder.ogg', +"invalid" = 'sound/vox_fem/invalid.ogg', +"invasion" = 'sound/vox_fem/invasion.ogg', +"is" = 'sound/vox_fem/is.ogg', +"it" = 'sound/vox_fem/it.ogg', +"j" = 'sound/vox_fem/j.ogg', +"johnson" = 'sound/vox_fem/johnson.ogg', +"juliet" = 'sound/vox_fem/juliet.ogg', +"k" = 'sound/vox_fem/k.ogg', +"key" = 'sound/vox_fem/key.ogg', +"kill" = 'sound/vox_fem/kill.ogg', +"kilo" = 'sound/vox_fem/kilo.ogg', +"kit" = 'sound/vox_fem/kit.ogg', +"l" = 'sound/vox_fem/l.ogg', +"lab" = 'sound/vox_fem/lab.ogg', +"lambda" = 'sound/vox_fem/lambda.ogg', +"laser" = 'sound/vox_fem/laser.ogg', +"last" = 'sound/vox_fem/last.ogg', +"launch" = 'sound/vox_fem/launch.ogg', +"law" = 'sound/vox_fem/law.ogg', +"laws" = 'sound/vox_fem/laws.ogg', +"leak" = 'sound/vox_fem/leak.ogg', +"leave" = 'sound/vox_fem/leave.ogg', +"left" = 'sound/vox_fem/left.ogg', +"legal" = 'sound/vox_fem/legal.ogg', +"level" = 'sound/vox_fem/level.ogg', +"lever" = 'sound/vox_fem/lever.ogg', +"lie" = 'sound/vox_fem/lie.ogg', +"lieutenant" = 'sound/vox_fem/lieutenant.ogg', +"life" = 'sound/vox_fem/life.ogg', +"light" = 'sound/vox_fem/light.ogg', +"lima" = 'sound/vox_fem/lima.ogg', +"liquid" = 'sound/vox_fem/liquid.ogg', +"loading" = 'sound/vox_fem/loading.ogg', +"locate" = 'sound/vox_fem/locate.ogg', +"located" = 'sound/vox_fem/located.ogg', +"location" = 'sound/vox_fem/location.ogg', +"lock" = 'sound/vox_fem/lock.ogg', +"locked" = 'sound/vox_fem/locked.ogg', +"locker" = 'sound/vox_fem/locker.ogg', +"lockout" = 'sound/vox_fem/lockout.ogg', +"loose" = 'sound/vox_fem/loose.ogg', +"lower" = 'sound/vox_fem/lower.ogg', +"lowest" = 'sound/vox_fem/lowest.ogg', +"m" = 'sound/vox_fem/m.ogg', +"magnetic" = 'sound/vox_fem/magnetic.ogg', +"main" = 'sound/vox_fem/main.ogg', +"maintenance" = 'sound/vox_fem/maintenance.ogg', +"malfunction" = 'sound/vox_fem/malfunction.ogg', +"man" = 'sound/vox_fem/man.ogg', +"mass" = 'sound/vox_fem/mass.ogg', +"materials" = 'sound/vox_fem/materials.ogg', +"maximum" = 'sound/vox_fem/maximum.ogg', +"may" = 'sound/vox_fem/may.ogg', +"me" = 'sound/vox_fem/me.ogg', +"medbay" = 'sound/vox_fem/medbay.ogg', +"medical" = 'sound/vox_fem/medical.ogg', +"men" = 'sound/vox_fem/men.ogg', +"mercy" = 'sound/vox_fem/mercy.ogg', +"mesa" = 'sound/vox_fem/mesa.ogg', +"message" = 'sound/vox_fem/message.ogg', +"meter" = 'sound/vox_fem/meter.ogg', +"micro" = 'sound/vox_fem/micro.ogg', +"middle" = 'sound/vox_fem/middle.ogg', +"mike" = 'sound/vox_fem/mike.ogg', +"miles" = 'sound/vox_fem/miles.ogg', +"military" = 'sound/vox_fem/military.ogg', +"milli" = 'sound/vox_fem/milli.ogg', +"million" = 'sound/vox_fem/million.ogg', +"minefield" = 'sound/vox_fem/minefield.ogg', +"minimum" = 'sound/vox_fem/minimum.ogg', +"minutes" = 'sound/vox_fem/minutes.ogg', +"mister" = 'sound/vox_fem/mister.ogg', +"mode" = 'sound/vox_fem/mode.ogg', +"money" = 'sound/vox_fem/money.ogg', +"motor" = 'sound/vox_fem/motor.ogg', +"motorpool" = 'sound/vox_fem/motorpool.ogg', +"move" = 'sound/vox_fem/move.ogg', +"must" = 'sound/vox_fem/must.ogg', +"my" = 'sound/vox_fem/my.ogg', +"n" = 'sound/vox_fem/n.ogg', +"nanotrasen" = 'sound/vox_fem/nanotrasen.ogg', +"nearest" = 'sound/vox_fem/nearest.ogg', +"nice" = 'sound/vox_fem/nice.ogg', +"nine" = 'sound/vox_fem/nine.ogg', +"nineteen" = 'sound/vox_fem/nineteen.ogg', +"ninety" = 'sound/vox_fem/ninety.ogg', +"no" = 'sound/vox_fem/no.ogg', +"nominal" = 'sound/vox_fem/nominal.ogg', +"north" = 'sound/vox_fem/north.ogg', +"not" = 'sound/vox_fem/not.ogg', +"november" = 'sound/vox_fem/november.ogg', +"now" = 'sound/vox_fem/now.ogg', +"number" = 'sound/vox_fem/number.ogg', +"o" = 'sound/vox_fem/o.ogg', +"objective" = 'sound/vox_fem/objective.ogg', +"observation" = 'sound/vox_fem/observation.ogg', +"obtain" = 'sound/vox_fem/obtain.ogg', +"of" = 'sound/vox_fem/of.ogg', +"officer" = 'sound/vox_fem/officer.ogg', +"ok" = 'sound/vox_fem/ok.ogg', +"on" = 'sound/vox_fem/on.ogg', +"one" = 'sound/vox_fem/one.ogg', +"open" = 'sound/vox_fem/open.ogg', +"operating" = 'sound/vox_fem/operating.ogg', +"operations" = 'sound/vox_fem/operations.ogg', +"operative" = 'sound/vox_fem/operative.ogg', +"option" = 'sound/vox_fem/option.ogg', +"order" = 'sound/vox_fem/order.ogg', +"organic" = 'sound/vox_fem/organic.ogg', +"oscar" = 'sound/vox_fem/oscar.ogg', +"out" = 'sound/vox_fem/out.ogg', +"outside" = 'sound/vox_fem/outside.ogg', +"over" = 'sound/vox_fem/over.ogg', +"overload" = 'sound/vox_fem/overload.ogg', +"override" = 'sound/vox_fem/override.ogg', +"p" = 'sound/vox_fem/p.ogg', +"pacify" = 'sound/vox_fem/pacify.ogg', +"pain" = 'sound/vox_fem/pain.ogg', +"pal" = 'sound/vox_fem/pal.ogg', +"panel" = 'sound/vox_fem/panel.ogg', +"percent" = 'sound/vox_fem/percent.ogg', +"perimeter" = 'sound/vox_fem/perimeter.ogg', +"permitted" = 'sound/vox_fem/permitted.ogg', +"personnel" = 'sound/vox_fem/personnel.ogg', +"pipe" = 'sound/vox_fem/pipe.ogg', +"plant" = 'sound/vox_fem/plant.ogg', +"plasma" = 'sound/vox_fem/plasma.ogg', +"platform" = 'sound/vox_fem/platform.ogg', +"please" = 'sound/vox_fem/please.ogg', +"point" = 'sound/vox_fem/point.ogg', +"port" = 'sound/vox_fem/port.ogg', +"portal" = 'sound/vox_fem/portal.ogg', +"power" = 'sound/vox_fem/power.ogg', +"presence" = 'sound/vox_fem/presence.ogg', +"press" = 'sound/vox_fem/press.ogg', +"primary" = 'sound/vox_fem/primary.ogg', +"proceed" = 'sound/vox_fem/proceed.ogg', +"processing" = 'sound/vox_fem/processing.ogg', +"progress" = 'sound/vox_fem/progress.ogg', +"proper" = 'sound/vox_fem/proper.ogg', +"propulsion" = 'sound/vox_fem/propulsion.ogg', +"prosecute" = 'sound/vox_fem/prosecute.ogg', +"protective" = 'sound/vox_fem/protective.ogg', +"push" = 'sound/vox_fem/push.ogg', +"q" = 'sound/vox_fem/q.ogg', +"quantum" = 'sound/vox_fem/quantum.ogg', +"quebec" = 'sound/vox_fem/quebec.ogg', +"queen" = 'sound/vox_fem/queen.ogg', +"question" = 'sound/vox_fem/question.ogg', +"questioning" = 'sound/vox_fem/questioning.ogg', +"quick" = 'sound/vox_fem/quick.ogg', +"quit" = 'sound/vox_fem/quit.ogg', +"r" = 'sound/vox_fem/r.ogg', +"radiation" = 'sound/vox_fem/radiation.ogg', +"radioactive" = 'sound/vox_fem/radioactive.ogg', +"rads" = 'sound/vox_fem/rads.ogg', +"raider" = 'sound/vox_fem/raider.ogg', +"raiders" = 'sound/vox_fem/raiders.ogg', +"rapid" = 'sound/vox_fem/rapid.ogg', +"reach" = 'sound/vox_fem/reach.ogg', +"reached" = 'sound/vox_fem/reached.ogg', +"reactor" = 'sound/vox_fem/reactor.ogg', +"red" = 'sound/vox_fem/red.ogg', +"relay" = 'sound/vox_fem/relay.ogg', +"released" = 'sound/vox_fem/released.ogg', +"remaining" = 'sound/vox_fem/remaining.ogg', +"removal" = 'sound/vox_fem/removal.ogg', +"renegade" = 'sound/vox_fem/renegade.ogg', +"repair" = 'sound/vox_fem/repair.ogg', +"report" = 'sound/vox_fem/report.ogg', +"reports" = 'sound/vox_fem/reports.ogg', +"required" = 'sound/vox_fem/required.ogg', +"research" = 'sound/vox_fem/research.ogg', +"resevoir" = 'sound/vox_fem/resevoir.ogg', +"resistance" = 'sound/vox_fem/resistance.ogg', +"rest" = 'sound/vox_fem/rest.ogg', +"right" = 'sound/vox_fem/right.ogg', +"rocket" = 'sound/vox_fem/rocket.ogg', +"roger" = 'sound/vox_fem/roger.ogg', +"romeo" = 'sound/vox_fem/romeo.ogg', +"room" = 'sound/vox_fem/room.ogg', +"round" = 'sound/vox_fem/round.ogg', +"run" = 'sound/vox_fem/run.ogg', +"s" = 'sound/vox_fem/s.ogg', +"safe" = 'sound/vox_fem/safe.ogg', +"safety" = 'sound/vox_fem/safety.ogg', +"sarah" = 'sound/vox_fem/sarah.ogg', +"sargeant" = 'sound/vox_fem/sargeant.ogg', +"satellite" = 'sound/vox_fem/satellite.ogg', +"save" = 'sound/vox_fem/save.ogg', +"science" = 'sound/vox_fem/science.ogg', +"scream" = 'sound/vox_fem/scream.ogg', +"screen" = 'sound/vox_fem/screen.ogg', +"search" = 'sound/vox_fem/search.ogg', +"second" = 'sound/vox_fem/second.ogg', +"secondary" = 'sound/vox_fem/secondary.ogg', +"seconds" = 'sound/vox_fem/seconds.ogg', +"sector" = 'sound/vox_fem/sector.ogg', +"secure" = 'sound/vox_fem/secure.ogg', +"secured" = 'sound/vox_fem/secured.ogg', +"security" = 'sound/vox_fem/security.ogg', +"select" = 'sound/vox_fem/select.ogg', +"selected" = 'sound/vox_fem/selected.ogg', +"sensors" = 'sound/vox_fem/sensors.ogg', +"service" = 'sound/vox_fem/service.ogg', +"seven" = 'sound/vox_fem/seven.ogg', +"seventeen" = 'sound/vox_fem/seventeen.ogg', +"seventy" = 'sound/vox_fem/seventy.ogg', +"severe" = 'sound/vox_fem/severe.ogg', +"sewage" = 'sound/vox_fem/sewage.ogg', +"sewer" = 'sound/vox_fem/sewer.ogg', +"shield" = 'sound/vox_fem/shield.ogg', +"shipment" = 'sound/vox_fem/shipment.ogg', +"shirt" = 'sound/vox_fem/shirt.ogg', +"shit" = 'sound/vox_fem/shit.ogg', +"shitlord" = 'sound/vox_fem/shitlord.ogg', +"shits" = 'sound/vox_fem/shits.ogg', +"shitting" = 'sound/vox_fem/shitting.ogg', +"shock" = 'sound/vox_fem/shock.ogg', +"shoot" = 'sound/vox_fem/shoot.ogg', +"shower" = 'sound/vox_fem/shower.ogg', +"shut" = 'sound/vox_fem/shut.ogg', +"shuttle" = 'sound/vox_fem/shuttle.ogg', +"side" = 'sound/vox_fem/side.ogg', +"sierra" = 'sound/vox_fem/sierra.ogg', +"sight" = 'sound/vox_fem/sight.ogg', +"silo" = 'sound/vox_fem/silo.ogg', +"singularity" = 'sound/vox_fem/singularity.ogg', +"six" = 'sound/vox_fem/six.ogg', +"sixteen" = 'sound/vox_fem/sixteen.ogg', +"sixty" = 'sound/vox_fem/sixty.ogg', +"slime" = 'sound/vox_fem/slime.ogg', +"slow" = 'sound/vox_fem/slow.ogg', +"solar" = 'sound/vox_fem/solar.ogg', +"solars" = 'sound/vox_fem/solars.ogg', +"soldier" = 'sound/vox_fem/soldier.ogg', +"some" = 'sound/vox_fem/some.ogg', +"someone" = 'sound/vox_fem/someone.ogg', +"something" = 'sound/vox_fem/something.ogg', +"son" = 'sound/vox_fem/son.ogg', +"sorry" = 'sound/vox_fem/sorry.ogg', +"south" = 'sound/vox_fem/south.ogg', +"squad" = 'sound/vox_fem/squad.ogg', +"square" = 'sound/vox_fem/square.ogg', +"ss13" = 'sound/vox_fem/ss13.ogg', +"stairway" = 'sound/vox_fem/stairway.ogg', +"starboard" = 'sound/vox_fem/starboard.ogg', +"station" = 'sound/vox_fem/station.ogg', +"status" = 'sound/vox_fem/status.ogg', +"sterile" = 'sound/vox_fem/sterile.ogg', +"sterilization" = 'sound/vox_fem/sterilization.ogg', +"storage" = 'sound/vox_fem/storage.ogg', +"stuck" = 'sound/vox_fem/stuck.ogg', +"sub" = 'sound/vox_fem/sub.ogg', +"subsurface" = 'sound/vox_fem/subsurface.ogg', +"sudden" = 'sound/vox_fem/sudden.ogg', +"suffer" = 'sound/vox_fem/suffer.ogg', +"suit" = 'sound/vox_fem/suit.ogg', +"superconducting" = 'sound/vox_fem/superconducting.ogg', +"supercooled" = 'sound/vox_fem/supercooled.ogg', +"supply" = 'sound/vox_fem/supply.ogg', +"surface" = 'sound/vox_fem/surface.ogg', +"surrender" = 'sound/vox_fem/surrender.ogg', +"surround" = 'sound/vox_fem/surround.ogg', +"surrounded" = 'sound/vox_fem/surrounded.ogg', +"switch" = 'sound/vox_fem/switch.ogg', +"syndicate" = 'sound/vox_fem/syndicate.ogg', +"system" = 'sound/vox_fem/system.ogg', +"systems" = 'sound/vox_fem/systems.ogg', +"t" = 'sound/vox_fem/t.ogg', +"tactical" = 'sound/vox_fem/tactical.ogg', +"take" = 'sound/vox_fem/take.ogg', +"talk" = 'sound/vox_fem/talk.ogg', +"tango" = 'sound/vox_fem/tango.ogg', +"tank" = 'sound/vox_fem/tank.ogg', +"target" = 'sound/vox_fem/target.ogg', +"team" = 'sound/vox_fem/team.ogg', +"temperature" = 'sound/vox_fem/temperature.ogg', +"temporal" = 'sound/vox_fem/temporal.ogg', +"ten" = 'sound/vox_fem/ten.ogg', +"terminal" = 'sound/vox_fem/terminal.ogg', +"terminated" = 'sound/vox_fem/terminated.ogg', +"termination" = 'sound/vox_fem/termination.ogg', +"test" = 'sound/vox_fem/test.ogg', +"that" = 'sound/vox_fem/that.ogg', +"the" = 'sound/vox_fem/the.ogg', +"then" = 'sound/vox_fem/then.ogg', +"there" = 'sound/vox_fem/there.ogg', +"third" = 'sound/vox_fem/third.ogg', +"thirteen" = 'sound/vox_fem/thirteen.ogg', +"thirty" = 'sound/vox_fem/thirty.ogg', +"this" = 'sound/vox_fem/this.ogg', +"those" = 'sound/vox_fem/those.ogg', +"thousand" = 'sound/vox_fem/thousand.ogg', +"threat" = 'sound/vox_fem/threat.ogg', +"three" = 'sound/vox_fem/three.ogg', +"through" = 'sound/vox_fem/through.ogg', +"tide" = 'sound/vox_fem/tide.ogg', +"time" = 'sound/vox_fem/time.ogg', +"to" = 'sound/vox_fem/to.ogg', +"top" = 'sound/vox_fem/top.ogg', +"topside" = 'sound/vox_fem/topside.ogg', +"touch" = 'sound/vox_fem/touch.ogg', +"towards" = 'sound/vox_fem/towards.ogg', +"toxins" = 'sound/vox_fem/toxins.ogg', +"track" = 'sound/vox_fem/track.ogg', +"train" = 'sound/vox_fem/train.ogg', +"traitor" = 'sound/vox_fem/traitor.ogg', +"transportation" = 'sound/vox_fem/transportation.ogg', +"truck" = 'sound/vox_fem/truck.ogg', +"tunnel" = 'sound/vox_fem/tunnel.ogg', +"turn" = 'sound/vox_fem/turn.ogg', +"turret" = 'sound/vox_fem/turret.ogg', +"twelve" = 'sound/vox_fem/twelve.ogg', +"twenty" = 'sound/vox_fem/twenty.ogg', +"two" = 'sound/vox_fem/two.ogg', +"u" = 'sound/vox_fem/u.ogg', +"unauthorized" = 'sound/vox_fem/unauthorized.ogg', +"under" = 'sound/vox_fem/under.ogg', +"uniform" = 'sound/vox_fem/uniform.ogg', +"unlocked" = 'sound/vox_fem/unlocked.ogg', +"until" = 'sound/vox_fem/until.ogg', +"up" = 'sound/vox_fem/up.ogg', +"update" = 'sound/vox_fem/update.ogg', +"updated" = 'sound/vox_fem/updated.ogg', +"updating" = 'sound/vox_fem/updating.ogg', +"upload" = 'sound/vox_fem/upload.ogg', +"upper" = 'sound/vox_fem/upper.ogg', +"uranium" = 'sound/vox_fem/uranium.ogg', +"us" = 'sound/vox_fem/us.ogg', +"usa" = 'sound/vox_fem/usa.ogg', +"use" = 'sound/vox_fem/use.ogg', +"used" = 'sound/vox_fem/used.ogg', +"user" = 'sound/vox_fem/user.ogg', +"v" = 'sound/vox_fem/v.ogg', +"vacate" = 'sound/vox_fem/vacate.ogg', +"valid" = 'sound/vox_fem/valid.ogg', +"vapor" = 'sound/vox_fem/vapor.ogg', +"vent" = 'sound/vox_fem/vent.ogg', +"ventilation" = 'sound/vox_fem/ventilation.ogg', +"victor" = 'sound/vox_fem/victor.ogg', +"violated" = 'sound/vox_fem/violated.ogg', +"violation" = 'sound/vox_fem/violation.ogg', +"virology" = 'sound/vox_fem/virology.ogg', +"voltage" = 'sound/vox_fem/voltage.ogg', +"vox" = 'sound/vox_fem/vox.ogg', +"vox_login" = 'sound/vox_fem/vox_login.ogg', +"voxtest" = 'sound/vox_fem/voxtest.ogg', +"voxtest2" = 'sound/vox_fem/voxtest2.ogg', +"w" = 'sound/vox_fem/w.ogg', +"walk" = 'sound/vox_fem/walk.ogg', +"wall" = 'sound/vox_fem/wall.ogg', +"wanker" = 'sound/vox_fem/wanker.ogg', +"want" = 'sound/vox_fem/want.ogg', +"wanted" = 'sound/vox_fem/wanted.ogg', +"warm" = 'sound/vox_fem/warm.ogg', +"warn" = 'sound/vox_fem/warn.ogg', +"warning" = 'sound/vox_fem/warning.ogg', +"waste" = 'sound/vox_fem/waste.ogg', +"water" = 'sound/vox_fem/water.ogg', +"we" = 'sound/vox_fem/we.ogg', +"weapon" = 'sound/vox_fem/weapon.ogg', +"welcome" = 'sound/vox_fem/welcome.ogg', +"west" = 'sound/vox_fem/west.ogg', +"whiskey" = 'sound/vox_fem/whiskey.ogg', +"white" = 'sound/vox_fem/white.ogg', +"wilco" = 'sound/vox_fem/wilco.ogg', +"will" = 'sound/vox_fem/will.ogg', +"with" = 'sound/vox_fem/with.ogg', +"without" = 'sound/vox_fem/without.ogg', +"wood" = 'sound/vox_fem/wood.ogg', +"woody" = 'sound/vox_fem/woody.ogg', +"x" = 'sound/vox_fem/x.ogg', +"xeno" = 'sound/vox_fem/xeno.ogg', +"xenobiology" = 'sound/vox_fem/xenobiology.ogg', +"xenomorph" = 'sound/vox_fem/xenomorph.ogg', +"xenomorphs" = 'sound/vox_fem/xenomorphs.ogg', +"y" = 'sound/vox_fem/y.ogg', +"yankee" = 'sound/vox_fem/yankee.ogg', +"yards" = 'sound/vox_fem/yards.ogg', +"year" = 'sound/vox_fem/year.ogg', +"yellow" = 'sound/vox_fem/yellow.ogg', +"yes" = 'sound/vox_fem/yes.ogg', +"you" = 'sound/vox_fem/you.ogg', +"your" = 'sound/vox_fem/your.ogg', +"yourself" = 'sound/vox_fem/yourself.ogg', +"z" = 'sound/vox_fem/z.ogg', +"zero" = 'sound/vox_fem/zero.ogg', +"zone" = 'sound/vox_fem/zone.ogg', +"zulu" = 'sound/vox_fem/zulu.ogg', +) #endif \ No newline at end of file diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index d31b548787e..aed6b5c06a4 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -1,42 +1,42 @@ -/mob/living/silicon/proc/show_laws() //Redefined in ai/laws.dm and robot/laws.dm - return - -/mob/living/silicon/proc/laws_sanity_check() - if (!laws) - make_laws() - -/mob/living/silicon/proc/set_zeroth_law(var/law, var/law_borg) - src.laws_sanity_check() - src.laws.set_zeroth_law(law, law_borg) - -/mob/living/silicon/proc/add_inherent_law(var/law) - laws_sanity_check() - laws.add_inherent_law(law) - -/mob/living/silicon/proc/clear_inherent_laws() - laws_sanity_check() - laws.clear_inherent_laws() - -/mob/living/silicon/proc/add_supplied_law(var/number, var/law) - laws_sanity_check() - laws.add_supplied_law(number, law) - -/mob/living/silicon/proc/clear_supplied_laws() - laws_sanity_check() - laws.clear_supplied_laws() - -/mob/living/silicon/proc/add_ion_law(var/law) - laws_sanity_check() - laws.add_ion_law(law) - -/mob/living/silicon/proc/clear_ion_laws() - laws_sanity_check() - laws.clear_ion_laws() - -/mob/living/silicon/proc/make_laws() - switch(config.default_laws) - if(0) laws = new /datum/ai_laws/default/asimov() - if(1) laws = new /datum/ai_laws/custom() - if(2) - var/datum/ai_laws/lawtype = pick(typesof(/datum/ai_laws/default) - /datum/ai_laws/default) - laws = new lawtype() +/mob/living/silicon/proc/show_laws() //Redefined in ai/laws.dm and robot/laws.dm + return + +/mob/living/silicon/proc/laws_sanity_check() + if (!laws) + make_laws() + +/mob/living/silicon/proc/set_zeroth_law(var/law, var/law_borg) + src.laws_sanity_check() + src.laws.set_zeroth_law(law, law_borg) + +/mob/living/silicon/proc/add_inherent_law(var/law) + laws_sanity_check() + laws.add_inherent_law(law) + +/mob/living/silicon/proc/clear_inherent_laws() + laws_sanity_check() + laws.clear_inherent_laws() + +/mob/living/silicon/proc/add_supplied_law(var/number, var/law) + laws_sanity_check() + laws.add_supplied_law(number, law) + +/mob/living/silicon/proc/clear_supplied_laws() + laws_sanity_check() + laws.clear_supplied_laws() + +/mob/living/silicon/proc/add_ion_law(var/law) + laws_sanity_check() + laws.add_ion_law(law) + +/mob/living/silicon/proc/clear_ion_laws() + laws_sanity_check() + laws.clear_ion_laws() + +/mob/living/silicon/proc/make_laws() + switch(config.default_laws) + if(0) laws = new /datum/ai_laws/default/asimov() + if(1) laws = new /datum/ai_laws/custom() + if(2) + var/datum/ai_laws/lawtype = pick(typesof(/datum/ai_laws/default) - /datum/ai_laws/default) + laws = new lawtype() diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm index 8a723ae1dd2..b008220cfac 100644 --- a/code/modules/mob/living/simple_animal/friendly/pug.dm +++ b/code/modules/mob/living/simple_animal/friendly/pug.dm @@ -1,42 +1,42 @@ -//Corgi -/mob/living/simple_animal/pug - name = "\improper pug" - real_name = "pug" - desc = "It's a pug." - icon_state = "pug" - icon_living = "pug" - icon_dead = "pug_dead" - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") - speak_emote = list("barks", "woofs") - emote_hear = list("barks", "woofs", "yaps","pants") - emote_see = list("shakes its head", "chases its tail","shivers") - speak_chance = 1 - turns_per_move = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/pug - meat_amount = 3 - response_help = "pets" - response_disarm = "bops" - response_harm = "kicks" - see_in_dark = 5 - -/mob/living/simple_animal/pug/Life() - ..() - - if(!stat && !resting && !buckled) - if(prob(1)) - emote(pick("chases its tail")) - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) - dir = i - sleep(1) - -/mob/living/simple_animal/pug/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri - if(istype(O, /obj/item/weapon/newspaper)) - if(!stat) - user.visible_message("\blue [user] baps [name] on the nose with the rolled up [O]") - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2)) - dir = i - sleep(1) - else - ..() +//Corgi +/mob/living/simple_animal/pug + name = "\improper pug" + real_name = "pug" + desc = "It's a pug." + icon_state = "pug" + icon_living = "pug" + icon_dead = "pug_dead" + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") + speak_emote = list("barks", "woofs") + emote_hear = list("barks", "woofs", "yaps","pants") + emote_see = list("shakes its head", "chases its tail","shivers") + speak_chance = 1 + turns_per_move = 10 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/pug + meat_amount = 3 + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + see_in_dark = 5 + +/mob/living/simple_animal/pug/Life() + ..() + + if(!stat && !resting && !buckled) + if(prob(1)) + emote(pick("chases its tail")) + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + dir = i + sleep(1) + +/mob/living/simple_animal/pug/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri + if(istype(O, /obj/item/weapon/newspaper)) + if(!stat) + user.visible_message("\blue [user] baps [name] on the nose with the rolled up [O]") + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2)) + dir = i + sleep(1) + else + ..() diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index fa1f72b3871..ef0f511b1a6 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -73,4 +73,4 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - qdel(src) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index a123f27b889..7e02ad289ce 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -1,422 +1,422 @@ -/mob/living/simple_animal/hostile/asteroid/ - vision_range = 2 - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - unsuitable_atoms_damage = 15 - faction = "mining" - environment_smash = 2 - minbodytemp = 0 - heat_damage_per_tick = 20 - response_help = "pokes" - response_disarm = "shoves" - response_harm = "strikes" - status_flags = 0 - a_intent = "harm" - var/throw_message = "bounces off of" - var/icon_aggro = null // for swapping to when we get aggressive - -/mob/living/simple_animal/hostile/asteroid/Aggro() - ..() - icon_state = icon_aggro - -/mob/living/simple_animal/hostile/asteroid/LoseAggro() - ..() - icon_state = icon_living - -/mob/living/simple_animal/hostile/asteroid/bullet_act(var/obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills - if(!stat) - Aggro() - if(P.damage < 30) - P.damage = (P.damage / 3) - visible_message("[P] has a reduced effect on [src]!") - ..() - -/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM)//No floor tiling them to death, wiseguy - if(istype(AM, /obj/item)) - var/obj/item/T = AM - if(!stat) - Aggro() - if(T.throwforce <= 20) - visible_message("The [T.name] [src.throw_message] [src.name]!") - return - ..() - -/mob/living/simple_animal/hostile/asteroid/basilisk - name = "basilisk" - desc = "A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside." - icon = 'icons/mob/animal.dmi' - icon_state = "Basilisk" - icon_living = "Basilisk" - icon_aggro = "Basilisk_alert" - icon_dead = "Basilisk_dead" - icon_gib = "syndicate_gib" - move_to_delay = 20 - projectiletype = /obj/item/projectile/temp/basilisk - projectilesound = 'sound/weapons/pierce.ogg' - ranged = 1 - ranged_message = "stares" - ranged_cooldown_cap = 20 - throw_message = "does nothing against the hard shell of" - vision_range = 2 - speed = 3 - maxHealth = 200 - health = 200 - harm_intent_damage = 5 - melee_damage_lower = 12 - melee_damage_upper = 12 - attacktext = "bites into" - a_intent = "harm" - attack_sound = 'sound/weapons/bladeslice.ogg' - ranged_cooldown_cap = 4 - aggro_vision_range = 9 - idle_vision_range = 2 - -/obj/item/projectile/temp/basilisk - name = "freezing blast" - icon_state = "ice_2" - damage = 0 - damage_type = BURN - nodamage = 1 - flag = "energy" - temperature = 50 - -/mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(var/new_target) - target = new_target - if(target != null) - Aggro() - stance = HOSTILE_STANCE_ATTACK - if(isliving(target)) - var/mob/living/L = target - if(L.bodytemperature > 261) - L.bodytemperature = 261 - visible_message("The [src.name]'s stare chills [L.name] to the bone!") - return - -/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity) - switch(severity) - if(1.0) - gib() - if(2.0) - adjustBruteLoss(140) - if(3.0) - adjustBruteLoss(110) - -/mob/living/simple_animal/hostile/asteroid/basilisk/Die() - var/counter - for(counter=0, counter<2, counter++) - var/obj/item/weapon/ore/diamond/D = new /obj/item/weapon/ore/diamond(src.loc) - D.layer = 4.1 - ..() - -/mob/living/simple_animal/hostile/asteroid/goldgrub - name = "goldgrub" - desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name." - icon = 'icons/mob/animal.dmi' - icon_state = "Goldgrub" - icon_living = "Goldgrub" - icon_aggro = "Goldgrub_alert" - icon_dead = "Goldgrub_dead" - icon_gib = "syndicate_gib" - vision_range = 2 - aggro_vision_range = 9 - idle_vision_range = 2 - move_to_delay = 5 - friendly = "harmlessly rolls into" - maxHealth = 45 - health = 45 - harm_intent_damage = 5 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "barrels into" - a_intent = "help" - throw_message = "sinks in slowly, before being pushed out of " - status_flags = CANPUSH - search_objects = 1 - wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, - /obj/item/weapon/ore/uranium) - - var/list/ore_types_eaten = list() - var/alerted = 0 - var/ore_eaten = 1 - var/chase_time = 100 - -/mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(var/new_target) - target = new_target - if(target != null) - if(istype(target, /obj/item/weapon/ore)) - visible_message("The [src.name] looks at [target.name] with hungry eyes.") - stance = HOSTILE_STANCE_ATTACK - return - if(isliving(target)) - Aggro() - stance = HOSTILE_STANCE_ATTACK - visible_message("The [src.name] tries to flee from [target.name]!") - retreat_distance = 10 - minimum_distance = 10 - Burrow() - return - return - -/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() - if(istype(target, /obj/item/weapon/ore)) - EatOre(target) - return - ..() - -/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(var/atom/targeted_ore) - for(var/obj/item/weapon/ore/O in targeted_ore.loc) - ore_eaten++ - if(!(O.type in ore_types_eaten)) - ore_types_eaten += O.type - qdel(O) - if(ore_eaten > 5)//Limit the scope of the reward you can get, or else things might get silly - ore_eaten = 5 - visible_message("The ore was swallowed whole!") - -/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time - if(!alerted) - alerted = 1 - spawn(chase_time) - if(alerted) - visible_message("The [src.name] buries into the ground, vanishing from sight!") - qdel(src) - -/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Reward() - if(!ore_eaten || ore_types_eaten.len == 0) - return - visible_message("[src] spits up the contents of its stomach before dying!") - var/counter - for(var/R in ore_types_eaten) - for(counter=0, counter < ore_eaten, counter++) - new R(src.loc) - ore_types_eaten.Cut() - ore_eaten = 0 - - -/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(var/obj/item/projectile/P) - visible_message("The [P.name] was repelled by [src.name]'s girth!") - return - -/mob/living/simple_animal/hostile/asteroid/goldgrub/Die() - alerted = 0 - Reward() - ..() - -/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustBruteLoss(var/damage) - idle_vision_range = 9 - ..() - -/mob/living/simple_animal/hostile/asteroid/hivelord - name = "hivelord" - desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." - icon = 'icons/mob/animal.dmi' - icon_state = "Hivelord" - icon_living = "Hivelord" - icon_aggro = "Hivelord_alert" - icon_dead = "Hivelord_dead" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 14 - ranged = 1 - vision_range = 5 - aggro_vision_range = 9 - idle_vision_range = 5 - speed = 3 - maxHealth = 75 - health = 75 - harm_intent_damage = 5 - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "lashes out at" - throw_message = "falls right through the strange body of the" - ranged_cooldown = 0 - ranged_cooldown_cap = 0 - environment_smash = 0 - retreat_distance = 3 - minimum_distance = 3 - pass_flags = PASSTABLE - -/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target) - var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc) - A.GiveTarget(target) - A.friends = friends - A.faction = faction - return - -/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() - OpenFire() - -/mob/living/simple_animal/hostile/asteroid/hivelord/Die() - new /obj/item/asteroid/hivelord_core(src.loc) - mouse_opacity = 1 - ..() - -/obj/item/asteroid/hivelord_core - name = "hivelord remains" - desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating." - icon = 'icons/obj/food.dmi' - icon_state = "boiledrorocore" - var/inert = 0 - -/obj/item/asteroid/hivelord_core/New() - spawn(1200) - inert = 1 - desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." - -/obj/item/asteroid/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(inert) - user << "[src] have become inert, its healing properties are no more." - return - else - if(H.stat == DEAD) - user << "[src] are useless on the dead." - return - if(H != user) - H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!") - else - user << "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments." - playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - H.revive() - qdel(src) - ..() - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood - name = "hivelord brood" - desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." - icon = 'icons/mob/animal.dmi' - icon_state = "Hivelordbrood" - icon_living = "Hivelordbrood" - icon_aggro = "Hivelordbrood" - icon_dead = "Hivelordbrood" - icon_gib = "syndicate_gib" - mouse_opacity = 2 - move_to_delay = 1 - friendly = "buzzes near" - vision_range = 10 - speed = 3 - maxHealth = 1 - health = 1 - harm_intent_damage = 5 - melee_damage_lower = 2 - melee_damage_upper = 2 - attacktext = "slashes" - throw_message = "falls right through the strange body of the" - environment_smash = 0 - pass_flags = PASSTABLE - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() - ..() - spawn(100) - qdel(src) - -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die() - qdel(src) - -/mob/living/simple_animal/hostile/asteroid/goliath - name = "goliath" - desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." - icon = 'icons/mob/animal.dmi' - icon_state = "Goliath" - icon_living = "Goliath" - icon_aggro = "Goliath_alert" - icon_dead = "Goliath_dead" - icon_gib = "syndicate_gib" - attack_sound = 'sound/weapons/punch4.ogg' - mouse_opacity = 2 - move_to_delay = 40 - ranged = 1 - ranged_cooldown_cap = 8 - friendly = "wails at" - vision_range = 4 - speed = 3 - maxHealth = 300 - health = 300 - harm_intent_damage = 0 - melee_damage_lower = 25 - melee_damage_upper = 25 - attacktext = "pulverizes" - throw_message = "does nothing to the rocky hide of the" - aggro_vision_range = 9 - idle_vision_range = 5 - -/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire() - visible_message("The [src.name] digs its tentacles under [target.name]!") - var/tturf = get_turf(target) - new /obj/effect/goliath_tentacle/original(tturf) - ranged_cooldown = ranged_cooldown_cap - return - -/mob/living/simple_animal/hostile/asteroid/goliath/adjustBruteLoss(var/damage) - ranged_cooldown-- - ..() - -/obj/effect/goliath_tentacle/ - name = "Goliath tentacle" - icon = 'icons/mob/animal.dmi' - icon_state = "Goliath_tentacle" - -/obj/effect/goliath_tentacle/New() - var/turftype = get_turf(src) - if(istype(turftype, /turf/simulated/mineral)) - var/turf/simulated/mineral/M = turftype - M.gets_drilled() - spawn(20) - Trip() - -/obj/effect/goliath_tentacle/original - -/obj/effect/goliath_tentacle/original/New() - var/list/directions = cardinal.Copy() - var/counter - for(counter = 1, counter <= 3, counter++) - var/spawndir = pick(directions) - directions -= spawndir - var/turf/T = get_step(src,spawndir) - new /obj/effect/goliath_tentacle(T) - ..() - -/obj/effect/goliath_tentacle/proc/Trip() - for(var/mob/living/M in src.loc) - M.Weaken(5) - visible_message("The [src.name] knocks [M.name] down!") - qdel(src) - -/obj/effect/goliath_tentacle/Crossed(AM as mob|obj) - if(isliving(AM)) - Trip() - return - ..() - -/mob/living/simple_animal/hostile/asteroid/goliath/Die() - var/obj/item/asteroid/goliath_hide/G = new /obj/item/asteroid/goliath_hide(src.loc) - G.layer = 4.1 - ..() - -/obj/item/asteroid/goliath_hide - name = "goliath hide plates" - desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." - icon = 'icons/obj/items.dmi' - icon_state = "goliath_hide" - w_class = 3 - layer = 4 - -/obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) - if(proximity_flag) - if(istype(target, /obj/item/clothing/suit/space/rig/mining) || istype(target, /obj/item/clothing/head/helmet/space/rig/mining)) - var/obj/item/clothing/C = target - var/current_armor = C.armor - if(current_armor.["melee"] < 90) - current_armor.["melee"] = min(current_armor.["melee"] + 10, 90) - user << "You strengthen [target], improving its resistance against melee attacks." - qdel(src) - else - user << "You can't improve [C] any further." - return +/mob/living/simple_animal/hostile/asteroid/ + vision_range = 2 + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + faction = "mining" + environment_smash = 2 + minbodytemp = 0 + heat_damage_per_tick = 20 + response_help = "pokes" + response_disarm = "shoves" + response_harm = "strikes" + status_flags = 0 + a_intent = "harm" + var/throw_message = "bounces off of" + var/icon_aggro = null // for swapping to when we get aggressive + +/mob/living/simple_animal/hostile/asteroid/Aggro() + ..() + icon_state = icon_aggro + +/mob/living/simple_animal/hostile/asteroid/LoseAggro() + ..() + icon_state = icon_living + +/mob/living/simple_animal/hostile/asteroid/bullet_act(var/obj/item/projectile/P)//Reduces damage from most projectiles to curb off-screen kills + if(!stat) + Aggro() + if(P.damage < 30) + P.damage = (P.damage / 3) + visible_message("[P] has a reduced effect on [src]!") + ..() + +/mob/living/simple_animal/hostile/asteroid/hitby(atom/movable/AM)//No floor tiling them to death, wiseguy + if(istype(AM, /obj/item)) + var/obj/item/T = AM + if(!stat) + Aggro() + if(T.throwforce <= 20) + visible_message("The [T.name] [src.throw_message] [src.name]!") + return + ..() + +/mob/living/simple_animal/hostile/asteroid/basilisk + name = "basilisk" + desc = "A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside." + icon = 'icons/mob/animal.dmi' + icon_state = "Basilisk" + icon_living = "Basilisk" + icon_aggro = "Basilisk_alert" + icon_dead = "Basilisk_dead" + icon_gib = "syndicate_gib" + move_to_delay = 20 + projectiletype = /obj/item/projectile/temp/basilisk + projectilesound = 'sound/weapons/pierce.ogg' + ranged = 1 + ranged_message = "stares" + ranged_cooldown_cap = 20 + throw_message = "does nothing against the hard shell of" + vision_range = 2 + speed = 3 + maxHealth = 200 + health = 200 + harm_intent_damage = 5 + melee_damage_lower = 12 + melee_damage_upper = 12 + attacktext = "bites into" + a_intent = "harm" + attack_sound = 'sound/weapons/bladeslice.ogg' + ranged_cooldown_cap = 4 + aggro_vision_range = 9 + idle_vision_range = 2 + +/obj/item/projectile/temp/basilisk + name = "freezing blast" + icon_state = "ice_2" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "energy" + temperature = 50 + +/mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(var/new_target) + target = new_target + if(target != null) + Aggro() + stance = HOSTILE_STANCE_ATTACK + if(isliving(target)) + var/mob/living/L = target + if(L.bodytemperature > 261) + L.bodytemperature = 261 + visible_message("The [src.name]'s stare chills [L.name] to the bone!") + return + +/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity) + switch(severity) + if(1.0) + gib() + if(2.0) + adjustBruteLoss(140) + if(3.0) + adjustBruteLoss(110) + +/mob/living/simple_animal/hostile/asteroid/basilisk/Die() + var/counter + for(counter=0, counter<2, counter++) + var/obj/item/weapon/ore/diamond/D = new /obj/item/weapon/ore/diamond(src.loc) + D.layer = 4.1 + ..() + +/mob/living/simple_animal/hostile/asteroid/goldgrub + name = "goldgrub" + desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name." + icon = 'icons/mob/animal.dmi' + icon_state = "Goldgrub" + icon_living = "Goldgrub" + icon_aggro = "Goldgrub_alert" + icon_dead = "Goldgrub_dead" + icon_gib = "syndicate_gib" + vision_range = 2 + aggro_vision_range = 9 + idle_vision_range = 2 + move_to_delay = 5 + friendly = "harmlessly rolls into" + maxHealth = 45 + health = 45 + harm_intent_damage = 5 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "barrels into" + a_intent = "help" + throw_message = "sinks in slowly, before being pushed out of " + status_flags = CANPUSH + search_objects = 1 + wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/uranium) + + var/list/ore_types_eaten = list() + var/alerted = 0 + var/ore_eaten = 1 + var/chase_time = 100 + +/mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(var/new_target) + target = new_target + if(target != null) + if(istype(target, /obj/item/weapon/ore)) + visible_message("The [src.name] looks at [target.name] with hungry eyes.") + stance = HOSTILE_STANCE_ATTACK + return + if(isliving(target)) + Aggro() + stance = HOSTILE_STANCE_ATTACK + visible_message("The [src.name] tries to flee from [target.name]!") + retreat_distance = 10 + minimum_distance = 10 + Burrow() + return + return + +/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() + if(istype(target, /obj/item/weapon/ore)) + EatOre(target) + return + ..() + +/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(var/atom/targeted_ore) + for(var/obj/item/weapon/ore/O in targeted_ore.loc) + ore_eaten++ + if(!(O.type in ore_types_eaten)) + ore_types_eaten += O.type + qdel(O) + if(ore_eaten > 5)//Limit the scope of the reward you can get, or else things might get silly + ore_eaten = 5 + visible_message("The ore was swallowed whole!") + +/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time + if(!alerted) + alerted = 1 + spawn(chase_time) + if(alerted) + visible_message("The [src.name] buries into the ground, vanishing from sight!") + qdel(src) + +/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Reward() + if(!ore_eaten || ore_types_eaten.len == 0) + return + visible_message("[src] spits up the contents of its stomach before dying!") + var/counter + for(var/R in ore_types_eaten) + for(counter=0, counter < ore_eaten, counter++) + new R(src.loc) + ore_types_eaten.Cut() + ore_eaten = 0 + + +/mob/living/simple_animal/hostile/asteroid/goldgrub/bullet_act(var/obj/item/projectile/P) + visible_message("The [P.name] was repelled by [src.name]'s girth!") + return + +/mob/living/simple_animal/hostile/asteroid/goldgrub/Die() + alerted = 0 + Reward() + ..() + +/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustBruteLoss(var/damage) + idle_vision_range = 9 + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelord + name = "hivelord" + desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." + icon = 'icons/mob/animal.dmi' + icon_state = "Hivelord" + icon_living = "Hivelord" + icon_aggro = "Hivelord_alert" + icon_dead = "Hivelord_dead" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 14 + ranged = 1 + vision_range = 5 + aggro_vision_range = 9 + idle_vision_range = 5 + speed = 3 + maxHealth = 75 + health = 75 + harm_intent_damage = 5 + melee_damage_lower = 0 + melee_damage_upper = 0 + attacktext = "lashes out at" + throw_message = "falls right through the strange body of the" + ranged_cooldown = 0 + ranged_cooldown_cap = 0 + environment_smash = 0 + retreat_distance = 3 + minimum_distance = 3 + pass_flags = PASSTABLE + +/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc) + A.GiveTarget(target) + A.friends = friends + A.faction = faction + return + +/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget() + OpenFire() + +/mob/living/simple_animal/hostile/asteroid/hivelord/Die() + new /obj/item/asteroid/hivelord_core(src.loc) + mouse_opacity = 1 + ..() + +/obj/item/asteroid/hivelord_core + name = "hivelord remains" + desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating." + icon = 'icons/obj/food.dmi' + icon_state = "boiledrorocore" + var/inert = 0 + +/obj/item/asteroid/hivelord_core/New() + spawn(1200) + inert = 1 + desc = "The remains of a hivelord that have become useless, having been left alone too long after being harvested." + +/obj/item/asteroid/hivelord_core/attack(mob/living/M as mob, mob/living/user as mob) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(inert) + user << "[src] have become inert, its healing properties are no more." + return + else + if(H.stat == DEAD) + user << "[src] are useless on the dead." + return + if(H != user) + H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!") + else + user << "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments." + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + H.revive() + qdel(src) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood + name = "hivelord brood" + desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." + icon = 'icons/mob/animal.dmi' + icon_state = "Hivelordbrood" + icon_living = "Hivelordbrood" + icon_aggro = "Hivelordbrood" + icon_dead = "Hivelordbrood" + icon_gib = "syndicate_gib" + mouse_opacity = 2 + move_to_delay = 1 + friendly = "buzzes near" + vision_range = 10 + speed = 3 + maxHealth = 1 + health = 1 + harm_intent_damage = 5 + melee_damage_lower = 2 + melee_damage_upper = 2 + attacktext = "slashes" + throw_message = "falls right through the strange body of the" + environment_smash = 0 + pass_flags = PASSTABLE + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() + ..() + spawn(100) + qdel(src) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Die() + qdel(src) + +/mob/living/simple_animal/hostile/asteroid/goliath + name = "goliath" + desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." + icon = 'icons/mob/animal.dmi' + icon_state = "Goliath" + icon_living = "Goliath" + icon_aggro = "Goliath_alert" + icon_dead = "Goliath_dead" + icon_gib = "syndicate_gib" + attack_sound = 'sound/weapons/punch4.ogg' + mouse_opacity = 2 + move_to_delay = 40 + ranged = 1 + ranged_cooldown_cap = 8 + friendly = "wails at" + vision_range = 4 + speed = 3 + maxHealth = 300 + health = 300 + harm_intent_damage = 0 + melee_damage_lower = 25 + melee_damage_upper = 25 + attacktext = "pulverizes" + throw_message = "does nothing to the rocky hide of the" + aggro_vision_range = 9 + idle_vision_range = 5 + +/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire() + visible_message("The [src.name] digs its tentacles under [target.name]!") + var/tturf = get_turf(target) + new /obj/effect/goliath_tentacle/original(tturf) + ranged_cooldown = ranged_cooldown_cap + return + +/mob/living/simple_animal/hostile/asteroid/goliath/adjustBruteLoss(var/damage) + ranged_cooldown-- + ..() + +/obj/effect/goliath_tentacle/ + name = "Goliath tentacle" + icon = 'icons/mob/animal.dmi' + icon_state = "Goliath_tentacle" + +/obj/effect/goliath_tentacle/New() + var/turftype = get_turf(src) + if(istype(turftype, /turf/simulated/mineral)) + var/turf/simulated/mineral/M = turftype + M.gets_drilled() + spawn(20) + Trip() + +/obj/effect/goliath_tentacle/original + +/obj/effect/goliath_tentacle/original/New() + var/list/directions = cardinal.Copy() + var/counter + for(counter = 1, counter <= 3, counter++) + var/spawndir = pick(directions) + directions -= spawndir + var/turf/T = get_step(src,spawndir) + new /obj/effect/goliath_tentacle(T) + ..() + +/obj/effect/goliath_tentacle/proc/Trip() + for(var/mob/living/M in src.loc) + M.Weaken(5) + visible_message("The [src.name] knocks [M.name] down!") + qdel(src) + +/obj/effect/goliath_tentacle/Crossed(AM as mob|obj) + if(isliving(AM)) + Trip() + return + ..() + +/mob/living/simple_animal/hostile/asteroid/goliath/Die() + var/obj/item/asteroid/goliath_hide/G = new /obj/item/asteroid/goliath_hide(src.loc) + G.layer = 4.1 + ..() + +/obj/item/asteroid/goliath_hide + name = "goliath hide plates" + desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna." + icon = 'icons/obj/items.dmi' + icon_state = "goliath_hide" + w_class = 3 + layer = 4 + +/obj/item/asteroid/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag) + if(istype(target, /obj/item/clothing/suit/space/rig/mining) || istype(target, /obj/item/clothing/head/helmet/space/rig/mining)) + var/obj/item/clothing/C = target + var/current_armor = C.armor + if(current_armor.["melee"] < 90) + current_armor.["melee"] = min(current_armor.["melee"] + 10, 90) + user << "You strengthen [target], improving its resistance against melee attacks." + qdel(src) + else + user << "You can't improve [C] any further." + return diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 4534d9c4da9..07e835267f3 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -1,160 +1,160 @@ -/mob/living/simple_animal/hostile/mushroom - name = "walking mushroom" - desc = "It's a massive mushroom... with legs?" - icon_state = "mushroom_color" - icon_living = "mushroom_color" - icon_dead = "mushroom_dead" - speak_chance = 0 - turns_per_move = 1 - maxHealth = 10 - health = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "whacks" - harm_intent_damage = 5 - melee_damage_lower = 1 - melee_damage_upper = 1 - attack_same = 2 - attacktext = "chomps" - faction = "mushroom" - environment_smash = 0 - stat_attack = 2 - mouse_opacity = 1 - speed = 1 - ventcrawler = 2 - var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms - var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it wont award levels to shrooms that eat it - var/recovery_cooldown = 0 //So you can't repeatedly revive it during a fight - var/faint_ticker = 0 //If we hit three, another mushroom's gonna eat us - var/image/cap_living = null //Where we store our cap icons so we dont generate them constantly to update our icon - var/image/cap_dead = null - -/mob/living/simple_animal/hostile/mushroom/examine() - ..() - if(health >= maxHealth) - usr << "It looks healthy." - else - usr << "It looks like it's been roughed up." - -/mob/living/simple_animal/hostile/mushroom/Life() - ..() - if(!stat)//Mushrooms slowly regenerate if conscious, for people who want to save them from being eaten - health = min(health+2, maxHealth) - -/mob/living/simple_animal/hostile/mushroom/New()//Makes every shroom a little unique - melee_damage_lower += rand(3, 5) - melee_damage_upper += rand(10,20) - maxHealth += rand(40,60) - move_to_delay = rand(3,11) - var/cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) - cap_living = image('icons/mob/animal.dmi',icon_state = "mushroom_cap") - cap_dead = image('icons/mob/animal.dmi',icon_state = "mushroom_cap_dead") - cap_living.color = cap_color - cap_dead.color = cap_color - UpdateMushroomCap() - health = maxHealth - ..() - -/mob/living/simple_animal/hostile/mushroom/adjustBruteLoss(var/damage)//Possibility to flee from a fight just to make it more visually interesting - if(!retreat_distance && prob(33)) - retreat_distance = 5 - spawn(30) - retreat_distance = null - ..() - -/mob/living/simple_animal/hostile/mushroom/attack_animal(var/mob/living/L) - if(istype(L, /mob/living/simple_animal/hostile/mushroom) && stat == DEAD) - var/mob/living/simple_animal/hostile/mushroom/M = L - if(faint_ticker < 2) - M.visible_message("[M] chews a bit on [src].") - faint_ticker++ - return - M.visible_message("[M] devours [src]!") - var/level_gain = (powerlevel - M.powerlevel) - if(level_gain >= -1 && !bruised && !M.ckey)//Player shrooms can't level up to become robust gods. - if(level_gain < 1)//So we still gain a level if two mushrooms were the same level - level_gain = 1 - M.LevelUp(level_gain) - M.health = M.maxHealth - qdel(src) - ..() - -/mob/living/simple_animal/hostile/mushroom/revive() - ..() - icon_state = "mushroom_color" - UpdateMushroomCap() - -/mob/living/simple_animal/hostile/mushroom/Die() - visible_message("[src] fainted.") - ..() - UpdateMushroomCap() - -/mob/living/simple_animal/hostile/mushroom/proc/UpdateMushroomCap() - overlays.Cut() - if(health == 0) - overlays += cap_dead - else - overlays += cap_living - -/mob/living/simple_animal/hostile/mushroom/proc/Recover() - visible_message("[src] slowly begins to recover.") - health = 5 - faint_ticker = 0 - icon_state = icon_living - UpdateMushroomCap() - recovery_cooldown = 1 - spawn(300) - recovery_cooldown = 0 - -/mob/living/simple_animal/hostile/mushroom/proc/LevelUp(var/level_gain) - if(powerlevel <= 9) - powerlevel += level_gain - if(prob(25)) - melee_damage_lower += (level_gain * rand(1,5)) - else - melee_damage_upper += (level_gain * rand(1,5)) - maxHealth += (level_gain * rand(1,5)) - health = maxHealth //They'll always heal, even if they don't gain a level, in case you want to keep this shroom around instead of harvesting it - -/mob/living/simple_animal/hostile/mushroom/proc/Bruise() - if(!bruised && !stat) - src.visible_message("The [src.name] was bruised!") - bruised = 1 - -/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom)) - if(stat == DEAD && !recovery_cooldown) - Recover() - qdel(I) - else - user << "[src] won't eat it!" - return - if(I.force) - Bruise() - ..() - -/mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob) - ..() - if(M.a_intent == "harm") - Bruise() - -/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM) - ..() - if(istype(AM, /obj/item)) - var/obj/item/T = AM - if(T.throwforce) - Bruise() - -/mob/living/simple_animal/hostile/mushroom/bullet_act() - ..() - Bruise() - -/mob/living/simple_animal/hostile/mushroom/harvest() - var/counter - for(counter=0, counter<=powerlevel, counter++) - var/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice(src.loc) - S.reagents.add_reagent("mushroomhallucinogen", powerlevel) - S.reagents.add_reagent("doctorsdelight", powerlevel) - S.reagents.add_reagent("synaptizine", powerlevel) - qdel(src) +/mob/living/simple_animal/hostile/mushroom + name = "walking mushroom" + desc = "It's a massive mushroom... with legs?" + icon_state = "mushroom_color" + icon_living = "mushroom_color" + icon_dead = "mushroom_dead" + speak_chance = 0 + turns_per_move = 1 + maxHealth = 10 + health = 10 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "whacks" + harm_intent_damage = 5 + melee_damage_lower = 1 + melee_damage_upper = 1 + attack_same = 2 + attacktext = "chomps" + faction = "mushroom" + environment_smash = 0 + stat_attack = 2 + mouse_opacity = 1 + speed = 1 + ventcrawler = 2 + var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms + var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it wont award levels to shrooms that eat it + var/recovery_cooldown = 0 //So you can't repeatedly revive it during a fight + var/faint_ticker = 0 //If we hit three, another mushroom's gonna eat us + var/image/cap_living = null //Where we store our cap icons so we dont generate them constantly to update our icon + var/image/cap_dead = null + +/mob/living/simple_animal/hostile/mushroom/examine() + ..() + if(health >= maxHealth) + usr << "It looks healthy." + else + usr << "It looks like it's been roughed up." + +/mob/living/simple_animal/hostile/mushroom/Life() + ..() + if(!stat)//Mushrooms slowly regenerate if conscious, for people who want to save them from being eaten + health = min(health+2, maxHealth) + +/mob/living/simple_animal/hostile/mushroom/New()//Makes every shroom a little unique + melee_damage_lower += rand(3, 5) + melee_damage_upper += rand(10,20) + maxHealth += rand(40,60) + move_to_delay = rand(3,11) + var/cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) + cap_living = image('icons/mob/animal.dmi',icon_state = "mushroom_cap") + cap_dead = image('icons/mob/animal.dmi',icon_state = "mushroom_cap_dead") + cap_living.color = cap_color + cap_dead.color = cap_color + UpdateMushroomCap() + health = maxHealth + ..() + +/mob/living/simple_animal/hostile/mushroom/adjustBruteLoss(var/damage)//Possibility to flee from a fight just to make it more visually interesting + if(!retreat_distance && prob(33)) + retreat_distance = 5 + spawn(30) + retreat_distance = null + ..() + +/mob/living/simple_animal/hostile/mushroom/attack_animal(var/mob/living/L) + if(istype(L, /mob/living/simple_animal/hostile/mushroom) && stat == DEAD) + var/mob/living/simple_animal/hostile/mushroom/M = L + if(faint_ticker < 2) + M.visible_message("[M] chews a bit on [src].") + faint_ticker++ + return + M.visible_message("[M] devours [src]!") + var/level_gain = (powerlevel - M.powerlevel) + if(level_gain >= -1 && !bruised && !M.ckey)//Player shrooms can't level up to become robust gods. + if(level_gain < 1)//So we still gain a level if two mushrooms were the same level + level_gain = 1 + M.LevelUp(level_gain) + M.health = M.maxHealth + qdel(src) + ..() + +/mob/living/simple_animal/hostile/mushroom/revive() + ..() + icon_state = "mushroom_color" + UpdateMushroomCap() + +/mob/living/simple_animal/hostile/mushroom/Die() + visible_message("[src] fainted.") + ..() + UpdateMushroomCap() + +/mob/living/simple_animal/hostile/mushroom/proc/UpdateMushroomCap() + overlays.Cut() + if(health == 0) + overlays += cap_dead + else + overlays += cap_living + +/mob/living/simple_animal/hostile/mushroom/proc/Recover() + visible_message("[src] slowly begins to recover.") + health = 5 + faint_ticker = 0 + icon_state = icon_living + UpdateMushroomCap() + recovery_cooldown = 1 + spawn(300) + recovery_cooldown = 0 + +/mob/living/simple_animal/hostile/mushroom/proc/LevelUp(var/level_gain) + if(powerlevel <= 9) + powerlevel += level_gain + if(prob(25)) + melee_damage_lower += (level_gain * rand(1,5)) + else + melee_damage_upper += (level_gain * rand(1,5)) + maxHealth += (level_gain * rand(1,5)) + health = maxHealth //They'll always heal, even if they don't gain a level, in case you want to keep this shroom around instead of harvesting it + +/mob/living/simple_animal/hostile/mushroom/proc/Bruise() + if(!bruised && !stat) + src.visible_message("The [src.name] was bruised!") + bruised = 1 + +/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom)) + if(stat == DEAD && !recovery_cooldown) + Recover() + qdel(I) + else + user << "[src] won't eat it!" + return + if(I.force) + Bruise() + ..() + +/mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob) + ..() + if(M.a_intent == "harm") + Bruise() + +/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM) + ..() + if(istype(AM, /obj/item)) + var/obj/item/T = AM + if(T.throwforce) + Bruise() + +/mob/living/simple_animal/hostile/mushroom/bullet_act() + ..() + Bruise() + +/mob/living/simple_animal/hostile/mushroom/harvest() + var/counter + for(counter=0, counter<=powerlevel, counter++) + var/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice(src.loc) + S.reagents.add_reagent("mushroomhallucinogen", powerlevel) + S.reagents.add_reagent("doctorsdelight", powerlevel) + S.reagents.add_reagent("synaptizine", powerlevel) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index 8e32e320b36..7425c799a7b 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -1,38 +1,38 @@ -/mob/living/simple_animal/hostile/retaliate/bat - name = "Space Bat" - desc = "A rare breed of bat which roosts in spaceships, probably not vampiric." - icon_state = "bat" - icon_living = "bat" - icon_dead = "bat_dead" - icon_gib = "bat_dead" - turns_per_move = 1 - response_help = "brushes aside" - response_disarm = "flails at" - response_harm = "hits" - speak_chance = 0 - a_intent = "harm" - stop_automated_movement_when_pulled = 0 - maxHealth = 15 - health = 15 - see_in_dark = 10 - harm_intent_damage = 6 - melee_damage_lower = 6 - melee_damage_upper = 5 - attacktext = "bites" - pass_flags = PASSTABLE - faction = "carp" - attack_sound = 'sound/weapons/bite.ogg' - environment_smash = 0 - ventcrawler = 2 - - - //Space bats need no air to fly in. - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 +/mob/living/simple_animal/hostile/retaliate/bat + name = "Space Bat" + desc = "A rare breed of bat which roosts in spaceships, probably not vampiric." + icon_state = "bat" + icon_living = "bat" + icon_dead = "bat_dead" + icon_gib = "bat_dead" + turns_per_move = 1 + response_help = "brushes aside" + response_disarm = "flails at" + response_harm = "hits" + speak_chance = 0 + a_intent = "harm" + stop_automated_movement_when_pulled = 0 + maxHealth = 15 + health = 15 + see_in_dark = 10 + harm_intent_damage = 6 + melee_damage_lower = 6 + melee_damage_upper = 5 + attacktext = "bites" + pass_flags = PASSTABLE + faction = "carp" + attack_sound = 'sound/weapons/bite.ogg' + environment_smash = 0 + ventcrawler = 2 + + + //Space bats need no air to fly in. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 minbodytemp = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index d3726cb90db..463deca0ad5 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -1,204 +1,204 @@ -// A mob which only moves when it isn't being watched by living beings. - -/mob/living/simple_animal/hostile/statue - name = "statue" // matches the name of the statue with the flesh-to-stone spell - desc = "An incredibly lifelike marble carving. Its eyes seems to follow you.." // same as an ordinary statue with the added "eye following you" description - icon = 'icons/obj/statue.dmi' - icon_state = "human_male" - icon_living = "human_male" - icon_dead = "human_male" - gender = NEUTER - a_intent = "harm" - - response_help = "touches" - response_disarm = "pushes" - - speed = -1 - maxHealth = 50000 - health = 50000 - - harm_intent_damage = 70 - melee_damage_lower = 68 - melee_damage_upper = 83 - attacktext = "claws" - attack_sound = 'sound/hallucinations/growl1.ogg' - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - - faction = "statue" - move_to_delay = 0 // Very fast - - animate_movement = NO_STEPS // Do not animate movement, you jump around as you're a scary statue. - - see_in_dark = 13 - vision_range = 12 - aggro_vision_range = 12 - idle_vision_range = 12 - - search_objects = 1 // So that it can see through walls - - sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS - anchored = 1 - status_flags = GODMODE // Cannot push also - - var/cannot_be_seen = 1 - - -// No movement while seen code. - -/mob/living/simple_animal/hostile/statue/New() - ..() - // Give spells - mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src) - mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/blindness(src) - mob_spell_list += new /obj/effect/proc_holder/spell/targeted/night_vision(src) - - // Give nightvision - see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING - -/mob/living/simple_animal/hostile/statue/Move(var/turf/NewLoc) - if(can_be_seen(NewLoc)) - if(client) - src << "You cannot move, there are eyes on you!" - return 0 - return ..() - -/mob/living/simple_animal/hostile/statue/Life() - ..() - if(!client && target) // If we have a target and we're AI controlled - var/mob/watching = can_be_seen() - // If they're not our target - if(watching && watching != target) - // This one is closer. - if(get_dist(watching, src) > get_dist(target, src)) - LoseTarget() - GiveTarget(watching) - -/mob/living/simple_animal/hostile/statue/AttackingTarget() - if(!can_be_seen()) - ..() - -/mob/living/simple_animal/hostile/statue/DestroySurroundings() - if(!can_be_seen()) - ..() - -/mob/living/simple_animal/hostile/statue/face_atom() - if(!can_be_seen()) - ..() - -/mob/living/simple_animal/hostile/statue/UnarmedAttack() - if(can_be_seen()) - if(client) - src << "You cannot attack, there are eyes on you!" - return - ..() - -/mob/living/simple_animal/hostile/statue/proc/can_be_seen(var/turf/destination) - if(!cannot_be_seen) - return null - // Check for darkness - var/turf/T = get_turf(loc) - if(T && destination) - // Don't check it twice if our destination is the tile we are on or we can't even get to our destination - if(T == destination) - destination = null - else if(!T.lighting_lumcount && !destination.lighting_lumcount) // No one can see us in the darkness, right? - return null - - // We aren't in darkness, loop for viewers. - var/list/check_list = list(src) - if(destination) - check_list += destination - - // This loop will, at most, loop twice. - for(var/atom/check in check_list) - for(var/mob/living/M in viewers(world.view + 1, check) - src) - if(M.client && CanAttack(M) && !issilicon(M)) - if(!M.blinded && !(sdisabilities & BLIND)) - return M - return null - -// Cannot talk - -/mob/living/simple_animal/hostile/statue/say() - return 0 - -// Turn to dust when gibbed - -/mob/living/simple_animal/hostile/statue/gib(var/animation = 0) - dust(animation) - - -// Stop attacking clientless mobs - -/mob/living/simple_animal/hostile/statue/CanAttack(var/atom/the_target) - if(isliving(the_target)) - var/mob/living/L = the_target - if(!L.client && !L.ckey) - return 0 - return ..() - - -// Statue powers - -// Flicker lights -/obj/effect/proc_holder/spell/aoe_turf/flicker_lights - name = "Flicker Lights" - desc = "You will trigger a large amount of lights around you to flicker." - - charge_max = 300 - clothes_req = 0 - range = 14 - -/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets) - for(var/turf/T in targets) - for(var/obj/machinery/light/L in T) - L.flicker() - return - -//Blind AOE -/obj/effect/proc_holder/spell/aoe_turf/blindness - name = "Blindness" - desc = "Your prey will be momentarily blind for you to advance on them." - - message = "You glare your eyes." - charge_max = 600 - clothes_req = 0 - range = 10 - -/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets) - for(var/mob/living/L in living_mob_list) - var/turf/T = get_turf(L.loc) - if(T && T in targets) - L.eye_blind = max(L.eye_blind, 4) - return - -//Toggle Night Vision -/obj/effect/proc_holder/spell/targeted/night_vision - name = "Toggle Nightvision \[ON\]" - desc = "Toggle your nightvision mode." - - charge_max = 10 - clothes_req = 0 - - message = "You toggle your night vision!" - range = -1 - include_user = 1 - -/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets) - for(var/mob/living/target in targets) - if(target.see_invisible == SEE_INVISIBLE_LIVING) - target.see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING - name = "Toggle Nightvision \[ON\]" - else - target.see_invisible = SEE_INVISIBLE_LIVING - name = "Toggle Nightvision \[OFF\]" +// A mob which only moves when it isn't being watched by living beings. + +/mob/living/simple_animal/hostile/statue + name = "statue" // matches the name of the statue with the flesh-to-stone spell + desc = "An incredibly lifelike marble carving. Its eyes seems to follow you.." // same as an ordinary statue with the added "eye following you" description + icon = 'icons/obj/statue.dmi' + icon_state = "human_male" + icon_living = "human_male" + icon_dead = "human_male" + gender = NEUTER + a_intent = "harm" + + response_help = "touches" + response_disarm = "pushes" + + speed = -1 + maxHealth = 50000 + health = 50000 + + harm_intent_damage = 70 + melee_damage_lower = 68 + melee_damage_upper = 83 + attacktext = "claws" + attack_sound = 'sound/hallucinations/growl1.ogg' + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + faction = "statue" + move_to_delay = 0 // Very fast + + animate_movement = NO_STEPS // Do not animate movement, you jump around as you're a scary statue. + + see_in_dark = 13 + vision_range = 12 + aggro_vision_range = 12 + idle_vision_range = 12 + + search_objects = 1 // So that it can see through walls + + sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS + anchored = 1 + status_flags = GODMODE // Cannot push also + + var/cannot_be_seen = 1 + + +// No movement while seen code. + +/mob/living/simple_animal/hostile/statue/New() + ..() + // Give spells + mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flicker_lights(src) + mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/blindness(src) + mob_spell_list += new /obj/effect/proc_holder/spell/targeted/night_vision(src) + + // Give nightvision + see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + +/mob/living/simple_animal/hostile/statue/Move(var/turf/NewLoc) + if(can_be_seen(NewLoc)) + if(client) + src << "You cannot move, there are eyes on you!" + return 0 + return ..() + +/mob/living/simple_animal/hostile/statue/Life() + ..() + if(!client && target) // If we have a target and we're AI controlled + var/mob/watching = can_be_seen() + // If they're not our target + if(watching && watching != target) + // This one is closer. + if(get_dist(watching, src) > get_dist(target, src)) + LoseTarget() + GiveTarget(watching) + +/mob/living/simple_animal/hostile/statue/AttackingTarget() + if(!can_be_seen()) + ..() + +/mob/living/simple_animal/hostile/statue/DestroySurroundings() + if(!can_be_seen()) + ..() + +/mob/living/simple_animal/hostile/statue/face_atom() + if(!can_be_seen()) + ..() + +/mob/living/simple_animal/hostile/statue/UnarmedAttack() + if(can_be_seen()) + if(client) + src << "You cannot attack, there are eyes on you!" + return + ..() + +/mob/living/simple_animal/hostile/statue/proc/can_be_seen(var/turf/destination) + if(!cannot_be_seen) + return null + // Check for darkness + var/turf/T = get_turf(loc) + if(T && destination) + // Don't check it twice if our destination is the tile we are on or we can't even get to our destination + if(T == destination) + destination = null + else if(!T.lighting_lumcount && !destination.lighting_lumcount) // No one can see us in the darkness, right? + return null + + // We aren't in darkness, loop for viewers. + var/list/check_list = list(src) + if(destination) + check_list += destination + + // This loop will, at most, loop twice. + for(var/atom/check in check_list) + for(var/mob/living/M in viewers(world.view + 1, check) - src) + if(M.client && CanAttack(M) && !issilicon(M)) + if(!M.blinded && !(sdisabilities & BLIND)) + return M + return null + +// Cannot talk + +/mob/living/simple_animal/hostile/statue/say() + return 0 + +// Turn to dust when gibbed + +/mob/living/simple_animal/hostile/statue/gib(var/animation = 0) + dust(animation) + + +// Stop attacking clientless mobs + +/mob/living/simple_animal/hostile/statue/CanAttack(var/atom/the_target) + if(isliving(the_target)) + var/mob/living/L = the_target + if(!L.client && !L.ckey) + return 0 + return ..() + + +// Statue powers + +// Flicker lights +/obj/effect/proc_holder/spell/aoe_turf/flicker_lights + name = "Flicker Lights" + desc = "You will trigger a large amount of lights around you to flicker." + + charge_max = 300 + clothes_req = 0 + range = 14 + +/obj/effect/proc_holder/spell/aoe_turf/flicker_lights/cast(list/targets) + for(var/turf/T in targets) + for(var/obj/machinery/light/L in T) + L.flicker() + return + +//Blind AOE +/obj/effect/proc_holder/spell/aoe_turf/blindness + name = "Blindness" + desc = "Your prey will be momentarily blind for you to advance on them." + + message = "You glare your eyes." + charge_max = 600 + clothes_req = 0 + range = 10 + +/obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets) + for(var/mob/living/L in living_mob_list) + var/turf/T = get_turf(L.loc) + if(T && T in targets) + L.eye_blind = max(L.eye_blind, 4) + return + +//Toggle Night Vision +/obj/effect/proc_holder/spell/targeted/night_vision + name = "Toggle Nightvision \[ON\]" + desc = "Toggle your nightvision mode." + + charge_max = 10 + clothes_req = 0 + + message = "You toggle your night vision!" + range = -1 + include_user = 1 + +/obj/effect/proc_holder/spell/targeted/night_vision/cast(list/targets) + for(var/mob/living/target in targets) + if(target.see_invisible == SEE_INVISIBLE_LIVING) + target.see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + name = "Toggle Nightvision \[ON\]" + else + target.see_invisible = SEE_INVISIBLE_LIVING + name = "Toggle Nightvision \[OFF\]" return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index bb7f05728f2..df89648dd87 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -68,4 +68,4 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/rods(loc) - qdel(src) + qdel(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 8ed2822ce7b..64ac3a4cc00 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,804 +1,804 @@ -/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. - mob_list -= src - dead_mob_list -= src - living_mob_list -= src - //Set the mob up for GC. Mobs have lots of references - if(client) - for(var/atom/movable/AM in client.screen) - qdel(AM) - client.screen = list() - del(hud_used) - for(var/magic in mob_spell_list) - del(magic) - for(var/infection in viruses) - del(infection) - ghostize() - ..() - -var/next_mob_id = 0 -/mob/New() - tag = "mob_[next_mob_id++]" - mob_list += src - if(stat == DEAD) - dead_mob_list += src - else - living_mob_list += src - ..() - -/mob/proc/Cell() - set category = "Admin" - set hidden = 1 - - if(!loc) return 0 - - var/datum/gas_mixture/environment = loc.return_air() - - var/t = "\blue Coordinates: [x],[y] \n" - t+= "\red Temperature: [environment.temperature] \n" - t+= "\blue Nitrogen: [environment.nitrogen] \n" - t+= "\blue Oxygen: [environment.oxygen] \n" - t+= "\blue Plasma : [environment.toxins] \n" - t+= "\blue Carbon Dioxide: [environment.carbon_dioxide] \n" - for(var/datum/gas/trace_gas in environment.trace_gases) - usr << "\blue [trace_gas.type]: [trace_gas.moles] \n" - - usr.show_message(t, 1) - -/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) - - if(!client) return - - msg = copytext(msg, 1, MAX_MESSAGE_LEN) - - if (type) - if(type & 1 && (sdisabilities & BLIND || blinded || paralysis) )//Vision related - if (!( alt )) - return - else - msg = alt - type = alt_type - if (type & 2 && (sdisabilities & DEAF || ear_deaf))//Hearing related - if (!( alt )) - return - else - msg = alt - type = alt_type - if ((type & 1 && sdisabilities & BLIND)) - return - // Added voice muffling for Issue 41. - if(stat == UNCONSCIOUS || sleeping > 0) - src << "... You can almost hear someone talking ..." - else - src << msg - return - -// Show a message to all mobs in sight of this one -// This would be for visible actions by the src mob -// message is the message output to anyone who can see e.g. "[src] does something!" -// self_message (optional) is what the src mob sees e.g. "You do something!" -// blind_message (optional) is what blind people will hear e.g. "You hear something!" - -/mob/visible_message(var/message, var/self_message, var/blind_message) - for(var/mob/M in viewers(src)) - var/msg = message - if(self_message && M==src) - msg = self_message - M.show_message( msg, 1, blind_message, 2) - -// Show a message to all mobs in sight of this atom -// Use for objects performing visible actions -// message is output to anyone who can see, e.g. "The [src] does something!" -// blind_message (optional) is what blind people will hear e.g. "You hear something!" -/atom/proc/visible_message(var/message, var/blind_message) - for(var/mob/M in viewers(src)) - M.show_message( message, 1, blind_message, 2) - - -/mob/proc/movement_delay() - return 0 - -/mob/proc/Life() - return - -/mob/proc/get_item_by_slot(slot_id) - switch(slot_id) - if(slot_l_hand) - return l_hand - if(slot_r_hand) - return r_hand - return null - -/mob/proc/ret_grab(obj/effect/list_container/mobl/L as obj, flag) - if ((!( istype(l_hand, /obj/item/weapon/grab) ) && !( istype(r_hand, /obj/item/weapon/grab) ))) - if (!( L )) - return null - else - return L.container - else - if (!( L )) - L = new /obj/effect/list_container/mobl( null ) - L.container += src - L.master = src - if (istype(l_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = l_hand - if (!( L.container.Find(G.affecting) )) - L.container += G.affecting - if (G.affecting) - G.affecting.ret_grab(L, 1) - if (istype(r_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = r_hand - if (!( L.container.Find(G.affecting) )) - L.container += G.affecting - if (G.affecting) - G.affecting.ret_grab(L, 1) - if (!( flag )) - if (L.master == src) - var/list/temp = list( ) - temp += L.container - //L = null - qdel(L) - return temp - else - return L.container - return - -/mob/proc/restrained() - return - -//This proc is called whenever someone clicks an inventory ui slot. -/mob/proc/attack_ui(slot) - var/obj/item/W = get_active_hand() - - if(istype(W)) - if(equip_to_slot_if_possible(W, slot,0,0,0)) - return 1 - - if(!W) - // Activate the item - var/obj/item/I = get_item_by_slot(slot) - if(istype(I)) - I.attack_hand(src) - - return 0 - -/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, qdel_on_fail = 0, disable_warning = 1, redraw_mob = 1) - if(equip_to_slot_if_possible(W, slot_l_hand, qdel_on_fail, disable_warning, redraw_mob)) - return 1 - else if(equip_to_slot_if_possible(W, slot_r_hand, qdel_on_fail, disable_warning, redraw_mob)) - return 1 - return 0 - -//This is a SAFE proc. Use this instead of equip_to_splot()! -//set qdel_on_fail to have it delete W if it fails to equip -//set disable_warning to disable the 'you are unable to equip that' warning. -//unset redraw_mob to prevent the mob from being redrawn at the end. -/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, qdel_on_fail = 0, disable_warning = 0, redraw_mob = 1) - if(!istype(W)) return 0 - if(!W.mob_can_equip(src, slot, disable_warning)) - if(qdel_on_fail) - qdel(W) - else - if(!disable_warning) - src << "\red You are unable to equip that." //Only print if qdel_on_fail is false - return 0 - equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail. - return 1 - -//This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on whether you can or can't eqip need to be done before! Use mob_can_equip() for that task. -//In most cases you will want to use equip_to_slot_if_possible() -/mob/proc/equip_to_slot(obj/item/W as obj, slot) - return - -//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. -/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) - equip_to_slot_if_possible(W, slot, 1, 1, 0) - -//The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. -var/list/slot_equipment_priority = list( \ - slot_back,\ - slot_wear_id,\ - slot_w_uniform,\ - slot_wear_suit,\ - slot_wear_mask,\ - slot_head,\ - slot_shoes,\ - slot_gloves,\ - slot_ears,\ - slot_glasses,\ - slot_belt,\ - slot_s_store,\ - slot_l_store,\ - slot_r_store\ - ) - -//puts the item "W" into an appropriate slot in a human's inventory -//returns 0 if it cannot, 1 if successful -/mob/proc/equip_to_appropriate_slot(obj/item/W) - if(!istype(W)) return 0 - - for(var/slot in slot_equipment_priority) - if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 0; redraw_mob = 1 - return 1 - - return 0 - -/mob/proc/reset_view(atom/A) - if (client) - if (istype(A, /atom/movable)) - client.perspective = EYE_PERSPECTIVE - client.eye = A - else - if (isturf(loc)) - client.eye = client.mob - client.perspective = MOB_PERSPECTIVE - else - client.perspective = EYE_PERSPECTIVE - client.eye = loc - return - - -/mob/proc/show_inv(mob/user) - user.set_machine(src) - var/dat = {" -
    - [name] -
    -
    Left Hand: [(l_hand&&!(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] -
    Right Hand: [(r_hand&&!(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"] -
    Close - "} - user << browse(dat, "window=mob\ref[src];size=325x500") - onclose(user, "mob\ref[src]") - - -/mob/verb/mode() - set name = "Activate Held Object" - set category = "Object" - set src = usr - - if(istype(loc,/obj/mecha)) return - - if(hand) - var/obj/item/W = l_hand - if (W) - W.attack_self(src) - update_inv_l_hand(0) - else - var/obj/item/W = r_hand - if (W) - W.attack_self(src) - update_inv_r_hand(0) - if(next_move < world.time) - next_move = world.time + 2 - return - -/* -/mob/verb/dump_source() - - var/master = "
    "
    -	for(var/t in typesof(/area))
    -		master += text("[]\n", t)
    -		//Foreach goto(26)
    -	src << browse(master)
    -	return
    -*/
    -
    -/mob/verb/memory()
    -	set name = "Notes"
    -	set category = "IC"
    -	if(mind)
    -		mind.show_memory(src)
    -	else
    -		src << "The game appears to have misplaced your mind datum, so we can't show you your notes."
    -
    -/mob/verb/add_memory(msg as message)
    -	set name = "Add Note"
    -	set category = "IC"
    -
    -	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    -	msg = sanitize(msg)
    -
    -	if(mind)
    -		mind.store_memory(msg)
    -	else
    -		src << "The game appears to have misplaced your mind datum, so we can't show you your notes."
    -
    -/mob/proc/store_memory(msg as message, popup, sane = 1)
    -	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    -
    -	if (sane)
    -		msg = sanitize(msg)
    -
    -	if (length(memory) == 0)
    -		memory += msg
    -	else
    -		memory += "
    [msg]" - - if (popup) - memory() - -/* -/mob/verb/help() - set name = "Help" - src << browse('html/help.html', "window=help") - return -*/ - -/mob/verb/abandon_mob() - set name = "Respawn" - set category = "OOC" - - if (!( abandon_allowed )) - return - if ((stat != 2 || !( ticker ))) - usr << "\blue You must be dead to use this!" - return - - log_game("[usr.name]/[usr.key] used abandon mob.") - - usr << "\blue Please roleplay correctly!" - - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - return - client.screen.Cut() - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - return - - var/mob/new_player/M = new /mob/new_player() - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - qdel(M) - return - - M.key = key -// M.Login() //wat - return - -/client/verb/changes() - set name = "Changelog" - set category = "OOC" - getFiles( - 'html/postcardsmall.jpg', - 'html/somerights20.png', - 'html/88x31.png', - 'html/bug-minus.png', - 'html/cross-circle.png', - 'html/hard-hat-exclamation.png', - 'html/image-minus.png', - 'html/image-plus.png', - 'html/music-minus.png', - 'html/music-plus.png', - 'html/tick-circle.png', - 'html/wrench-screwdriver.png', - 'html/spell-check.png', - 'html/burn-exclamation.png', - 'html/chevron.png', - 'html/chevron-expand.png', - 'html/changelog.css', - 'html/changelog.js', - 'html/changelog.html' - ) - src << browse('html/changelog.html', "window=changes;size=675x650") - if(prefs.lastchangelog != changelog_hash) - prefs.lastchangelog = changelog_hash - prefs.save_preferences() - winset(src, "rpane.changelog", "background-color=none;font-style=;") - -/mob/verb/observe() - set name = "Observe" - set category = "OOC" - var/is_admin = 0 - - if(check_rights_for(client,R_ADMIN)) - is_admin = 1 - else if(stat != DEAD || istype(src, /mob/new_player)) - usr << "\blue You must be observing to use this!" - return - - if(is_admin && stat == DEAD) - is_admin = 0 - - var/list/names = list() - var/list/namecounts = list() - var/list/creatures = list() - - for(var/obj/O in world) //EWWWWWWWWWWWWWWWWWWWWWWWW ~needs to be optimised - if(!O.loc) - continue - if(istype(O, /obj/item/weapon/disk/nuclear)) - var/name = "Nuclear Disk" - if (names.Find(name)) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - creatures[name] = O - - if(istype(O, /obj/machinery/singularity)) - var/name = "Singularity" - if (names.Find(name)) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - creatures[name] = O - - if(istype(O, /obj/machinery/bot)) - var/name = "BOT: [O.name]" - if (names.Find(name)) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - creatures[name] = O - - - for(var/mob/M in sortAtom(mob_list)) - var/name = M.name - if (names.Find(name)) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - - creatures[name] = M - - - client.perspective = EYE_PERSPECTIVE - - var/eye_name = null - - var/ok = "[is_admin ? "Admin Observe" : "Observe"]" - eye_name = input("Please, select a player!", ok, null, null) as null|anything in creatures - - if (!eye_name) - return - - var/mob/mob_eye = creatures[eye_name] - - if(client && mob_eye) - client.eye = mob_eye - if (is_admin) - client.adminobs = 1 - if(mob_eye == client.mob || client.eye == client.mob) - client.adminobs = 0 - -/mob/verb/cancel_camera() - set name = "Cancel Camera View" - set category = "OOC" - reset_view(null) - unset_machine() - if(istype(src, /mob/living)) - if(src:cameraFollow) - src:cameraFollow = null - -/mob/Topic(href, href_list) - if(href_list["mach_close"]) - var/t1 = text("window=[href_list["mach_close"]]") - unset_machine() - src << browse(null, t1) - - if(href_list["refresh"]) - if(machine && in_range(src, usr)) - show_inv(machine) - - if(!usr.stat && usr.canmove && !usr.restrained() && Adjacent(usr)) - if(href_list["item"]) - var/slot = text2num(href_list["item"]) - var/obj/item/what = get_item_by_slot(slot) - - if(what) - if(what.flags & NODROP) - usr << "You can't remove \the [what.name], it appears to be stuck!" - return - visible_message("[usr] tries to remove [src]'s [what.name].", \ - "[usr] tries to remove [src]'s [what.name].") - what.add_fingerprint(usr) - if(do_mob(usr, src, STRIP_DELAY)) - if(what && Adjacent(usr)) - unEquip(what) - else - what = usr.get_active_hand() - if(what && (what.flags & NODROP)) - usr << "You can't put \the [what.name] on [src], it's stuck to your hand!" - return - if(what && what.mob_can_equip(src, slot, 1)) - visible_message("[usr] tries to put [what] on [src].") - if(do_mob(usr, src, STRIP_DELAY * 0.5)) - if(what && Adjacent(usr)) - usr.unEquip(what) - equip_to_slot_if_possible(what, slot, 0, 1) - - if(usr.machine == src) - if(Adjacent(usr)) - show_inv(usr) - else - usr << browse(null,"window=mob\ref[src]") - - -/mob/MouseDrop(mob/M) - ..() - if(M != usr) return - if(usr == src) return - if(!Adjacent(usr)) return - if(istype(M, /mob/living/silicon/ai)) return - show_inv(usr) - - -/mob/verb/stop_pulling() - - set name = "Stop Pulling" - set category = "IC" - - if(pulling) - pulling.pulledby = null - pulling = null - -/mob/proc/start_pulling(var/atom/movable/AM) - if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! - return - if (!( AM.anchored )) - AM.add_fingerprint(src) - - // If we're pulling something then drop what we're currently pulling and pull this instead. - if(pulling) - // Are we trying to pull something we are already pulling? Then just stop here, no need to continue. - if(AM == pulling) - return - stop_pulling() - - src.pulling = AM - AM.pulledby = src - if(ismob(AM)) - var/mob/M = AM - if(!iscarbon(src)) - M.LAssailant = null - else - M.LAssailant = usr - - -/mob/proc/can_use_hands() - return - -/mob/proc/is_active() - return (0 >= usr.stat) - -/mob/proc/see(message) - if(!is_active()) - return 0 - src << message - return 1 - -/mob/proc/show_viewers(message) - for(var/mob/M in viewers()) - M.see(message) - -/mob/Stat() - ..() - - if(client && client.holder) - - if(statpanel("Status")) //not looking at that panel - stat(null,"Location:\t([x], [y], [z])") - stat(null,"CPU:\t[world.cpu]") - stat(null,"Instances:\t[world.contents.len]") - - if(master_controller) - stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])") - stat(null,"Air-[master_controller.air_cost]\t#[global_activeturfs]") - stat(null,"Sun-[master_controller.sun_cost]") - stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]") - stat(null,"Dis-[master_controller.diseases_cost]\t#[active_diseases.len]") - stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]") - stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]") - stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]") - stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]") - stat(null,"GC-[master_controller.gc_cost]\t#[garbage.destroyed.len + garbage.queue.len]-#dels[garbage.dels]") - stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]") - else - stat(null,"MasterController-ERROR") - - if(listed_turf && client) - if(!TurfAdjacent(listed_turf)) - listed_turf = null - else - statpanel(listed_turf.name, null, listed_turf) - for(var/atom/A in listed_turf) - if(A.invisibility > see_invisible) - continue - statpanel(listed_turf.name, null, A) - - - if(mind) - add_spells_to_statpanel(mind.spell_list) - if(mind.changeling) - add_stings_to_statpanel(mind.changeling.purchasedpowers) - add_spells_to_statpanel(mob_spell_list) - -/mob/proc/add_spells_to_statpanel(var/list/spells) - for(var/obj/effect/proc_holder/spell/S in spells) - if(S.can_be_cast_by(src)) - switch(S.charge_type) - if("recharge") - statpanel("[S.panel]","[S.charge_counter/10.0]/[S.charge_max/10]",S) - if("charges") - statpanel("[S.panel]","[S.charge_counter]/[S.charge_max]",S) - if("holdervar") - statpanel("[S.panel]","[S.holder_var_type] [S.holder_var_amount]",S) - -/mob/proc/add_stings_to_statpanel(var/list/stings) - for(var/obj/effect/proc_holder/changeling/S in stings) - if(S.chemical_cost >=0 && S.can_be_used_by(src)) - statpanel("[S.panel]",((S.chemical_cost > 0) ? "[S.chemical_cost]" : ""),S) - -// facing verbs -/mob/proc/canface() - if(!canmove) return 0 - if(client.moving) return 0 - if(world.time < client.move_delay) return 0 - if(stat==2) return 0 - if(anchored) return 0 - if(notransform) return 0 - if(restrained()) return 0 - return 1 - -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -//Robots and brains have their own version so don't worry about them -/mob/proc/update_canmove() - var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH) - var/bed = !(buckled && istype(buckled, /obj/structure/stool/bed/chair)) - if(ko || resting || stunned) - drop_r_hand() - drop_l_hand() - else - lying = 0 - canmove = 1 - if(buckled) - lying = 90 * bed - else - if((ko || resting) && !lying) - fall(ko) - anchored = buckled - canmove = !(ko || resting || stunned || buckled) - density = !lying - update_transform() - lying_prev = lying - if(update_icon) //forces a full overlay update - update_icon = 0 - regenerate_icons() - return canmove - -/mob/proc/fall(var/forced) - drop_l_hand() - drop_r_hand() - -/mob/verb/eastface() - set hidden = 1 - if(!canface()) return 0 - dir = EAST - client.move_delay += movement_delay() - return 1 - - -/mob/verb/westface() - set hidden = 1 - if(!canface()) return 0 - dir = WEST - client.move_delay += movement_delay() - return 1 - - -/mob/verb/northface() - set hidden = 1 - if(!canface()) return 0 - dir = NORTH - client.move_delay += movement_delay() - return 1 - - -/mob/verb/southface() - set hidden = 1 - if(!canface()) return 0 - dir = SOUTH - client.move_delay += movement_delay() - return 1 - - -/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check - return 0 - -/mob/proc/Jitter(amount) - jitteriness = max(jitteriness,amount,0) - -/mob/proc/Dizzy(amount) - dizziness = max(dizziness,amount,0) - -/mob/proc/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - update_canmove() - return - -/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - update_canmove() - return - -/mob/proc/AdjustStunned(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - update_canmove() - return - -/mob/proc/Weaken(amount) - if(status_flags & CANWEAKEN) - weakened = max(max(weakened,amount),0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(weakened + amount,0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/Paralyse(amount) - if(status_flags & CANPARALYSE) - paralysis = max(max(paralysis,amount),0) - update_canmove() - return - -/mob/proc/SetParalysis(amount) - if(status_flags & CANPARALYSE) - paralysis = max(amount,0) - update_canmove() - return - -/mob/proc/AdjustParalysis(amount) - if(status_flags & CANPARALYSE) - paralysis = max(paralysis + amount,0) - update_canmove() - return - -/mob/proc/Sleeping(amount) - sleeping = max(max(sleeping,amount),0) - update_canmove() - return - -/mob/proc/SetSleeping(amount) - sleeping = max(amount,0) - update_canmove() - return - -/mob/proc/AdjustSleeping(amount) - sleeping = max(sleeping + amount,0) - update_canmove() - return - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - update_canmove() - return - -/mob/proc/SetResting(amount) - resting = max(amount,0) - update_canmove() - return - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - update_canmove() +/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. + mob_list -= src + dead_mob_list -= src + living_mob_list -= src + //Set the mob up for GC. Mobs have lots of references + if(client) + for(var/atom/movable/AM in client.screen) + qdel(AM) + client.screen = list() + del(hud_used) + for(var/magic in mob_spell_list) + del(magic) + for(var/infection in viruses) + del(infection) + ghostize() + ..() + +var/next_mob_id = 0 +/mob/New() + tag = "mob_[next_mob_id++]" + mob_list += src + if(stat == DEAD) + dead_mob_list += src + else + living_mob_list += src + ..() + +/mob/proc/Cell() + set category = "Admin" + set hidden = 1 + + if(!loc) return 0 + + var/datum/gas_mixture/environment = loc.return_air() + + var/t = "\blue Coordinates: [x],[y] \n" + t+= "\red Temperature: [environment.temperature] \n" + t+= "\blue Nitrogen: [environment.nitrogen] \n" + t+= "\blue Oxygen: [environment.oxygen] \n" + t+= "\blue Plasma : [environment.toxins] \n" + t+= "\blue Carbon Dioxide: [environment.carbon_dioxide] \n" + for(var/datum/gas/trace_gas in environment.trace_gases) + usr << "\blue [trace_gas.type]: [trace_gas.moles] \n" + + usr.show_message(t, 1) + +/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) + + if(!client) return + + msg = copytext(msg, 1, MAX_MESSAGE_LEN) + + if (type) + if(type & 1 && (sdisabilities & BLIND || blinded || paralysis) )//Vision related + if (!( alt )) + return + else + msg = alt + type = alt_type + if (type & 2 && (sdisabilities & DEAF || ear_deaf))//Hearing related + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & 1 && sdisabilities & BLIND)) + return + // Added voice muffling for Issue 41. + if(stat == UNCONSCIOUS || sleeping > 0) + src << "... You can almost hear someone talking ..." + else + src << msg + return + +// Show a message to all mobs in sight of this one +// This would be for visible actions by the src mob +// message is the message output to anyone who can see e.g. "[src] does something!" +// self_message (optional) is what the src mob sees e.g. "You do something!" +// blind_message (optional) is what blind people will hear e.g. "You hear something!" + +/mob/visible_message(var/message, var/self_message, var/blind_message) + for(var/mob/M in viewers(src)) + var/msg = message + if(self_message && M==src) + msg = self_message + M.show_message( msg, 1, blind_message, 2) + +// Show a message to all mobs in sight of this atom +// Use for objects performing visible actions +// message is output to anyone who can see, e.g. "The [src] does something!" +// blind_message (optional) is what blind people will hear e.g. "You hear something!" +/atom/proc/visible_message(var/message, var/blind_message) + for(var/mob/M in viewers(src)) + M.show_message( message, 1, blind_message, 2) + + +/mob/proc/movement_delay() + return 0 + +/mob/proc/Life() + return + +/mob/proc/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_l_hand) + return l_hand + if(slot_r_hand) + return r_hand + return null + +/mob/proc/ret_grab(obj/effect/list_container/mobl/L as obj, flag) + if ((!( istype(l_hand, /obj/item/weapon/grab) ) && !( istype(r_hand, /obj/item/weapon/grab) ))) + if (!( L )) + return null + else + return L.container + else + if (!( L )) + L = new /obj/effect/list_container/mobl( null ) + L.container += src + L.master = src + if (istype(l_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = l_hand + if (!( L.container.Find(G.affecting) )) + L.container += G.affecting + if (G.affecting) + G.affecting.ret_grab(L, 1) + if (istype(r_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = r_hand + if (!( L.container.Find(G.affecting) )) + L.container += G.affecting + if (G.affecting) + G.affecting.ret_grab(L, 1) + if (!( flag )) + if (L.master == src) + var/list/temp = list( ) + temp += L.container + //L = null + qdel(L) + return temp + else + return L.container + return + +/mob/proc/restrained() + return + +//This proc is called whenever someone clicks an inventory ui slot. +/mob/proc/attack_ui(slot) + var/obj/item/W = get_active_hand() + + if(istype(W)) + if(equip_to_slot_if_possible(W, slot,0,0,0)) + return 1 + + if(!W) + // Activate the item + var/obj/item/I = get_item_by_slot(slot) + if(istype(I)) + I.attack_hand(src) + + return 0 + +/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, qdel_on_fail = 0, disable_warning = 1, redraw_mob = 1) + if(equip_to_slot_if_possible(W, slot_l_hand, qdel_on_fail, disable_warning, redraw_mob)) + return 1 + else if(equip_to_slot_if_possible(W, slot_r_hand, qdel_on_fail, disable_warning, redraw_mob)) + return 1 + return 0 + +//This is a SAFE proc. Use this instead of equip_to_splot()! +//set qdel_on_fail to have it delete W if it fails to equip +//set disable_warning to disable the 'you are unable to equip that' warning. +//unset redraw_mob to prevent the mob from being redrawn at the end. +/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, qdel_on_fail = 0, disable_warning = 0, redraw_mob = 1) + if(!istype(W)) return 0 + if(!W.mob_can_equip(src, slot, disable_warning)) + if(qdel_on_fail) + qdel(W) + else + if(!disable_warning) + src << "\red You are unable to equip that." //Only print if qdel_on_fail is false + return 0 + equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail. + return 1 + +//This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on whether you can or can't eqip need to be done before! Use mob_can_equip() for that task. +//In most cases you will want to use equip_to_slot_if_possible() +/mob/proc/equip_to_slot(obj/item/W as obj, slot) + return + +//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. +/mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) + equip_to_slot_if_possible(W, slot, 1, 1, 0) + +//The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. +var/list/slot_equipment_priority = list( \ + slot_back,\ + slot_wear_id,\ + slot_w_uniform,\ + slot_wear_suit,\ + slot_wear_mask,\ + slot_head,\ + slot_shoes,\ + slot_gloves,\ + slot_ears,\ + slot_glasses,\ + slot_belt,\ + slot_s_store,\ + slot_l_store,\ + slot_r_store\ + ) + +//puts the item "W" into an appropriate slot in a human's inventory +//returns 0 if it cannot, 1 if successful +/mob/proc/equip_to_appropriate_slot(obj/item/W) + if(!istype(W)) return 0 + + for(var/slot in slot_equipment_priority) + if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 0; redraw_mob = 1 + return 1 + + return 0 + +/mob/proc/reset_view(atom/A) + if (client) + if (istype(A, /atom/movable)) + client.perspective = EYE_PERSPECTIVE + client.eye = A + else + if (isturf(loc)) + client.eye = client.mob + client.perspective = MOB_PERSPECTIVE + else + client.perspective = EYE_PERSPECTIVE + client.eye = loc + return + + +/mob/proc/show_inv(mob/user) + user.set_machine(src) + var/dat = {" +
    + [name] +
    +
    Left Hand: [(l_hand&&!(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"] +
    Right Hand: [(r_hand&&!(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"] +
    Close + "} + user << browse(dat, "window=mob\ref[src];size=325x500") + onclose(user, "mob\ref[src]") + + +/mob/verb/mode() + set name = "Activate Held Object" + set category = "Object" + set src = usr + + if(istype(loc,/obj/mecha)) return + + if(hand) + var/obj/item/W = l_hand + if (W) + W.attack_self(src) + update_inv_l_hand(0) + else + var/obj/item/W = r_hand + if (W) + W.attack_self(src) + update_inv_r_hand(0) + if(next_move < world.time) + next_move = world.time + 2 + return + +/* +/mob/verb/dump_source() + + var/master = "
    "
    +	for(var/t in typesof(/area))
    +		master += text("[]\n", t)
    +		//Foreach goto(26)
    +	src << browse(master)
    +	return
    +*/
    +
    +/mob/verb/memory()
    +	set name = "Notes"
    +	set category = "IC"
    +	if(mind)
    +		mind.show_memory(src)
    +	else
    +		src << "The game appears to have misplaced your mind datum, so we can't show you your notes."
    +
    +/mob/verb/add_memory(msg as message)
    +	set name = "Add Note"
    +	set category = "IC"
    +
    +	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    +	msg = sanitize(msg)
    +
    +	if(mind)
    +		mind.store_memory(msg)
    +	else
    +		src << "The game appears to have misplaced your mind datum, so we can't show you your notes."
    +
    +/mob/proc/store_memory(msg as message, popup, sane = 1)
    +	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    +
    +	if (sane)
    +		msg = sanitize(msg)
    +
    +	if (length(memory) == 0)
    +		memory += msg
    +	else
    +		memory += "
    [msg]" + + if (popup) + memory() + +/* +/mob/verb/help() + set name = "Help" + src << browse('html/help.html', "window=help") + return +*/ + +/mob/verb/abandon_mob() + set name = "Respawn" + set category = "OOC" + + if (!( abandon_allowed )) + return + if ((stat != 2 || !( ticker ))) + usr << "\blue You must be dead to use this!" + return + + log_game("[usr.name]/[usr.key] used abandon mob.") + + usr << "\blue Please roleplay correctly!" + + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + return + client.screen.Cut() + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + return + + var/mob/new_player/M = new /mob/new_player() + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + qdel(M) + return + + M.key = key +// M.Login() //wat + return + +/client/verb/changes() + set name = "Changelog" + set category = "OOC" + getFiles( + 'html/postcardsmall.jpg', + 'html/somerights20.png', + 'html/88x31.png', + 'html/bug-minus.png', + 'html/cross-circle.png', + 'html/hard-hat-exclamation.png', + 'html/image-minus.png', + 'html/image-plus.png', + 'html/music-minus.png', + 'html/music-plus.png', + 'html/tick-circle.png', + 'html/wrench-screwdriver.png', + 'html/spell-check.png', + 'html/burn-exclamation.png', + 'html/chevron.png', + 'html/chevron-expand.png', + 'html/changelog.css', + 'html/changelog.js', + 'html/changelog.html' + ) + src << browse('html/changelog.html', "window=changes;size=675x650") + if(prefs.lastchangelog != changelog_hash) + prefs.lastchangelog = changelog_hash + prefs.save_preferences() + winset(src, "rpane.changelog", "background-color=none;font-style=;") + +/mob/verb/observe() + set name = "Observe" + set category = "OOC" + var/is_admin = 0 + + if(check_rights_for(client,R_ADMIN)) + is_admin = 1 + else if(stat != DEAD || istype(src, /mob/new_player)) + usr << "\blue You must be observing to use this!" + return + + if(is_admin && stat == DEAD) + is_admin = 0 + + var/list/names = list() + var/list/namecounts = list() + var/list/creatures = list() + + for(var/obj/O in world) //EWWWWWWWWWWWWWWWWWWWWWWWW ~needs to be optimised + if(!O.loc) + continue + if(istype(O, /obj/item/weapon/disk/nuclear)) + var/name = "Nuclear Disk" + if (names.Find(name)) + namecounts[name]++ + name = "[name] ([namecounts[name]])" + else + names.Add(name) + namecounts[name] = 1 + creatures[name] = O + + if(istype(O, /obj/machinery/singularity)) + var/name = "Singularity" + if (names.Find(name)) + namecounts[name]++ + name = "[name] ([namecounts[name]])" + else + names.Add(name) + namecounts[name] = 1 + creatures[name] = O + + if(istype(O, /obj/machinery/bot)) + var/name = "BOT: [O.name]" + if (names.Find(name)) + namecounts[name]++ + name = "[name] ([namecounts[name]])" + else + names.Add(name) + namecounts[name] = 1 + creatures[name] = O + + + for(var/mob/M in sortAtom(mob_list)) + var/name = M.name + if (names.Find(name)) + namecounts[name]++ + name = "[name] ([namecounts[name]])" + else + names.Add(name) + namecounts[name] = 1 + + creatures[name] = M + + + client.perspective = EYE_PERSPECTIVE + + var/eye_name = null + + var/ok = "[is_admin ? "Admin Observe" : "Observe"]" + eye_name = input("Please, select a player!", ok, null, null) as null|anything in creatures + + if (!eye_name) + return + + var/mob/mob_eye = creatures[eye_name] + + if(client && mob_eye) + client.eye = mob_eye + if (is_admin) + client.adminobs = 1 + if(mob_eye == client.mob || client.eye == client.mob) + client.adminobs = 0 + +/mob/verb/cancel_camera() + set name = "Cancel Camera View" + set category = "OOC" + reset_view(null) + unset_machine() + if(istype(src, /mob/living)) + if(src:cameraFollow) + src:cameraFollow = null + +/mob/Topic(href, href_list) + if(href_list["mach_close"]) + var/t1 = text("window=[href_list["mach_close"]]") + unset_machine() + src << browse(null, t1) + + if(href_list["refresh"]) + if(machine && in_range(src, usr)) + show_inv(machine) + + if(!usr.stat && usr.canmove && !usr.restrained() && Adjacent(usr)) + if(href_list["item"]) + var/slot = text2num(href_list["item"]) + var/obj/item/what = get_item_by_slot(slot) + + if(what) + if(what.flags & NODROP) + usr << "You can't remove \the [what.name], it appears to be stuck!" + return + visible_message("[usr] tries to remove [src]'s [what.name].", \ + "[usr] tries to remove [src]'s [what.name].") + what.add_fingerprint(usr) + if(do_mob(usr, src, STRIP_DELAY)) + if(what && Adjacent(usr)) + unEquip(what) + else + what = usr.get_active_hand() + if(what && (what.flags & NODROP)) + usr << "You can't put \the [what.name] on [src], it's stuck to your hand!" + return + if(what && what.mob_can_equip(src, slot, 1)) + visible_message("[usr] tries to put [what] on [src].") + if(do_mob(usr, src, STRIP_DELAY * 0.5)) + if(what && Adjacent(usr)) + usr.unEquip(what) + equip_to_slot_if_possible(what, slot, 0, 1) + + if(usr.machine == src) + if(Adjacent(usr)) + show_inv(usr) + else + usr << browse(null,"window=mob\ref[src]") + + +/mob/MouseDrop(mob/M) + ..() + if(M != usr) return + if(usr == src) return + if(!Adjacent(usr)) return + if(istype(M, /mob/living/silicon/ai)) return + show_inv(usr) + + +/mob/verb/stop_pulling() + + set name = "Stop Pulling" + set category = "IC" + + if(pulling) + pulling.pulledby = null + pulling = null + +/mob/proc/start_pulling(var/atom/movable/AM) + if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! + return + if (!( AM.anchored )) + AM.add_fingerprint(src) + + // If we're pulling something then drop what we're currently pulling and pull this instead. + if(pulling) + // Are we trying to pull something we are already pulling? Then just stop here, no need to continue. + if(AM == pulling) + return + stop_pulling() + + src.pulling = AM + AM.pulledby = src + if(ismob(AM)) + var/mob/M = AM + if(!iscarbon(src)) + M.LAssailant = null + else + M.LAssailant = usr + + +/mob/proc/can_use_hands() + return + +/mob/proc/is_active() + return (0 >= usr.stat) + +/mob/proc/see(message) + if(!is_active()) + return 0 + src << message + return 1 + +/mob/proc/show_viewers(message) + for(var/mob/M in viewers()) + M.see(message) + +/mob/Stat() + ..() + + if(client && client.holder) + + if(statpanel("Status")) //not looking at that panel + stat(null,"Location:\t([x], [y], [z])") + stat(null,"CPU:\t[world.cpu]") + stat(null,"Instances:\t[world.contents.len]") + + if(master_controller) + stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])") + stat(null,"Air-[master_controller.air_cost]\t#[global_activeturfs]") + stat(null,"Sun-[master_controller.sun_cost]") + stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]") + stat(null,"Dis-[master_controller.diseases_cost]\t#[active_diseases.len]") + stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]") + stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]") + stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]") + stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]") + stat(null,"GC-[master_controller.gc_cost]\t#[garbage.destroyed.len + garbage.queue.len]-#dels[garbage.dels]") + stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]") + else + stat(null,"MasterController-ERROR") + + if(listed_turf && client) + if(!TurfAdjacent(listed_turf)) + listed_turf = null + else + statpanel(listed_turf.name, null, listed_turf) + for(var/atom/A in listed_turf) + if(A.invisibility > see_invisible) + continue + statpanel(listed_turf.name, null, A) + + + if(mind) + add_spells_to_statpanel(mind.spell_list) + if(mind.changeling) + add_stings_to_statpanel(mind.changeling.purchasedpowers) + add_spells_to_statpanel(mob_spell_list) + +/mob/proc/add_spells_to_statpanel(var/list/spells) + for(var/obj/effect/proc_holder/spell/S in spells) + if(S.can_be_cast_by(src)) + switch(S.charge_type) + if("recharge") + statpanel("[S.panel]","[S.charge_counter/10.0]/[S.charge_max/10]",S) + if("charges") + statpanel("[S.panel]","[S.charge_counter]/[S.charge_max]",S) + if("holdervar") + statpanel("[S.panel]","[S.holder_var_type] [S.holder_var_amount]",S) + +/mob/proc/add_stings_to_statpanel(var/list/stings) + for(var/obj/effect/proc_holder/changeling/S in stings) + if(S.chemical_cost >=0 && S.can_be_used_by(src)) + statpanel("[S.panel]",((S.chemical_cost > 0) ? "[S.chemical_cost]" : ""),S) + +// facing verbs +/mob/proc/canface() + if(!canmove) return 0 + if(client.moving) return 0 + if(world.time < client.move_delay) return 0 + if(stat==2) return 0 + if(anchored) return 0 + if(notransform) return 0 + if(restrained()) return 0 + return 1 + +//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. +//Robots and brains have their own version so don't worry about them +/mob/proc/update_canmove() + var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH) + var/bed = !(buckled && istype(buckled, /obj/structure/stool/bed/chair)) + if(ko || resting || stunned) + drop_r_hand() + drop_l_hand() + else + lying = 0 + canmove = 1 + if(buckled) + lying = 90 * bed + else + if((ko || resting) && !lying) + fall(ko) + anchored = buckled + canmove = !(ko || resting || stunned || buckled) + density = !lying + update_transform() + lying_prev = lying + if(update_icon) //forces a full overlay update + update_icon = 0 + regenerate_icons() + return canmove + +/mob/proc/fall(var/forced) + drop_l_hand() + drop_r_hand() + +/mob/verb/eastface() + set hidden = 1 + if(!canface()) return 0 + dir = EAST + client.move_delay += movement_delay() + return 1 + + +/mob/verb/westface() + set hidden = 1 + if(!canface()) return 0 + dir = WEST + client.move_delay += movement_delay() + return 1 + + +/mob/verb/northface() + set hidden = 1 + if(!canface()) return 0 + dir = NORTH + client.move_delay += movement_delay() + return 1 + + +/mob/verb/southface() + set hidden = 1 + if(!canface()) return 0 + dir = SOUTH + client.move_delay += movement_delay() + return 1 + + +/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check + return 0 + +/mob/proc/Jitter(amount) + jitteriness = max(jitteriness,amount,0) + +/mob/proc/Dizzy(amount) + dizziness = max(dizziness,amount,0) + +/mob/proc/Stun(amount) + if(status_flags & CANSTUN) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + update_canmove() + return + +/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN) + stunned = max(amount,0) + update_canmove() + return + +/mob/proc/AdjustStunned(amount) + if(status_flags & CANSTUN) + stunned = max(stunned + amount,0) + update_canmove() + return + +/mob/proc/Weaken(amount) + if(status_flags & CANWEAKEN) + weakened = max(max(weakened,amount),0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/SetWeakened(amount) + if(status_flags & CANWEAKEN) + weakened = max(amount,0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/AdjustWeakened(amount) + if(status_flags & CANWEAKEN) + weakened = max(weakened + amount,0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/Paralyse(amount) + if(status_flags & CANPARALYSE) + paralysis = max(max(paralysis,amount),0) + update_canmove() + return + +/mob/proc/SetParalysis(amount) + if(status_flags & CANPARALYSE) + paralysis = max(amount,0) + update_canmove() + return + +/mob/proc/AdjustParalysis(amount) + if(status_flags & CANPARALYSE) + paralysis = max(paralysis + amount,0) + update_canmove() + return + +/mob/proc/Sleeping(amount) + sleeping = max(max(sleeping,amount),0) + update_canmove() + return + +/mob/proc/SetSleeping(amount) + sleeping = max(amount,0) + update_canmove() + return + +/mob/proc/AdjustSleeping(amount) + sleeping = max(sleeping + amount,0) + update_canmove() + return + +/mob/proc/Resting(amount) + resting = max(max(resting,amount),0) + update_canmove() + return + +/mob/proc/SetResting(amount) + resting = max(amount,0) + update_canmove() + return + +/mob/proc/AdjustResting(amount) + resting = max(resting + amount,0) + update_canmove() return \ No newline at end of file diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 0b0f1e3a6bb..bceb9ce2152 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -1,513 +1,513 @@ -/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) - if (notransform) - return - //Handle items on mob - - //first implants - var/list/implants = list() - if (tr_flags & TR_KEEPIMPLANTS) - for(var/obj/item/weapon/implant/W in src) - implants += W - - if(tr_flags & TR_KEEPITEMS) - for(var/obj/item/W in (src.contents-implants)) - unEquip(W) - - //Make mob invisible and spawn animation - regenerate_icons() - notransform = 1 - canmove = 0 - stunned = 1 - icon = null - invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("h2monkey", animation) - sleep(22) - //animation = null - var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) - qdel(animation) - - - - // hash the original name? - if (tr_flags & TR_HASHNAME) - O.name = "monkey ([copytext(md5(real_name), 2, 6)])" - O.real_name = "monkey ([copytext(md5(real_name), 2, 6)])" - if (newname) //if there's a name as an argument, always take that one over the current name - O.name = newname - O.real_name = newname - - //handle DNA and other attributes - O.dna = dna - dna = null - if (!(tr_flags & TR_KEEPSE)) - O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(BAD_MUTATION_DIFFICULTY,BAD_MUTATION_DIFFICULTY)) - if(suiciding) - O.suiciding = suiciding - O.loc = loc - O.a_intent = "harm" - - //keep viruses? - if (tr_flags & TR_KEEPVIRUS) - O.viruses = viruses - viruses = list() - for(var/datum/disease/D in O.viruses) - D.affected_mob = O - - //keep damage? - if (tr_flags & TR_KEEPDAMAGE) - O.setToxLoss(getToxLoss()) - O.adjustBruteLoss(getBruteLoss()) - O.setOxyLoss(getOxyLoss()) - O.adjustFireLoss(getFireLoss()) - - //re-add implants to new mob - for(var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O - - //transfer mind and delete old mob - if(mind) - mind.transfer_to(O) - if (tr_flags & TR_DEFAULTMSG) - O << "You are now a monkey." - updateappearance(O) - . = O - if ( !(tr_flags & TR_KEEPSRC) ) //flag should be used if monkeyize() is called inside another proc of src so that one does not crash - qdel(src) - return - - - -////////////////////////// Humanize ////////////////////////////// -//Could probably be merged with monkeyize but other transformations got their own procs, too - -/mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) - if (notransform) - return - //Handle items on mob - - //first implants - var/list/implants = list() - if (tr_flags & TR_KEEPIMPLANTS) - for(var/obj/item/weapon/implant/W in src) - implants += W - - //now the rest - if (tr_flags & TR_KEEPITEMS) - for(var/obj/item/W in (src.contents-implants)) - unEquip(W) - if (client) - client.screen -= W - if (W) - W.loc = loc - W.dropped(src) - W.layer = initial(W.layer) - - // for(var/obj/item/W in src) - // unEquip(W) - - //Make mob invisible and spawn animation - regenerate_icons() - notransform = 1 - canmove = 0 - stunned = 1 - icon = null - invisibility = 101 - var/atom/movable/overlay/animation = new( loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("monkey2h", animation) - sleep(22) - var/mob/living/carbon/human/O = new( loc ) - for(var/obj/item/C in O.loc) - O.equip_to_appropriate_slot(C) - qdel(animation) - - - O.gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE - O.dna = dna - dna = null - if (newname) //if there's a name as an argument, always take that one over the current name - O.real_name = newname - else - if ( !(cmptext ("monkey",copytext(O.dna.real_name,1,7)) ) ) - O.real_name = O.dna.real_name - else - O.real_name = random_name(O.gender) - O.name = O.real_name - - if (!(tr_flags & TR_KEEPSE)) - O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(1,BAD_MUTATION_DIFFICULTY)) - - if(suiciding) - O.suiciding = suiciding - - O.loc = loc - - //keep viruses? - if (tr_flags & TR_KEEPVIRUS) - O.viruses = viruses - viruses = list() - for(var/datum/disease/D in O.viruses) - D.affected_mob = O - - //keep damage? - if (tr_flags & TR_KEEPDAMAGE) - O.setToxLoss(getToxLoss()) - O.adjustBruteLoss(getBruteLoss()) - O.setOxyLoss(getOxyLoss()) - O.adjustFireLoss(getFireLoss()) - - //re-add implants to new mob - for(var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O - - if(mind) - mind.transfer_to(O) - O.a_intent = "help" - if (tr_flags & TR_DEFAULTMSG) - O << "You are now a human." - updateappearance(O) - . = O - if ( !(tr_flags & TR_KEEPSRC) ) //don't delete src yet if it's needed to finish calling proc - qdel(src) - return - -/mob/new_player/AIize() - spawning = 1 - return ..() - -/mob/living/carbon/human/AIize() - if (notransform) - return - for(var/t in organs) - qdel(t) - - return ..() - -/mob/living/carbon/AIize() - if (notransform) - return - for(var/obj/item/W in src) - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - return ..() - -/mob/proc/AIize() - if(client) - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jams for AIs - var/mob/living/silicon/ai/O = new (loc,,,1)//No MMI but safety is in effect. - O.invisibility = 0 - O.aiRestorePowerRoutine = 0 - - if(mind) - mind.transfer_to(O) - else - O.key = key - - var/obj/loc_landmark - for(var/obj/effect/landmark/start/sloc in landmarks_list) - if (sloc.name != "AI") - continue - if (locate(/mob/living) in sloc.loc) - continue - loc_landmark = sloc - if (!loc_landmark) - for(var/obj/effect/landmark/tripai in landmarks_list) - if (tripai.name == "tripai") - if(locate(/mob/living) in tripai.loc) - continue - loc_landmark = tripai - if (!loc_landmark) - O << "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone." - for(var/obj/effect/landmark/start/sloc in landmarks_list) - if (sloc.name == "AI") - loc_landmark = sloc - - O.loc = loc_landmark.loc - for (var/obj/item/device/radio/intercom/comm in O.loc) - comm.ai += O - - O << "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras)." - O << "To look at other parts of the station, click on yourself to get a camera menu." - O << "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc." - O << "To use something, simply click on it." - O << {"Use say ":b to speak to your cyborgs through binary."} - if (!(ticker && ticker.mode && (O.mind in ticker.mode.malf_ai))) - O.show_laws() - O << "These laws may be changed by other players, or by you being the traitor." - - O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle - O.verbs += /mob/living/silicon/ai/proc/show_laws_verb - O.verbs += /mob/living/silicon/ai/proc/ai_camera_track - O.verbs += /mob/living/silicon/ai/proc/ai_alerts - O.verbs += /mob/living/silicon/ai/proc/ai_camera_list - O.verbs += /mob/living/silicon/ai/proc/ai_statuschange - O.verbs += /mob/living/silicon/ai/proc/ai_roster - - O.job = "AI" - - O.rename_self("ai",1) - . = O - qdel(src) - return - - -//human -> robot -/mob/living/carbon/human/proc/Robotize(var/delete_items = 0) - if (notransform) - return - for(var/obj/item/W in src) - if(delete_items) - qdel(W) - else - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in organs) - qdel(t) - - var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) - - if (config.rename_cyborg) - O.rename_self("cyborg", 1) - - // cyborgs produced by Robotize get an automatic power cell - O.cell = new(O) - O.cell.maxcharge = 7500 - O.cell.charge = 7500 - - - O.gender = gender - O.invisibility = 0 - - - if(mind) //TODO - mind.transfer_to(O) - if(mind.special_role) - O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite") - else - O.key = key - - O.loc = loc - O.job = "Cyborg" - - O.mmi = new /obj/item/device/mmi(O) - O.mmi.transfer_identity(src)//Does not transfer key/client. - - . = O - qdel(src) - -//human -> alien -/mob/living/carbon/human/proc/Alienize() - if (notransform) - return - for(var/obj/item/W in src) - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in organs) - qdel(t) - - var/alien_caste = pick("Hunter","Sentinel","Drone") - var/mob/living/carbon/alien/humanoid/new_xeno - switch(alien_caste) - if("Hunter") - new_xeno = new /mob/living/carbon/alien/humanoid/hunter(loc) - if("Sentinel") - new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc) - if("Drone") - new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) - - new_xeno.a_intent = "harm" - new_xeno.key = key - - new_xeno << "You are now an alien." - . = new_xeno - qdel(src) - -/mob/living/carbon/human/proc/slimeize(reproduce as num) - if (notransform) - return - for(var/obj/item/W in src) - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in organs) - qdel(t) - - var/mob/living/carbon/slime/new_slime - if(reproduce) - var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring) - var/list/babies = list() - for(var/i=1,i<=number,i++) - var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc) - M.nutrition = round(nutrition/number) - step_away(M,src) - babies += M - new_slime = pick(babies) - else - new_slime = new /mob/living/carbon/slime(loc) - new_slime.a_intent = "harm" - new_slime.key = key - - new_slime << "You are now a slime. Skreee!" - . = new_slime - qdel(src) - -/mob/living/carbon/human/proc/Blobize() - if (notransform) - return - var/obj/effect/blob/core/new_blob = new /obj/effect/blob/core (loc) - if(!client) - for(var/mob/dead/observer/G in player_list) - if(ckey == "@[G.ckey]") - new_blob.create_overmind(G.client , 1) - break - else - new_blob.create_overmind(src.client , 1) - gib(src) - - - -/mob/living/carbon/human/proc/corgize() - if (notransform) - return - for(var/obj/item/W in src) - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in organs) //this really should not be necessary - qdel(t) - - var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) - new_corgi.a_intent = "harm" - new_corgi.key = key - - new_corgi << "You are now a Corgi. Yap Yap!" - . = new_corgi - qdel(src) - -/mob/living/carbon/human/Animalize() - - var/list/mobtypes = typesof(/mob/living/simple_animal) - var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes - - if(!safe_animal(mobpath)) - usr << "\red Sorry but this mob type is currently unavailable." - return - - if(notransform) - return - for(var/obj/item/W in src) - unEquip(W) - - regenerate_icons() - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - - for(var/t in organs) - qdel(t) - - var/mob/new_mob = new mobpath(src.loc) - - new_mob.key = key - new_mob.a_intent = "harm" - - - new_mob << "You suddenly feel more... animalistic." - . = new_mob - qdel(src) - -/mob/proc/Animalize() - - var/list/mobtypes = typesof(/mob/living/simple_animal) - var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes - - if(!safe_animal(mobpath)) - usr << "\red Sorry but this mob type is currently unavailable." - return - - var/mob/new_mob = new mobpath(src.loc) - - new_mob.key = key - new_mob.a_intent = "harm" - new_mob << "You feel more... animalistic" - - . = new_mob - qdel(src) - -/* Certain mob types have problems and should not be allowed to be controlled by players. - * - * This proc is here to force coders to manually place their mob in this list, hopefully tested. - * This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them. - */ -/mob/proc/safe_animal(var/MP) - -//Bad mobs! - Remember to add a comment explaining what's wrong with the mob - if(!MP) - return 0 //Sanity, this should never happen. - -// if(ispath(MP, /mob/living/simple_animal/space_worm)) //Goodbye Space Worms 2014 -// return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning. - - if(ispath(MP, /mob/living/simple_animal/construct/behemoth)) - return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/armoured)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/wraith)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/builder)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - -//Good mobs! - if(ispath(MP, /mob/living/simple_animal/cat)) - return 1 - if(ispath(MP, /mob/living/simple_animal/corgi)) - return 1 - if(ispath(MP, /mob/living/simple_animal/crab)) - return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/carp)) - return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) - return 1 - if(ispath(MP, /mob/living/simple_animal/shade)) - return 1 - if(ispath(MP, /mob/living/simple_animal/tomato)) - return 1 - if(ispath(MP, /mob/living/simple_animal/mouse)) - return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/hostile/bear)) - return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/parrot)) - return 1 //Parrots are no longer unfinished! -Nodrak - - //Not in here? Must be untested! - return 0 +/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) + if (notransform) + return + //Handle items on mob + + //first implants + var/list/implants = list() + if (tr_flags & TR_KEEPIMPLANTS) + for(var/obj/item/weapon/implant/W in src) + implants += W + + if(tr_flags & TR_KEEPITEMS) + for(var/obj/item/W in (src.contents-implants)) + unEquip(W) + + //Make mob invisible and spawn animation + regenerate_icons() + notransform = 1 + canmove = 0 + stunned = 1 + icon = null + invisibility = 101 + var/atom/movable/overlay/animation = new /atom/movable/overlay( loc ) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = src + flick("h2monkey", animation) + sleep(22) + //animation = null + var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc ) + qdel(animation) + + + + // hash the original name? + if (tr_flags & TR_HASHNAME) + O.name = "monkey ([copytext(md5(real_name), 2, 6)])" + O.real_name = "monkey ([copytext(md5(real_name), 2, 6)])" + if (newname) //if there's a name as an argument, always take that one over the current name + O.name = newname + O.real_name = newname + + //handle DNA and other attributes + O.dna = dna + dna = null + if (!(tr_flags & TR_KEEPSE)) + O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(BAD_MUTATION_DIFFICULTY,BAD_MUTATION_DIFFICULTY)) + if(suiciding) + O.suiciding = suiciding + O.loc = loc + O.a_intent = "harm" + + //keep viruses? + if (tr_flags & TR_KEEPVIRUS) + O.viruses = viruses + viruses = list() + for(var/datum/disease/D in O.viruses) + D.affected_mob = O + + //keep damage? + if (tr_flags & TR_KEEPDAMAGE) + O.setToxLoss(getToxLoss()) + O.adjustBruteLoss(getBruteLoss()) + O.setOxyLoss(getOxyLoss()) + O.adjustFireLoss(getFireLoss()) + + //re-add implants to new mob + for(var/obj/item/weapon/implant/I in implants) + I.loc = O + I.implanted = O + + //transfer mind and delete old mob + if(mind) + mind.transfer_to(O) + if (tr_flags & TR_DEFAULTMSG) + O << "You are now a monkey." + updateappearance(O) + . = O + if ( !(tr_flags & TR_KEEPSRC) ) //flag should be used if monkeyize() is called inside another proc of src so that one does not crash + qdel(src) + return + + + +////////////////////////// Humanize ////////////////////////////// +//Could probably be merged with monkeyize but other transformations got their own procs, too + +/mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null) + if (notransform) + return + //Handle items on mob + + //first implants + var/list/implants = list() + if (tr_flags & TR_KEEPIMPLANTS) + for(var/obj/item/weapon/implant/W in src) + implants += W + + //now the rest + if (tr_flags & TR_KEEPITEMS) + for(var/obj/item/W in (src.contents-implants)) + unEquip(W) + if (client) + client.screen -= W + if (W) + W.loc = loc + W.dropped(src) + W.layer = initial(W.layer) + + // for(var/obj/item/W in src) + // unEquip(W) + + //Make mob invisible and spawn animation + regenerate_icons() + notransform = 1 + canmove = 0 + stunned = 1 + icon = null + invisibility = 101 + var/atom/movable/overlay/animation = new( loc ) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = src + flick("monkey2h", animation) + sleep(22) + var/mob/living/carbon/human/O = new( loc ) + for(var/obj/item/C in O.loc) + O.equip_to_appropriate_slot(C) + qdel(animation) + + + O.gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE + O.dna = dna + dna = null + if (newname) //if there's a name as an argument, always take that one over the current name + O.real_name = newname + else + if ( !(cmptext ("monkey",copytext(O.dna.real_name,1,7)) ) ) + O.real_name = O.dna.real_name + else + O.real_name = random_name(O.gender) + O.name = O.real_name + + if (!(tr_flags & TR_KEEPSE)) + O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(1,BAD_MUTATION_DIFFICULTY)) + + if(suiciding) + O.suiciding = suiciding + + O.loc = loc + + //keep viruses? + if (tr_flags & TR_KEEPVIRUS) + O.viruses = viruses + viruses = list() + for(var/datum/disease/D in O.viruses) + D.affected_mob = O + + //keep damage? + if (tr_flags & TR_KEEPDAMAGE) + O.setToxLoss(getToxLoss()) + O.adjustBruteLoss(getBruteLoss()) + O.setOxyLoss(getOxyLoss()) + O.adjustFireLoss(getFireLoss()) + + //re-add implants to new mob + for(var/obj/item/weapon/implant/I in implants) + I.loc = O + I.implanted = O + + if(mind) + mind.transfer_to(O) + O.a_intent = "help" + if (tr_flags & TR_DEFAULTMSG) + O << "You are now a human." + updateappearance(O) + . = O + if ( !(tr_flags & TR_KEEPSRC) ) //don't delete src yet if it's needed to finish calling proc + qdel(src) + return + +/mob/new_player/AIize() + spawning = 1 + return ..() + +/mob/living/carbon/human/AIize() + if (notransform) + return + for(var/t in organs) + qdel(t) + + return ..() + +/mob/living/carbon/AIize() + if (notransform) + return + for(var/obj/item/W in src) + unEquip(W) + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + return ..() + +/mob/proc/AIize() + if(client) + src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jams for AIs + var/mob/living/silicon/ai/O = new (loc,,,1)//No MMI but safety is in effect. + O.invisibility = 0 + O.aiRestorePowerRoutine = 0 + + if(mind) + mind.transfer_to(O) + else + O.key = key + + var/obj/loc_landmark + for(var/obj/effect/landmark/start/sloc in landmarks_list) + if (sloc.name != "AI") + continue + if (locate(/mob/living) in sloc.loc) + continue + loc_landmark = sloc + if (!loc_landmark) + for(var/obj/effect/landmark/tripai in landmarks_list) + if (tripai.name == "tripai") + if(locate(/mob/living) in tripai.loc) + continue + loc_landmark = tripai + if (!loc_landmark) + O << "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone." + for(var/obj/effect/landmark/start/sloc in landmarks_list) + if (sloc.name == "AI") + loc_landmark = sloc + + O.loc = loc_landmark.loc + for (var/obj/item/device/radio/intercom/comm in O.loc) + comm.ai += O + + O << "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras)." + O << "To look at other parts of the station, click on yourself to get a camera menu." + O << "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc." + O << "To use something, simply click on it." + O << {"Use say ":b to speak to your cyborgs through binary."} + if (!(ticker && ticker.mode && (O.mind in ticker.mode.malf_ai))) + O.show_laws() + O << "These laws may be changed by other players, or by you being the traitor." + + O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle + O.verbs += /mob/living/silicon/ai/proc/show_laws_verb + O.verbs += /mob/living/silicon/ai/proc/ai_camera_track + O.verbs += /mob/living/silicon/ai/proc/ai_alerts + O.verbs += /mob/living/silicon/ai/proc/ai_camera_list + O.verbs += /mob/living/silicon/ai/proc/ai_statuschange + O.verbs += /mob/living/silicon/ai/proc/ai_roster + + O.job = "AI" + + O.rename_self("ai",1) + . = O + qdel(src) + return + + +//human -> robot +/mob/living/carbon/human/proc/Robotize(var/delete_items = 0) + if (notransform) + return + for(var/obj/item/W in src) + if(delete_items) + qdel(W) + else + unEquip(W) + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + for(var/t in organs) + qdel(t) + + var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) + + if (config.rename_cyborg) + O.rename_self("cyborg", 1) + + // cyborgs produced by Robotize get an automatic power cell + O.cell = new(O) + O.cell.maxcharge = 7500 + O.cell.charge = 7500 + + + O.gender = gender + O.invisibility = 0 + + + if(mind) //TODO + mind.transfer_to(O) + if(mind.special_role) + O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite") + else + O.key = key + + O.loc = loc + O.job = "Cyborg" + + O.mmi = new /obj/item/device/mmi(O) + O.mmi.transfer_identity(src)//Does not transfer key/client. + + . = O + qdel(src) + +//human -> alien +/mob/living/carbon/human/proc/Alienize() + if (notransform) + return + for(var/obj/item/W in src) + unEquip(W) + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + for(var/t in organs) + qdel(t) + + var/alien_caste = pick("Hunter","Sentinel","Drone") + var/mob/living/carbon/alien/humanoid/new_xeno + switch(alien_caste) + if("Hunter") + new_xeno = new /mob/living/carbon/alien/humanoid/hunter(loc) + if("Sentinel") + new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc) + if("Drone") + new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) + + new_xeno.a_intent = "harm" + new_xeno.key = key + + new_xeno << "You are now an alien." + . = new_xeno + qdel(src) + +/mob/living/carbon/human/proc/slimeize(reproduce as num) + if (notransform) + return + for(var/obj/item/W in src) + unEquip(W) + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + for(var/t in organs) + qdel(t) + + var/mob/living/carbon/slime/new_slime + if(reproduce) + var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring) + var/list/babies = list() + for(var/i=1,i<=number,i++) + var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc) + M.nutrition = round(nutrition/number) + step_away(M,src) + babies += M + new_slime = pick(babies) + else + new_slime = new /mob/living/carbon/slime(loc) + new_slime.a_intent = "harm" + new_slime.key = key + + new_slime << "You are now a slime. Skreee!" + . = new_slime + qdel(src) + +/mob/living/carbon/human/proc/Blobize() + if (notransform) + return + var/obj/effect/blob/core/new_blob = new /obj/effect/blob/core (loc) + if(!client) + for(var/mob/dead/observer/G in player_list) + if(ckey == "@[G.ckey]") + new_blob.create_overmind(G.client , 1) + break + else + new_blob.create_overmind(src.client , 1) + gib(src) + + + +/mob/living/carbon/human/proc/corgize() + if (notransform) + return + for(var/obj/item/W in src) + unEquip(W) + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + for(var/t in organs) //this really should not be necessary + qdel(t) + + var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) + new_corgi.a_intent = "harm" + new_corgi.key = key + + new_corgi << "You are now a Corgi. Yap Yap!" + . = new_corgi + qdel(src) + +/mob/living/carbon/human/Animalize() + + var/list/mobtypes = typesof(/mob/living/simple_animal) + var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes + + if(!safe_animal(mobpath)) + usr << "\red Sorry but this mob type is currently unavailable." + return + + if(notransform) + return + for(var/obj/item/W in src) + unEquip(W) + + regenerate_icons() + notransform = 1 + canmove = 0 + icon = null + invisibility = 101 + + for(var/t in organs) + qdel(t) + + var/mob/new_mob = new mobpath(src.loc) + + new_mob.key = key + new_mob.a_intent = "harm" + + + new_mob << "You suddenly feel more... animalistic." + . = new_mob + qdel(src) + +/mob/proc/Animalize() + + var/list/mobtypes = typesof(/mob/living/simple_animal) + var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes + + if(!safe_animal(mobpath)) + usr << "\red Sorry but this mob type is currently unavailable." + return + + var/mob/new_mob = new mobpath(src.loc) + + new_mob.key = key + new_mob.a_intent = "harm" + new_mob << "You feel more... animalistic" + + . = new_mob + qdel(src) + +/* Certain mob types have problems and should not be allowed to be controlled by players. + * + * This proc is here to force coders to manually place their mob in this list, hopefully tested. + * This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them. + */ +/mob/proc/safe_animal(var/MP) + +//Bad mobs! - Remember to add a comment explaining what's wrong with the mob + if(!MP) + return 0 //Sanity, this should never happen. + +// if(ispath(MP, /mob/living/simple_animal/space_worm)) //Goodbye Space Worms 2014 +// return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning. + + if(ispath(MP, /mob/living/simple_animal/construct/behemoth)) + return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype + + if(ispath(MP, /mob/living/simple_animal/construct/armoured)) + return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype + + if(ispath(MP, /mob/living/simple_animal/construct/wraith)) + return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype + + if(ispath(MP, /mob/living/simple_animal/construct/builder)) + return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype + +//Good mobs! + if(ispath(MP, /mob/living/simple_animal/cat)) + return 1 + if(ispath(MP, /mob/living/simple_animal/corgi)) + return 1 + if(ispath(MP, /mob/living/simple_animal/crab)) + return 1 + if(ispath(MP, /mob/living/simple_animal/hostile/carp)) + return 1 + if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) + return 1 + if(ispath(MP, /mob/living/simple_animal/shade)) + return 1 + if(ispath(MP, /mob/living/simple_animal/tomato)) + return 1 + if(ispath(MP, /mob/living/simple_animal/mouse)) + return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak) + if(ispath(MP, /mob/living/simple_animal/hostile/bear)) + return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak) + if(ispath(MP, /mob/living/simple_animal/parrot)) + return 1 //Parrots are no longer unfinished! -Nodrak + + //Not in here? Must be untested! + return 0 diff --git a/code/modules/nano/JSON Reader.dm b/code/modules/nano/JSON Reader.dm index 12edf1dd5c0..638ff937a3f 100644 --- a/code/modules/nano/JSON Reader.dm +++ b/code/modules/nano/JSON Reader.dm @@ -1,205 +1,205 @@ -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 <= lentext(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 <= lentext(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 <= lentext(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() +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 <= lentext(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 <= lentext(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 <= lentext(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].") \ No newline at end of file diff --git a/code/modules/nano/JSON Writer.dm b/code/modules/nano/JSON Writer.dm index 3cd3520f177..4398e5b8970 100644 --- a/code/modules/nano/JSON Writer.dm +++ b/code/modules/nano/JSON Writer.dm @@ -1,59 +1,59 @@ - -json_writer - proc - WriteObject(list/L) - . = "{" - 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, 100) - 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") - for(var/targ in json_escape) - var/start = 1 - while(start <= lentext(txt)) - var/i = findtext(txt, targ, start) - if(!i) - break - if(targ == "\n") - txt = copytext(txt, 1, i) + "\\n" + copytext(txt, i+2) - start = i + 1 // 1 character added - if(targ == "'") - txt = copytext(txt, 1, i) + "`" + copytext(txt, i+1) // apostrophies fuck shit up... - start = i + 1 // 1 character added - else - txt = copytext(txt, 1, i) + "\\" + copytext(txt, i) - start = i + 2 // 2 characters added - - 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) && !istype(key, /list)) - return TRUE + +json_writer + proc + WriteObject(list/L) + . = "{" + 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, 100) + 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") + for(var/targ in json_escape) + var/start = 1 + while(start <= lentext(txt)) + var/i = findtext(txt, targ, start) + if(!i) + break + if(targ == "\n") + txt = copytext(txt, 1, i) + "\\n" + copytext(txt, i+2) + start = i + 1 // 1 character added + if(targ == "'") + txt = copytext(txt, 1, i) + "`" + copytext(txt, i+1) // apostrophies fuck shit up... + start = i + 1 // 1 character added + else + txt = copytext(txt, 1, i) + "\\" + copytext(txt, i) + start = i + 2 // 2 characters added + + 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) && !istype(key, /list)) + return TRUE diff --git a/code/modules/nano/_JSON.dm b/code/modules/nano/_JSON.dm index 5692e643baa..ee8b9bdf499 100644 --- a/code/modules/nano/_JSON.dm +++ b/code/modules/nano/_JSON.dm @@ -1,12 +1,12 @@ -/* -n_Json v11.3.21 -*/ - -proc - json2list(json) - var/static/json_reader/_jsonr = new() - return _jsonr.ReadObject(_jsonr.ScanJson(json)) - - list2json(list/L) - var/static/json_writer/_jsonw = new() - return _jsonw.WriteObject(L) +/* +n_Json v11.3.21 +*/ + +proc + json2list(json) + var/static/json_reader/_jsonr = new() + return _jsonr.ReadObject(_jsonr.ScanJson(json)) + + list2json(list/L) + var/static/json_writer/_jsonw = new() + return _jsonw.WriteObject(L) diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm index 2331debd9be..a6b2485f665 100644 --- a/code/modules/nano/nanoexternal.dm +++ b/code/modules/nano/nanoexternal.dm @@ -1,43 +1,43 @@ - // This file contains all Nano procs/definitions for external classes/objects - - /** - * Called when a Nano UI window is closed - * This is how Nano handles closed windows - * It must be a verb so that it can be called using winset - * - * @return nothing - */ -/client/verb/nanoclose(var/uiref as text) - set hidden = 1 // hide this verb from the user's panel - set name = "nanoclose" - - var/datum/nanoui/ui = locate(uiref) - - if (istype(ui)) - ui.close() - - if(ui.ref) - var/href = "close=1" - src.Topic(href, params2list(href), ui.ref) // this will direct to the atom's Topic() proc via client.Topic() - else if (ui.on_close_logic) - // no atomref specified (or not found) - // so just reset the user mob's machine var - if(src && src.mob) - src.mob.unset_machine() - - /** - * The ui_interact proc is used to open and update Nano UIs - * If ui_interact is not used then the UI will not update correctly - * ui_interact is currently defined for /atom/movable - * - * @param user /mob The mob who is interacting with this ui - * @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") - * @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui - * - * @return nothing - */ -/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) - return - -// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob -/mob/var/list/open_uis = list() + // This file contains all Nano procs/definitions for external classes/objects + + /** + * Called when a Nano UI window is closed + * This is how Nano handles closed windows + * It must be a verb so that it can be called using winset + * + * @return nothing + */ +/client/verb/nanoclose(var/uiref as text) + set hidden = 1 // hide this verb from the user's panel + set name = "nanoclose" + + var/datum/nanoui/ui = locate(uiref) + + if (istype(ui)) + ui.close() + + if(ui.ref) + var/href = "close=1" + src.Topic(href, params2list(href), ui.ref) // this will direct to the atom's Topic() proc via client.Topic() + else if (ui.on_close_logic) + // no atomref specified (or not found) + // so just reset the user mob's machine var + if(src && src.mob) + src.mob.unset_machine() + + /** + * The ui_interact proc is used to open and update Nano UIs + * If ui_interact is not used then the UI will not update correctly + * ui_interact is currently defined for /atom/movable + * + * @param user /mob The mob who is interacting with this ui + * @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") + * @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui + * + * @return nothing + */ +/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + return + +// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob +/mob/var/list/open_uis = list() diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm index b7b45060bb7..9b8be6ce99e 100644 --- a/code/modules/nano/nanomanager.dm +++ b/code/modules/nano/nanomanager.dm @@ -1,200 +1,200 @@ -// This is the window/UI manager for Nano UI -// There should only ever be one (global) instance of nanomanger -/datum/nanomanager - // a list of current open /nanoui UIs, grouped by src_object and ui_key - var/open_uis[0] - // a list of current open /nanoui UIs, not grouped, for use in processing - var/list/processing_uis = list() - - /** - * Create a new nanomanager instance. - * - * @return /nanomanager new nanomanager object - */ -/datum/nanomanager/New() - return - - /** - * Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data - * - * @param user /mob The mob who opened/owns the ui - * @param src_object /obj|/mob The obj or mob which the ui belongs to - * @param ui_key string A string key used for the ui - * @param ui /datum/nanoui An existing instance of the ui (can be null) - * @param data list The data to be passed to the ui, if it exists - * - * @return /nanoui Returns the found ui, for null if none exists - */ -/datum/nanomanager/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data) - if (isnull(ui)) // no ui has been passed, so we'll search for one - { - ui = get_open_ui(user, src_object, ui_key) - } - if (!isnull(ui)) - // The UI is already open so push the data to it - ui.push_data(data) - return ui - - return null - - /** - * Get an open /nanoui ui for the current user, src_object and ui_key - * - * @param user /mob The mob who opened/owns the ui - * @param src_object /obj|/mob The obj or mob which the ui belongs to - * @param ui_key string A string key used for the ui - * - * @return /nanoui Returns the found ui, or null if none exists - */ -/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key) - var/src_object_key = "\ref[src_object]" - if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) - return null - else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) - return null - - for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) - if (ui.user == user) - return ui - - return null - - /** - * Update all /nanoui uis attached to src_object - * - * @param src_object /obj|/mob The obj or mob which the uis are attached to - * - * @return int The number of uis updated - */ -/datum/nanomanager/proc/update_uis(src_object) - var/src_object_key = "\ref[src_object]" - if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) - return 0 - - var/update_count = 0 - for (var/ui_key in open_uis[src_object_key]) - for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) - if(ui && ui.src_object && ui.user) - ui.process(1) - update_count++ - return update_count - - /** - * Update /nanoui uis belonging to user - * - * @param user /mob The mob who owns the uis - * @param src_object /obj|/mob If src_object is provided, only update uis which are attached to src_object (optional) - * @param ui_key string If ui_key is provided, only update uis with a matching ui_key (optional) - * - * @return int The number of uis updated - */ -/datum/nanomanager/proc/update_user_uis(var/mob/user, src_object = null, ui_key = null) - if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) - return 0 // has no open uis - - var/update_count = 0 - for (var/datum/nanoui/ui in user.open_uis) - if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) - ui.process(1) - update_count++ - - return update_count - - /** - * Close /nanoui uis belonging to user - * - * @param user /mob The mob who owns the uis - * @param src_object /obj|/mob If src_object is provided, only close uis which are attached to src_object (optional) - * @param ui_key string If ui_key is provided, only close uis with a matching ui_key (optional) - * - * @return int The number of uis closed - */ -/datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null) - if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) - return 0 // has no open uis - - var/close_count = 0 - for (var/datum/nanoui/ui in user.open_uis) - if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) - ui.close() - close_count++ - - return close_count - - /** - * Add a /nanoui ui to the list of open uis - * This is called by the /nanoui open() proc - * - * @param ui /nanoui The ui to add - * - * @return nothing - */ -/datum/nanomanager/proc/ui_opened(var/datum/nanoui/ui) - var/src_object_key = "\ref[ui.src_object]" - if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) - open_uis[src_object_key] = list(ui.ui_key = list()) - else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) - open_uis[src_object_key][ui.ui_key] = list(); - - ui.user.open_uis.Add(ui) - var/list/uis = open_uis[src_object_key][ui.ui_key] - uis.Add(ui) - processing_uis.Add(ui) - - /** - * Remove a /nanoui ui from the list of open uis - * This is called by the /nanoui close() proc - * - * @param ui /nanoui The ui to remove - * - * @return int 0 if no ui was removed, 1 if removed successfully - */ -/datum/nanomanager/proc/ui_closed(var/datum/nanoui/ui) - var/src_object_key = "\ref[ui.src_object]" - if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) - return 0 // wasn't open - else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) - return 0 // wasn't open - - processing_uis.Remove(ui) - ui.user.open_uis.Remove(ui) - var/list/uis = open_uis[src_object_key][ui.ui_key] - return uis.Remove(ui) - - /** - * This is called on user logout - * Closes/clears all uis attached to the user's /mob - * - * @param user /mob The user's mob - * - * @return nothing - */ - -// -/datum/nanomanager/proc/user_logout(var/mob/user) - return close_user_uis(user) - - /** - * This is called when a player transfers from one mob to another - * Transfers all open UIs to the new mob - * - * @param oldMob /mob The user's old mob - * @param newMob /mob The user's new mob - * - * @return nothing - */ -/datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob) - if (isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0) - return 0 // has no open uis - - if (isnull(newMob.open_uis) || !istype(newMob.open_uis, /list)) - newMob.open_uis = list() - - for (var/datum/nanoui/ui in oldMob.open_uis) - ui.user = newMob - newMob.open_uis.Add(ui) - - oldMob.open_uis.Cut() - - return 1 // success - +// This is the window/UI manager for Nano UI +// There should only ever be one (global) instance of nanomanger +/datum/nanomanager + // a list of current open /nanoui UIs, grouped by src_object and ui_key + var/open_uis[0] + // a list of current open /nanoui UIs, not grouped, for use in processing + var/list/processing_uis = list() + + /** + * Create a new nanomanager instance. + * + * @return /nanomanager new nanomanager object + */ +/datum/nanomanager/New() + return + + /** + * Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data + * + * @param user /mob The mob who opened/owns the ui + * @param src_object /obj|/mob The obj or mob which the ui belongs to + * @param ui_key string A string key used for the ui + * @param ui /datum/nanoui An existing instance of the ui (can be null) + * @param data list The data to be passed to the ui, if it exists + * + * @return /nanoui Returns the found ui, for null if none exists + */ +/datum/nanomanager/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data) + if (isnull(ui)) // no ui has been passed, so we'll search for one + { + ui = get_open_ui(user, src_object, ui_key) + } + if (!isnull(ui)) + // The UI is already open so push the data to it + ui.push_data(data) + return ui + + return null + + /** + * Get an open /nanoui ui for the current user, src_object and ui_key + * + * @param user /mob The mob who opened/owns the ui + * @param src_object /obj|/mob The obj or mob which the ui belongs to + * @param ui_key string A string key used for the ui + * + * @return /nanoui Returns the found ui, or null if none exists + */ +/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key) + var/src_object_key = "\ref[src_object]" + if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) + return null + else if (isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) + return null + + for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) + if (ui.user == user) + return ui + + return null + + /** + * Update all /nanoui uis attached to src_object + * + * @param src_object /obj|/mob The obj or mob which the uis are attached to + * + * @return int The number of uis updated + */ +/datum/nanomanager/proc/update_uis(src_object) + var/src_object_key = "\ref[src_object]" + if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) + return 0 + + var/update_count = 0 + for (var/ui_key in open_uis[src_object_key]) + for (var/datum/nanoui/ui in open_uis[src_object_key][ui_key]) + if(ui && ui.src_object && ui.user) + ui.process(1) + update_count++ + return update_count + + /** + * Update /nanoui uis belonging to user + * + * @param user /mob The mob who owns the uis + * @param src_object /obj|/mob If src_object is provided, only update uis which are attached to src_object (optional) + * @param ui_key string If ui_key is provided, only update uis with a matching ui_key (optional) + * + * @return int The number of uis updated + */ +/datum/nanomanager/proc/update_user_uis(var/mob/user, src_object = null, ui_key = null) + if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) + return 0 // has no open uis + + var/update_count = 0 + for (var/datum/nanoui/ui in user.open_uis) + if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) + ui.process(1) + update_count++ + + return update_count + + /** + * Close /nanoui uis belonging to user + * + * @param user /mob The mob who owns the uis + * @param src_object /obj|/mob If src_object is provided, only close uis which are attached to src_object (optional) + * @param ui_key string If ui_key is provided, only close uis with a matching ui_key (optional) + * + * @return int The number of uis closed + */ +/datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null) + if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) + return 0 // has no open uis + + var/close_count = 0 + for (var/datum/nanoui/ui in user.open_uis) + if ((isnull(src_object) || !isnull(src_object) && ui.src_object == src_object) && (isnull(ui_key) || !isnull(ui_key) && ui.ui_key == ui_key)) + ui.close() + close_count++ + + return close_count + + /** + * Add a /nanoui ui to the list of open uis + * This is called by the /nanoui open() proc + * + * @param ui /nanoui The ui to add + * + * @return nothing + */ +/datum/nanomanager/proc/ui_opened(var/datum/nanoui/ui) + var/src_object_key = "\ref[ui.src_object]" + if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) + open_uis[src_object_key] = list(ui.ui_key = list()) + else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) + open_uis[src_object_key][ui.ui_key] = list(); + + ui.user.open_uis.Add(ui) + var/list/uis = open_uis[src_object_key][ui.ui_key] + uis.Add(ui) + processing_uis.Add(ui) + + /** + * Remove a /nanoui ui from the list of open uis + * This is called by the /nanoui close() proc + * + * @param ui /nanoui The ui to remove + * + * @return int 0 if no ui was removed, 1 if removed successfully + */ +/datum/nanomanager/proc/ui_closed(var/datum/nanoui/ui) + var/src_object_key = "\ref[ui.src_object]" + if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) + return 0 // wasn't open + else if (isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) + return 0 // wasn't open + + processing_uis.Remove(ui) + ui.user.open_uis.Remove(ui) + var/list/uis = open_uis[src_object_key][ui.ui_key] + return uis.Remove(ui) + + /** + * This is called on user logout + * Closes/clears all uis attached to the user's /mob + * + * @param user /mob The user's mob + * + * @return nothing + */ + +// +/datum/nanomanager/proc/user_logout(var/mob/user) + return close_user_uis(user) + + /** + * This is called when a player transfers from one mob to another + * Transfers all open UIs to the new mob + * + * @param oldMob /mob The user's old mob + * @param newMob /mob The user's new mob + * + * @return nothing + */ +/datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob) + if (isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0) + return 0 // has no open uis + + if (isnull(newMob.open_uis) || !istype(newMob.open_uis, /list)) + newMob.open_uis = list() + + for (var/datum/nanoui/ui in oldMob.open_uis) + ui.user = newMob + newMob.open_uis.Add(ui) + + oldMob.open_uis.Cut() + + return 1 // success + diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 7b684aefb25..496f79b55ba 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -1,414 +1,414 @@ -/********************************************************** -NANO UI FRAMEWORK - -nanoui class (or whatever Byond calls classes) - -nanoui is used to open and update nano browser uis -**********************************************************/ - - -#define STATUS_INTERACTIVE 2 // GREEN Visability -#define STATUS_UPDATE 1 // ORANGE Visability -#define STATUS_DISABLED 0 // RED Visability - -/datum/nanoui - // the user who opened this ui - var/mob/user - // the object this ui "belongs" to - var/atom/movable/src_object - // the title of this ui - var/title - // the key of this ui, this is to allow multiple (different) uis for each src_object - var/ui_key - // window_id is used as the window name/identifier for browse and onclose - var/window_id - // the browser window width - var/width = 0 - // the browser window height - var/height = 0 - // whether to use extra logic when window closes - var/on_close_logic = 1 - // an extra ref to use when the window is closed, usually null - var/atom/ref = null - // options for modifying window behaviour - var/window_options = "focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id - // the list of stylesheets to apply to this ui - var/list/stylesheets = list() - // the list of javascript scripts to use for this ui - var/list/scripts = list() - // the list of templates to use with this ui (usually just one) - var/templates[0] - // the body content for this ui, do not change unless you know what you're doing - // the #mainTemplate div will contain the compiled "main" template html - var/content = "
    " - // initial data, containing the full data structure, must be sent to the ui (the data structure cannot be extended later on) - var/list/initial_data[0] - // set to 1 to update the ui automatically every master_controller tick - var/is_auto_updating = 0 - // the current status/visibility of the ui - var/status = STATUS_INTERACTIVE - - // Only allow users with a certain user.stat to get updates. Defaults to 0 (concious) - var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconcious or alive, 2 = dead concious or alive - - /** - * Create a new nanoui instance. - * - * @param nuser /mob The mob who has opened/owns this ui - * @param nsrc_object /obj|/mob The obj or mob which this ui belongs to - * @param nui_key string A string key to use for this ui. Allows for multiple unique uis on one src_oject - * @param ntemplate string The name of the template file from /nano/templates (e.g. "my_template.tmpl") - * @param ntitle string The title of this ui - * @param nwidth int the width of the ui window - * @param nheight int the height of the ui window - * @param nref /atom A custom ref to use if "on_close_logic" is set to 1 - * - * @return /nanoui new nanoui object - */ -/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null) - user = nuser - src_object = nsrc_object - ui_key = nui_key - window_id = "[ui_key]\ref[src_object]" - - // Add the passed template as the 'main' template, this is required - add_template("main", ntemplate) - - if (ntitle) - title = ntitle - if (nwidth) - width = nwidth - if (nheight) - height = nheight - if (nref) - ref = nref - - add_common_assets() - - /** - * Use this proc to add assets which are common to all nano uis - * - * @return nothing - */ -/datum/nanoui/proc/add_common_assets() - add_script("libraries.min.js") // The jQuery library - add_script("nano_config.js") // The NanoConfig JS, this is used to store configuration values. - add_script("nano_update.js") // The NanoUpdate JS, this is used to receive updates and apply them. - add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all templates - add_stylesheet("shared.css") // this CSS sheet is common to all UIs - add_stylesheet("icons.css") // this CSS sheet is common to all UIs - - /** - * Set the current status (also known as visibility) of this ui. - * - * @param state int The status to set, see the defines at the top of this file - * @param push_update int (bool) Push an update to the ui to update it's status (an update is always sent if the status has changed to red (0)) - * - * @return nothing - */ -/datum/nanoui/proc/set_status(state, push_update) - if (state != status) - status = state - if (push_update || !status) - push_data(list(), 1) // Update the UI, force the update in case the status is 0 - else - status = state - - /** - * Update the status (visibility) of this ui based on the user's status - * - * @param push_update int (bool) Push an update to the ui to update it's status. This is set to 0/false if an update is going to be pushed anyway (to avoid unnessary updates) - * - * @return nothing - */ -/datum/nanoui/proc/update_status(push_update = 0) - if (istype(user, /mob/living/silicon/ai)) - set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) - else if (istype(user, /mob/living/silicon/robot)) - if (src_object in view(7, user)) // robots can see and interact with things they can see within 7 tiles - set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) - else - set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) - else - var/dist = get_dist(src_object, user) - - if (dist > 4) - close() - return - - if ((allowed_user_stat > -1) && (user.stat > allowed_user_stat)) - set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) - else if (user.restrained() || user.lying) - set_status(STATUS_UPDATE, push_update) // update only (orange visibility) - else if (!(src_object in view(4, user))) // If the src object is not in visable, set status to 0 - set_status(STATUS_DISABLED, push_update) // interactive (green visibility) - else if (dist <= 1) - set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) - else if (dist <= 2) - set_status(STATUS_UPDATE, push_update) // update only (orange visibility) - else if (dist <= 4) - set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) - - /** - * Set the ui to auto update (every master_controller tick) - * - * @param state int (bool) Set auto update to 1 or 0 (true/false) - * - * @return nothing - */ -/datum/nanoui/proc/set_auto_update(state = 1) - is_auto_updating = state - - /** - * Set the initial data for the ui. This is vital as the data structure set here cannot be changed when pushing new updates. - * - * @param data /list The list of data for this ui - * - * @return nothing - */ -/datum/nanoui/proc/set_initial_data(list/data) - initial_data = add_default_data(data) - - /** - * Add default data to the data being sent to the ui. - * - * @param data /list The list of data to be modified - * - * @return /list modified data - */ -/datum/nanoui/proc/add_default_data(list/data) - data["ui"] = list( - "status" = status, - "user" = list("name" = user.name) - ) - return data - - /** - * Set the browser window options for this ui - * - * @param nwindow_options string The new window options - * - * @return nothing - */ -/datum/nanoui/proc/set_window_options(nwindow_options) - window_options = nwindow_options - - /** - * Add a CSS stylesheet to this UI - * - * @param file string The name of the CSS file from /nano/css (e.g. "my_style.css") - * - * @return nothing - */ -/datum/nanoui/proc/add_stylesheet(file) - stylesheets.Add(file) - - /** - * Add a JavsScript script to this UI - * - * @param file string The name of the JavaScript file from /nano/js (e.g. "my_script.js") - * - * @return nothing - */ -/datum/nanoui/proc/add_script(file) - scripts.Add(file) - - /** - * Add a template to this UI - * Templates are combined with the data sent to the UI to create the rendered view - * Each template needs a div in ui.content to contain the rendered content. - * The div format is '
    ' where is replaced with the templater's key. - * All UIs are set up by default to use a 'main' template, so only use this proc if you want to add advanced functionality. - * - * @param key string The key name for this template, used to identify the div to render this template into ('
    ') - * @param file string The name of the template file from /nano/templates (e.g. "my_template.tmpl") - * - * @return nothing - */ -/datum/nanoui/proc/add_template(key, file) - templates[key] = file - - /** - * Set the HTML content of the UI - * This should only really be used to add more template divs (see the add_template() proc) - * - * @param ncontent string The new HTML content for this UI - * - * @return nothing - */ -/datum/nanoui/proc/set_content(ncontent) - content = ncontent - - /** - * Set whether or not to use the "old" on close logic (mainly unset_machine()) - * - * @param state int (bool) Set on_close_logic to 1 or 0 (true/false) - * - * @return nothing - */ -/datum/nanoui/proc/use_on_close_logic(state) - on_close_logic = state - - /** - * Return the HTML header content for this UI - * - * @return string HTML header content - */ -/datum/nanoui/proc/get_header() - var/head_content = "" - - for (var/filename in scripts) - head_content += " " - - for (var/filename in stylesheets) - head_content += " " - - var/templatel_data[0] - for (var/key in templates) - templatel_data[key] = templates[key]; - - var/template_data_json = "{}" // An empty JSON object - if (templatel_data.len > 0) - template_data_json = list2json(templatel_data) - - var/initial_data_json = "{}" // An empty JSON object - if (initial_data.len > 0) - initial_data_json = list2json(initial_data) - - var/url_parameters_json = list2json(list("src" = "\ref[src]")) - - return {" - - - - - [head_content] - - -
    - [title ? "
    [title]
    " : ""] -
    -
    Initiating...
    - "} - - /** - * Return the HTML footer content for this UI - * - * @return string HTML footer content - */ -/datum/nanoui/proc/get_footer() - - return {" -
    -
    - -"} - - /** - * Return the HTML for this UI - * - * @return string HTML for the UI - */ -/datum/nanoui/proc/get_html() - return {" - [get_header()] - [content] - [get_footer()] - "} - - /** - * Open this UI - * - * @return nothing - */ -/datum/nanoui/proc/open() - var/window_size = "" - if (width && height) - window_size = "size=[width]x[height];" - update_status(0) - user << browse(get_html(), "window=[window_id];[window_size][window_options]") - winset(user, "mapwindow.map", "focus=true") // return keyboard focus to map - on_close_winset() - //onclose(user, window_id) - nanomanager.ui_opened(src) - - /** - * Close this UI - * - * @return nothing - */ -/datum/nanoui/proc/close() - is_auto_updating = 0 - nanomanager.ui_closed(src) - user << browse(null, "window=[window_id]") - - /** - * Set the UI window to call the nanoclose verb when the window is closed - * This allows Nano to handle closed windows - * - * @return nothing - */ -/datum/nanoui/proc/on_close_winset() - if(!user.client) - return - var/params = "\ref[src]" - - winset(user, window_id, "on-close=\"nanoclose [params]\"") - - /** - * Push data to an already open UI window - * - * @return nothing - */ -/datum/nanoui/proc/push_data(data, force_push = 0) - update_status(0) - if (status == STATUS_DISABLED && !force_push) - return // Cannot update UI, no visibility - - data = add_default_data(data) - //user << list2json(data) // used for debugging - user << output(list2params(list(list2json(data))),"[window_id].browser:receiveUpdateData") - - /** - * This Topic() proc is called whenever a user clicks on a link within a Nano UI - * If the UI status is currently STATUS_INTERACTIVE then call the src_object Topic() - * If the src_object Topic() returns 1 (true) then update all UIs attached to src_object - * - * @return nothing - */ -/datum/nanoui/Topic(href, href_list) - update_status(0) // update the status - if (status != STATUS_INTERACTIVE || user != usr) // If UI is not interactive or usr calling Topic is not the UI user - return - - if (src_object && src_object.Topic(href, href_list)) - nanomanager.update_uis(src_object) // update all UIs attached to src_object - - /** - * Process this UI, updating the entire UI or just the status (aka visibility) - * This process proc is called by the master_controller - * - * @param update string For this UI to update - * - * @return nothing - */ -/datum/nanoui/proc/process(update = 0) - if (!src_object || !user) - close() - return - - if (status && (update || is_auto_updating)) - src_object.ui_interact(user, ui_key, src) // Update the UI (update_status() is called whenever a UI is updated) - else - update_status(1) // Not updating UI, so lets check here if status has changed - +/********************************************************** +NANO UI FRAMEWORK + +nanoui class (or whatever Byond calls classes) + +nanoui is used to open and update nano browser uis +**********************************************************/ + + +#define STATUS_INTERACTIVE 2 // GREEN Visability +#define STATUS_UPDATE 1 // ORANGE Visability +#define STATUS_DISABLED 0 // RED Visability + +/datum/nanoui + // the user who opened this ui + var/mob/user + // the object this ui "belongs" to + var/atom/movable/src_object + // the title of this ui + var/title + // the key of this ui, this is to allow multiple (different) uis for each src_object + var/ui_key + // window_id is used as the window name/identifier for browse and onclose + var/window_id + // the browser window width + var/width = 0 + // the browser window height + var/height = 0 + // whether to use extra logic when window closes + var/on_close_logic = 1 + // an extra ref to use when the window is closed, usually null + var/atom/ref = null + // options for modifying window behaviour + var/window_options = "focus=0;can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id + // the list of stylesheets to apply to this ui + var/list/stylesheets = list() + // the list of javascript scripts to use for this ui + var/list/scripts = list() + // the list of templates to use with this ui (usually just one) + var/templates[0] + // the body content for this ui, do not change unless you know what you're doing + // the #mainTemplate div will contain the compiled "main" template html + var/content = "
    " + // initial data, containing the full data structure, must be sent to the ui (the data structure cannot be extended later on) + var/list/initial_data[0] + // set to 1 to update the ui automatically every master_controller tick + var/is_auto_updating = 0 + // the current status/visibility of the ui + var/status = STATUS_INTERACTIVE + + // Only allow users with a certain user.stat to get updates. Defaults to 0 (concious) + var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconcious or alive, 2 = dead concious or alive + + /** + * Create a new nanoui instance. + * + * @param nuser /mob The mob who has opened/owns this ui + * @param nsrc_object /obj|/mob The obj or mob which this ui belongs to + * @param nui_key string A string key to use for this ui. Allows for multiple unique uis on one src_oject + * @param ntemplate string The name of the template file from /nano/templates (e.g. "my_template.tmpl") + * @param ntitle string The title of this ui + * @param nwidth int the width of the ui window + * @param nheight int the height of the ui window + * @param nref /atom A custom ref to use if "on_close_logic" is set to 1 + * + * @return /nanoui new nanoui object + */ +/datum/nanoui/New(nuser, nsrc_object, nui_key, ntemplate, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null) + user = nuser + src_object = nsrc_object + ui_key = nui_key + window_id = "[ui_key]\ref[src_object]" + + // Add the passed template as the 'main' template, this is required + add_template("main", ntemplate) + + if (ntitle) + title = ntitle + if (nwidth) + width = nwidth + if (nheight) + height = nheight + if (nref) + ref = nref + + add_common_assets() + + /** + * Use this proc to add assets which are common to all nano uis + * + * @return nothing + */ +/datum/nanoui/proc/add_common_assets() + add_script("libraries.min.js") // The jQuery library + add_script("nano_config.js") // The NanoConfig JS, this is used to store configuration values. + add_script("nano_update.js") // The NanoUpdate JS, this is used to receive updates and apply them. + add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all templates + add_stylesheet("shared.css") // this CSS sheet is common to all UIs + add_stylesheet("icons.css") // this CSS sheet is common to all UIs + + /** + * Set the current status (also known as visibility) of this ui. + * + * @param state int The status to set, see the defines at the top of this file + * @param push_update int (bool) Push an update to the ui to update it's status (an update is always sent if the status has changed to red (0)) + * + * @return nothing + */ +/datum/nanoui/proc/set_status(state, push_update) + if (state != status) + status = state + if (push_update || !status) + push_data(list(), 1) // Update the UI, force the update in case the status is 0 + else + status = state + + /** + * Update the status (visibility) of this ui based on the user's status + * + * @param push_update int (bool) Push an update to the ui to update it's status. This is set to 0/false if an update is going to be pushed anyway (to avoid unnessary updates) + * + * @return nothing + */ +/datum/nanoui/proc/update_status(push_update = 0) + if (istype(user, /mob/living/silicon/ai)) + set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) + else if (istype(user, /mob/living/silicon/robot)) + if (src_object in view(7, user)) // robots can see and interact with things they can see within 7 tiles + set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) + else + set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) + else + var/dist = get_dist(src_object, user) + + if (dist > 4) + close() + return + + if ((allowed_user_stat > -1) && (user.stat > allowed_user_stat)) + set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) + else if (user.restrained() || user.lying) + set_status(STATUS_UPDATE, push_update) // update only (orange visibility) + else if (!(src_object in view(4, user))) // If the src object is not in visable, set status to 0 + set_status(STATUS_DISABLED, push_update) // interactive (green visibility) + else if (dist <= 1) + set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) + else if (dist <= 2) + set_status(STATUS_UPDATE, push_update) // update only (orange visibility) + else if (dist <= 4) + set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) + + /** + * Set the ui to auto update (every master_controller tick) + * + * @param state int (bool) Set auto update to 1 or 0 (true/false) + * + * @return nothing + */ +/datum/nanoui/proc/set_auto_update(state = 1) + is_auto_updating = state + + /** + * Set the initial data for the ui. This is vital as the data structure set here cannot be changed when pushing new updates. + * + * @param data /list The list of data for this ui + * + * @return nothing + */ +/datum/nanoui/proc/set_initial_data(list/data) + initial_data = add_default_data(data) + + /** + * Add default data to the data being sent to the ui. + * + * @param data /list The list of data to be modified + * + * @return /list modified data + */ +/datum/nanoui/proc/add_default_data(list/data) + data["ui"] = list( + "status" = status, + "user" = list("name" = user.name) + ) + return data + + /** + * Set the browser window options for this ui + * + * @param nwindow_options string The new window options + * + * @return nothing + */ +/datum/nanoui/proc/set_window_options(nwindow_options) + window_options = nwindow_options + + /** + * Add a CSS stylesheet to this UI + * + * @param file string The name of the CSS file from /nano/css (e.g. "my_style.css") + * + * @return nothing + */ +/datum/nanoui/proc/add_stylesheet(file) + stylesheets.Add(file) + + /** + * Add a JavsScript script to this UI + * + * @param file string The name of the JavaScript file from /nano/js (e.g. "my_script.js") + * + * @return nothing + */ +/datum/nanoui/proc/add_script(file) + scripts.Add(file) + + /** + * Add a template to this UI + * Templates are combined with the data sent to the UI to create the rendered view + * Each template needs a div in ui.content to contain the rendered content. + * The div format is '
    ' where is replaced with the templater's key. + * All UIs are set up by default to use a 'main' template, so only use this proc if you want to add advanced functionality. + * + * @param key string The key name for this template, used to identify the div to render this template into ('
    ') + * @param file string The name of the template file from /nano/templates (e.g. "my_template.tmpl") + * + * @return nothing + */ +/datum/nanoui/proc/add_template(key, file) + templates[key] = file + + /** + * Set the HTML content of the UI + * This should only really be used to add more template divs (see the add_template() proc) + * + * @param ncontent string The new HTML content for this UI + * + * @return nothing + */ +/datum/nanoui/proc/set_content(ncontent) + content = ncontent + + /** + * Set whether or not to use the "old" on close logic (mainly unset_machine()) + * + * @param state int (bool) Set on_close_logic to 1 or 0 (true/false) + * + * @return nothing + */ +/datum/nanoui/proc/use_on_close_logic(state) + on_close_logic = state + + /** + * Return the HTML header content for this UI + * + * @return string HTML header content + */ +/datum/nanoui/proc/get_header() + var/head_content = "" + + for (var/filename in scripts) + head_content += " " + + for (var/filename in stylesheets) + head_content += " " + + var/templatel_data[0] + for (var/key in templates) + templatel_data[key] = templates[key]; + + var/template_data_json = "{}" // An empty JSON object + if (templatel_data.len > 0) + template_data_json = list2json(templatel_data) + + var/initial_data_json = "{}" // An empty JSON object + if (initial_data.len > 0) + initial_data_json = list2json(initial_data) + + var/url_parameters_json = list2json(list("src" = "\ref[src]")) + + return {" + + + + + [head_content] + + +
    + [title ? "
    [title]
    " : ""] +
    +
    Initiating...
    + "} + + /** + * Return the HTML footer content for this UI + * + * @return string HTML footer content + */ +/datum/nanoui/proc/get_footer() + + return {" +
    +
    + +"} + + /** + * Return the HTML for this UI + * + * @return string HTML for the UI + */ +/datum/nanoui/proc/get_html() + return {" + [get_header()] + [content] + [get_footer()] + "} + + /** + * Open this UI + * + * @return nothing + */ +/datum/nanoui/proc/open() + var/window_size = "" + if (width && height) + window_size = "size=[width]x[height];" + update_status(0) + user << browse(get_html(), "window=[window_id];[window_size][window_options]") + winset(user, "mapwindow.map", "focus=true") // return keyboard focus to map + on_close_winset() + //onclose(user, window_id) + nanomanager.ui_opened(src) + + /** + * Close this UI + * + * @return nothing + */ +/datum/nanoui/proc/close() + is_auto_updating = 0 + nanomanager.ui_closed(src) + user << browse(null, "window=[window_id]") + + /** + * Set the UI window to call the nanoclose verb when the window is closed + * This allows Nano to handle closed windows + * + * @return nothing + */ +/datum/nanoui/proc/on_close_winset() + if(!user.client) + return + var/params = "\ref[src]" + + winset(user, window_id, "on-close=\"nanoclose [params]\"") + + /** + * Push data to an already open UI window + * + * @return nothing + */ +/datum/nanoui/proc/push_data(data, force_push = 0) + update_status(0) + if (status == STATUS_DISABLED && !force_push) + return // Cannot update UI, no visibility + + data = add_default_data(data) + //user << list2json(data) // used for debugging + user << output(list2params(list(list2json(data))),"[window_id].browser:receiveUpdateData") + + /** + * This Topic() proc is called whenever a user clicks on a link within a Nano UI + * If the UI status is currently STATUS_INTERACTIVE then call the src_object Topic() + * If the src_object Topic() returns 1 (true) then update all UIs attached to src_object + * + * @return nothing + */ +/datum/nanoui/Topic(href, href_list) + update_status(0) // update the status + if (status != STATUS_INTERACTIVE || user != usr) // If UI is not interactive or usr calling Topic is not the UI user + return + + if (src_object && src_object.Topic(href, href_list)) + nanomanager.update_uis(src_object) // update all UIs attached to src_object + + /** + * Process this UI, updating the entire UI or just the status (aka visibility) + * This process proc is called by the master_controller + * + * @param update string For this UI to update + * + * @return nothing + */ +/datum/nanoui/proc/process(update = 0) + if (!src_object || !user) + close() + return + + if (status && (update || is_auto_updating)) + src_object.ui_interact(user, ui_key, src) // Update the UI (update_status() is called whenever a UI is updated) + else + update_status(1) // Not updating UI, so lets check here if status has changed + diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 65ced77af37..38726cb726e 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -1,355 +1,355 @@ -/* Photography! - * Contains: - * Camera - * Camera Film - * Photos - * Photo Albums - */ - -/* - * Film - */ -/obj/item/device/camera_film - name = "film cartridge" - icon = 'icons/obj/items.dmi' - desc = "A camera film cartridge. Insert it into a camera to reload it." - icon_state = "film" - item_state = "electropack" - w_class = 1.0 - - -/* - * Photo - */ -/obj/item/weapon/photo - name = "photo" - icon = 'icons/obj/items.dmi' - icon_state = "photo" - item_state = "paper" - w_class = 1.0 - var/icon/img //Big photo image - var/scribble //Scribble on the back. - var/blueprints = 0 //Does it include the blueprints? - - -/obj/item/weapon/photo/attack_self(mob/user) - examine() - - -/obj/item/weapon/photo/attackby(obj/item/weapon/P, mob/user) - if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - var/txt = sanitize(input(user, "What would you like to write on the back?", "Photo Writing", null) as text) - txt = copytext(txt, 1, 128) - if(loc == user && user.stat == 0) - scribble = txt - ..() - - -/obj/item/weapon/photo/examine() - set src in oview(1) - if(is_blind(usr)) return - - if(in_range(usr, src)) - show(usr) - usr << desc - else - usr << "It is too far away." - - -/obj/item/weapon/photo/proc/show(mob/user) - user << browse_rsc(img, "tmp_photo.png") - user << browse("[name]" \ - + "" \ - + "" \ - + "[scribble ? "
    Written on the back:
    [scribble]" : ""]"\ - + "", "window=book;size=192x[scribble ? 400 : 192]") - onclose(user, "[name]") - - -/obj/item/weapon/photo/verb/rename() - set name = "Rename photo" - set category = "Object" - set src in usr - - var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN) - //loc.loc check is for making possible renaming photos in clipboards - if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == 0) - name = "photo[(n_name ? text("- '[n_name]'") : null)]" - add_fingerprint(usr) - - -/* - * Photo album - */ -/obj/item/weapon/storage/photo_album - name = "photo album" - icon = 'icons/obj/items.dmi' - icon_state = "album" - item_state = "briefcase" - can_hold = list("/obj/item/weapon/photo",) - - -/* - * Camera - */ -/obj/item/device/camera - name = "camera" - icon = 'icons/obj/items.dmi' - desc = "A polaroid camera. 10 photos left." - icon_state = "camera" - item_state = "electropack" - w_class = 2.0 - flags = CONDUCT - slot_flags = SLOT_BELT - m_amt = 2000 - var/pictures_max = 10 - var/pictures_left = 10 - var/on = 1 - var/blueprints = 0 //are blueprints visible in the current photo being created? - var/list/aipictures = list() //Allows for storage of pictures taken by AI, in a similar manner the datacore stores info - - -/obj/item/device/camera/ai_camera //camera AI can take pictures with - name = "AI photo camera" - var/in_camera_mode = 0 - - verb/picture() - set category ="AI Commands" - set name = "Take Image" - set src in usr - - toggle_camera_mode() - - verb/viewpicture() - set category ="AI Commands" - set name = "View Images" - set src in usr - - viewpictures() - - -/obj/item/device/camera/attack(mob/living/carbon/human/M, mob/user) - return - - -/obj/item/device/camera/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/device/camera_film)) - if(pictures_left) - user << "[src] still has some film in it!" - return - user << "You insert [I] into [src]." - user.drop_item() - qdel(I) - pictures_left = pictures_max - return - ..() - - -/obj/item/device/camera/proc/camera_get_icon(list/turfs, turf/center) - var/atoms[] = list() - for(var/turf/T in turfs) - atoms.Add(T) - for(var/atom/movable/A in T) - if(A.invisibility) continue - atoms.Add(A) - - var/list/sorted = list() - var/j - for(var/i = 1 to atoms.len) - var/atom/c = atoms[i] - for(j = sorted.len, j > 0, --j) - var/atom/c2 = sorted[j] - if(c2.layer <= c.layer) - break - sorted.Insert(j+1, c) - - var/icon/res = icon('icons/effects/96x96.dmi', "") - - for(var/atom/A in sorted) - var/icon/img = getFlatIcon(A) - if(istype(A, /mob/living) && A:lying) - img.Turn(A:lying) - - var/offX = 32 * (A.x - center.x) + A.pixel_x + 33 - var/offY = 32 * (A.y - center.y) + A.pixel_y + 33 - if(istype(A, /atom/movable)) - offX += A:step_x - offY += A:step_y - - res.Blend(img, blendMode2iconMode(A.blend_mode), offX, offY) - - if(istype(A, /obj/item/blueprints)) - blueprints = 1 - - for(var/turf/T in turfs) - res.Blend(getFlatIcon(T.loc), blendMode2iconMode(T.blend_mode), 32 * (T.x - center.x) + 33, 32 * (T.y - center.y) + 33) - - return res - - -/obj/item/device/camera/proc/camera_get_mobs(turf/the_turf) - var/mob_detail - for(var/mob/living/carbon/A in the_turf) - if(A.invisibility) continue - var/holding = null - if(A.l_hand || A.r_hand) - if(A.l_hand) holding = "They are holding \a [A.l_hand]" - if(A.r_hand) - if(holding) - holding += " and \a [A.r_hand]" - else - holding = "They are holding \a [A.r_hand]" - - if(!mob_detail) - mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " - else - mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." - return mob_detail - - -/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) //Proc for both regular and AI-based camera to take the image - var/mobs = "" - var/isAi = istype(user, /mob/living/silicon/ai) - var/list/seen - if(!isAi) //crappy check, but without it AI photos would be subject to line of sight from the AI Eye object. Made the best of it by moving the sec camera check inside - if(user.client) //To make shooting through security cameras possible - seen = hear(world.view, user.client.eye) //To make shooting through security cameras possible - else - seen = hear(world.view, user) - else - seen = hear(world.view, target) - - var/list/turfs = list() - for(var/turf/T in range(1, target)) - if(T in seen) - if(isAi && !cameranet.checkTurfVis(T)) - continue - else - turfs += T - mobs += camera_get_mobs(T) - - var/icon/temp = icon('icons/effects/96x96.dmi',"") - temp.Blend("#000", ICON_OVERLAY) - temp.Blend(camera_get_icon(turfs, target), ICON_OVERLAY) - - if(!isAi) - printpicture(user, temp, mobs, flag) - else - aipicture(user, temp, mobs, blueprints) - - - - -/obj/item/device/camera/proc/printpicture(mob/user, icon/temp, mobs, flag) //Normal camera proc for creating photos - var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() - user.put_in_hands(P) - var/icon/small_img = icon(temp) - var/icon/ic = icon('icons/obj/items.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 10, 13) - P.icon = ic - P.img = temp - P.desc = mobs - P.pixel_x = rand(-10, 10) - P.pixel_y = rand(-10, 10) - - if(blueprints) - P.blueprints = 1 - blueprints = 0 - - -/obj/item/device/camera/proc/aipicture(mob/user, icon/temp, mobs) //instead of printing a picture like a regular camera would, we do this instead for the AI - - var/icon/small_img = icon(temp) - var/icon/ic = icon('icons/obj/items.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 10, 13) - var/icon = ic - var/img = temp - var/desc = mobs - var/pixel_x = rand(-10, 10) - var/pixel_y = rand(-10, 10) - - var/injectblueprints = 1 - if(blueprints) - injectblueprints = 1 - blueprints = 0 - - injectaialbum(icon, img, desc, pixel_x, pixel_y, injectblueprints) - - -/datum/picture - var/name = "image" - var/list/fields = list() - - -/obj/item/device/camera/proc/injectaialbum(var/icon, var/img, var/desc, var/pixel_x, var/pixel_y, var/blueprintsinject) //stores image information to a list similar to that of the datacore - var/numberer = 1 - for(var/datum/picture in src.aipictures) - numberer++ - var/datum/picture/P = new() - P.fields["name"] = "Image [numberer]" - P.fields["icon"] = icon - P.fields["img"] = img - P.fields["desc"] = desc - P.fields["pixel_x"] = pixel_x - P.fields["pixel_y"] = pixel_y - P.fields["blueprints"] = blueprintsinject - - aipictures += P - usr << "Image recorded" //feedback to the AI player that the picture was taken - - -/obj/item/device/camera/ai_camera/proc/viewpictures() //AI proc for viewing pictures they have taken - var/list/nametemp = list() - var/find - var/datum/picture/selection - if(src.aipictures.len == 0) - usr << "No images saved" - return - for(var/datum/picture/t in src.aipictures) - nametemp += t.fields["name"] - find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() - for(var/datum/picture/q in src.aipictures) - if(q.fields["name"] == find) - selection = q - break // just in case some AI decides to take 10 thousand pictures in a round - P.icon = selection.fields["icon"] - P.img = selection.fields["img"] - P.desc = selection.fields["desc"] - P.pixel_x = selection.fields["pixel_x"] - P.pixel_y = selection.fields["pixel_y"] - - P.show(usr) - usr << P.desc - qdel(src) //so 10 thousdand pictures items are not left in memory should an AI take them and then view them all. - -/obj/item/device/camera/afterattack(atom/target, mob/user, flag) - if(!on || !pictures_left || ismob(target.loc)) return - captureimage(target, user, flag) - - playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) - - pictures_left-- - desc = "A polaroid camera. It has [pictures_left] photos left." - user << "[pictures_left] photos left." - icon_state = "camera_off" - on = 0 - spawn(64) - icon_state = "camera" - on = 1 - -/obj/item/device/camera/ai_camera/proc/toggle_camera_mode() - if(in_camera_mode) - camera_mode_off() - else - camera_mode_on() - -/obj/item/device/camera/ai_camera/proc/camera_mode_off() - src.in_camera_mode = 0 - usr << "Camera Mode deactivated" - -/obj/item/device/camera/ai_camera/proc/camera_mode_on() - src.in_camera_mode = 1 +/* Photography! + * Contains: + * Camera + * Camera Film + * Photos + * Photo Albums + */ + +/* + * Film + */ +/obj/item/device/camera_film + name = "film cartridge" + icon = 'icons/obj/items.dmi' + desc = "A camera film cartridge. Insert it into a camera to reload it." + icon_state = "film" + item_state = "electropack" + w_class = 1.0 + + +/* + * Photo + */ +/obj/item/weapon/photo + name = "photo" + icon = 'icons/obj/items.dmi' + icon_state = "photo" + item_state = "paper" + w_class = 1.0 + var/icon/img //Big photo image + var/scribble //Scribble on the back. + var/blueprints = 0 //Does it include the blueprints? + + +/obj/item/weapon/photo/attack_self(mob/user) + examine() + + +/obj/item/weapon/photo/attackby(obj/item/weapon/P, mob/user) + if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) + var/txt = sanitize(input(user, "What would you like to write on the back?", "Photo Writing", null) as text) + txt = copytext(txt, 1, 128) + if(loc == user && user.stat == 0) + scribble = txt + ..() + + +/obj/item/weapon/photo/examine() + set src in oview(1) + if(is_blind(usr)) return + + if(in_range(usr, src)) + show(usr) + usr << desc + else + usr << "It is too far away." + + +/obj/item/weapon/photo/proc/show(mob/user) + user << browse_rsc(img, "tmp_photo.png") + user << browse("[name]" \ + + "" \ + + "" \ + + "[scribble ? "
    Written on the back:
    [scribble]" : ""]"\ + + "", "window=book;size=192x[scribble ? 400 : 192]") + onclose(user, "[name]") + + +/obj/item/weapon/photo/verb/rename() + set name = "Rename photo" + set category = "Object" + set src in usr + + var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN) + //loc.loc check is for making possible renaming photos in clipboards + if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == 0) + name = "photo[(n_name ? text("- '[n_name]'") : null)]" + add_fingerprint(usr) + + +/* + * Photo album + */ +/obj/item/weapon/storage/photo_album + name = "photo album" + icon = 'icons/obj/items.dmi' + icon_state = "album" + item_state = "briefcase" + can_hold = list("/obj/item/weapon/photo",) + + +/* + * Camera + */ +/obj/item/device/camera + name = "camera" + icon = 'icons/obj/items.dmi' + desc = "A polaroid camera. 10 photos left." + icon_state = "camera" + item_state = "electropack" + w_class = 2.0 + flags = CONDUCT + slot_flags = SLOT_BELT + m_amt = 2000 + var/pictures_max = 10 + var/pictures_left = 10 + var/on = 1 + var/blueprints = 0 //are blueprints visible in the current photo being created? + var/list/aipictures = list() //Allows for storage of pictures taken by AI, in a similar manner the datacore stores info + + +/obj/item/device/camera/ai_camera //camera AI can take pictures with + name = "AI photo camera" + var/in_camera_mode = 0 + + verb/picture() + set category ="AI Commands" + set name = "Take Image" + set src in usr + + toggle_camera_mode() + + verb/viewpicture() + set category ="AI Commands" + set name = "View Images" + set src in usr + + viewpictures() + + +/obj/item/device/camera/attack(mob/living/carbon/human/M, mob/user) + return + + +/obj/item/device/camera/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/device/camera_film)) + if(pictures_left) + user << "[src] still has some film in it!" + return + user << "You insert [I] into [src]." + user.drop_item() + qdel(I) + pictures_left = pictures_max + return + ..() + + +/obj/item/device/camera/proc/camera_get_icon(list/turfs, turf/center) + var/atoms[] = list() + for(var/turf/T in turfs) + atoms.Add(T) + for(var/atom/movable/A in T) + if(A.invisibility) continue + atoms.Add(A) + + var/list/sorted = list() + var/j + for(var/i = 1 to atoms.len) + var/atom/c = atoms[i] + for(j = sorted.len, j > 0, --j) + var/atom/c2 = sorted[j] + if(c2.layer <= c.layer) + break + sorted.Insert(j+1, c) + + var/icon/res = icon('icons/effects/96x96.dmi', "") + + for(var/atom/A in sorted) + var/icon/img = getFlatIcon(A) + if(istype(A, /mob/living) && A:lying) + img.Turn(A:lying) + + var/offX = 32 * (A.x - center.x) + A.pixel_x + 33 + var/offY = 32 * (A.y - center.y) + A.pixel_y + 33 + if(istype(A, /atom/movable)) + offX += A:step_x + offY += A:step_y + + res.Blend(img, blendMode2iconMode(A.blend_mode), offX, offY) + + if(istype(A, /obj/item/blueprints)) + blueprints = 1 + + for(var/turf/T in turfs) + res.Blend(getFlatIcon(T.loc), blendMode2iconMode(T.blend_mode), 32 * (T.x - center.x) + 33, 32 * (T.y - center.y) + 33) + + return res + + +/obj/item/device/camera/proc/camera_get_mobs(turf/the_turf) + var/mob_detail + for(var/mob/living/carbon/A in the_turf) + if(A.invisibility) continue + var/holding = null + if(A.l_hand || A.r_hand) + if(A.l_hand) holding = "They are holding \a [A.l_hand]" + if(A.r_hand) + if(holding) + holding += " and \a [A.r_hand]" + else + holding = "They are holding \a [A.r_hand]" + + if(!mob_detail) + mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " + else + mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." + return mob_detail + + +/obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) //Proc for both regular and AI-based camera to take the image + var/mobs = "" + var/isAi = istype(user, /mob/living/silicon/ai) + var/list/seen + if(!isAi) //crappy check, but without it AI photos would be subject to line of sight from the AI Eye object. Made the best of it by moving the sec camera check inside + if(user.client) //To make shooting through security cameras possible + seen = hear(world.view, user.client.eye) //To make shooting through security cameras possible + else + seen = hear(world.view, user) + else + seen = hear(world.view, target) + + var/list/turfs = list() + for(var/turf/T in range(1, target)) + if(T in seen) + if(isAi && !cameranet.checkTurfVis(T)) + continue + else + turfs += T + mobs += camera_get_mobs(T) + + var/icon/temp = icon('icons/effects/96x96.dmi',"") + temp.Blend("#000", ICON_OVERLAY) + temp.Blend(camera_get_icon(turfs, target), ICON_OVERLAY) + + if(!isAi) + printpicture(user, temp, mobs, flag) + else + aipicture(user, temp, mobs, blueprints) + + + + +/obj/item/device/camera/proc/printpicture(mob/user, icon/temp, mobs, flag) //Normal camera proc for creating photos + var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() + user.put_in_hands(P) + var/icon/small_img = icon(temp) + var/icon/ic = icon('icons/obj/items.dmi',"photo") + small_img.Scale(8, 8) + ic.Blend(small_img,ICON_OVERLAY, 10, 13) + P.icon = ic + P.img = temp + P.desc = mobs + P.pixel_x = rand(-10, 10) + P.pixel_y = rand(-10, 10) + + if(blueprints) + P.blueprints = 1 + blueprints = 0 + + +/obj/item/device/camera/proc/aipicture(mob/user, icon/temp, mobs) //instead of printing a picture like a regular camera would, we do this instead for the AI + + var/icon/small_img = icon(temp) + var/icon/ic = icon('icons/obj/items.dmi',"photo") + small_img.Scale(8, 8) + ic.Blend(small_img,ICON_OVERLAY, 10, 13) + var/icon = ic + var/img = temp + var/desc = mobs + var/pixel_x = rand(-10, 10) + var/pixel_y = rand(-10, 10) + + var/injectblueprints = 1 + if(blueprints) + injectblueprints = 1 + blueprints = 0 + + injectaialbum(icon, img, desc, pixel_x, pixel_y, injectblueprints) + + +/datum/picture + var/name = "image" + var/list/fields = list() + + +/obj/item/device/camera/proc/injectaialbum(var/icon, var/img, var/desc, var/pixel_x, var/pixel_y, var/blueprintsinject) //stores image information to a list similar to that of the datacore + var/numberer = 1 + for(var/datum/picture in src.aipictures) + numberer++ + var/datum/picture/P = new() + P.fields["name"] = "Image [numberer]" + P.fields["icon"] = icon + P.fields["img"] = img + P.fields["desc"] = desc + P.fields["pixel_x"] = pixel_x + P.fields["pixel_y"] = pixel_y + P.fields["blueprints"] = blueprintsinject + + aipictures += P + usr << "Image recorded" //feedback to the AI player that the picture was taken + + +/obj/item/device/camera/ai_camera/proc/viewpictures() //AI proc for viewing pictures they have taken + var/list/nametemp = list() + var/find + var/datum/picture/selection + if(src.aipictures.len == 0) + usr << "No images saved" + return + for(var/datum/picture/t in src.aipictures) + nametemp += t.fields["name"] + find = input("Select image (numbered in order taken)") in nametemp + var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() + for(var/datum/picture/q in src.aipictures) + if(q.fields["name"] == find) + selection = q + break // just in case some AI decides to take 10 thousand pictures in a round + P.icon = selection.fields["icon"] + P.img = selection.fields["img"] + P.desc = selection.fields["desc"] + P.pixel_x = selection.fields["pixel_x"] + P.pixel_y = selection.fields["pixel_y"] + + P.show(usr) + usr << P.desc + qdel(src) //so 10 thousdand pictures items are not left in memory should an AI take them and then view them all. + +/obj/item/device/camera/afterattack(atom/target, mob/user, flag) + if(!on || !pictures_left || ismob(target.loc)) return + captureimage(target, user, flag) + + playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) + + pictures_left-- + desc = "A polaroid camera. It has [pictures_left] photos left." + user << "[pictures_left] photos left." + icon_state = "camera_off" + on = 0 + spawn(64) + icon_state = "camera" + on = 1 + +/obj/item/device/camera/ai_camera/proc/toggle_camera_mode() + if(in_camera_mode) + camera_mode_off() + else + camera_mode_on() + +/obj/item/device/camera/ai_camera/proc/camera_mode_off() + src.in_camera_mode = 0 + usr << "Camera Mode deactivated" + +/obj/item/device/camera/ai_camera/proc/camera_mode_on() + src.in_camera_mode = 1 usr << "Camera Mode activated" \ No newline at end of file diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 0e6e3d032ea..603b4a7e060 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1,1285 +1,1285 @@ -#define APC_WIRE_IDSCAN 1 -#define APC_WIRE_MAIN_POWER1 2 -#define APC_WIRE_MAIN_POWER2 3 -#define APC_WIRE_AI_CONTROL 4 - -//update_state -#define UPSTATE_CELL_IN 1 -#define UPSTATE_OPENED1 2 -#define UPSTATE_OPENED2 4 -#define UPSTATE_MAINT 8 -#define UPSTATE_BROKE 16 -#define UPSTATE_BLUESCREEN 32 -#define UPSTATE_WIREEXP 64 -#define UPSTATE_ALLGOOD 128 - -//update_overlay -#define APC_UPOVERLAY_CHARGEING0 1 -#define APC_UPOVERLAY_CHARGEING1 2 -#define APC_UPOVERLAY_CHARGEING2 4 -#define APC_UPOVERLAY_EQUIPMENT0 8 -#define APC_UPOVERLAY_EQUIPMENT1 16 -#define APC_UPOVERLAY_EQUIPMENT2 32 -#define APC_UPOVERLAY_LIGHTING0 64 -#define APC_UPOVERLAY_LIGHTING1 128 -#define APC_UPOVERLAY_LIGHTING2 256 -#define APC_UPOVERLAY_ENVIRON0 512 -#define APC_UPOVERLAY_ENVIRON1 1024 -#define APC_UPOVERLAY_ENVIRON2 2048 -#define APC_UPOVERLAY_LOCKED 4096 -#define APC_UPOVERLAY_OPERATING 8192 - - -#define APC_UPDATE_ICON_COOLDOWN 200 // 20 seconds - -// the Area Power Controller (APC), formerly Power Distribution Unit (PDU) -// one per area, needs wire conection to power network - -// controls power to devices in that area -// may be opened to change power cell -// three different channels (lighting/equipment/environ) - may each be set to on, off, or auto - - -//NOTE: STUFF STOLEN FROM AIRLOCK.DM thx - - -/obj/machinery/power/apc - name = "area power controller" - desc = "A control terminal for the area electrical systems." - - icon_state = "apc0" - anchored = 1 - use_power = 0 - req_access = list(access_engine_equip) - var/area/area - var/areastring = null - var/obj/item/weapon/stock_parts/cell/cell - var/start_charge = 90 // initial cell charge % - var/cell_type = 2500 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500 - var/opened = 0 //0=closed, 1=opened, 2=cover removed - var/shorted = 0 - var/lighting = 3 - var/equipment = 3 - var/environ = 3 - var/operating = 1 - var/charging = 0 - var/chargemode = 1 - var/chargecount = 0 - var/locked = 1 - var/coverlocked = 1 - var/aidisabled = 0 - var/tdir = null - var/obj/machinery/power/terminal/terminal = null - var/lastused_light = 0 - var/lastused_equip = 0 - var/lastused_environ = 0 - var/lastused_total = 0 - var/main_status = 0 - var/wiresexposed = 0 - powernet = 0 // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :( - var/malfhack = 0 //New var for my changes to AI malf. --NeoFite - var/mob/living/silicon/ai/malfai = null //See above --NeoFite -// luminosity = 1 - var/has_electronics = 0 // 0 - none, 1 - plugged in, 2 - secured by screwdriver - var/overload = 1 //used for the Blackout malf module - var/beenhit = 0 // used for counting how many times it has been hit, used for Aliens at the moment - var/mob/living/silicon/ai/occupier = null - var/longtermpower = 10 - var/datum/wires/apc/wires = null - var/auto_name = 0 - var/update_state = -1 - var/update_overlay = -1 - var/global/status_overlays = 0 - var/updating_icon = 0 - var/global/list/status_overlays_lock - var/global/list/status_overlays_charging - var/global/list/status_overlays_equipment - var/global/list/status_overlays_lighting - var/global/list/status_overlays_environ - -/obj/machinery/power/apc/updateDialog() - if (stat & (BROKEN|MAINT)) - return - ..() - -/obj/machinery/power/apc/connect_to_network() - //Override because the APC does not directly connect to the network; it goes through a terminal. - //The terminal is what the power computer looks for anyway. - if(!terminal) - make_terminal() - if(terminal) - terminal.connect_to_network() - -/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) - ..() - wires = new(src) - // offset 24 pixels in direction of dir - // this allows the APC to be embedded in a wall, yet still inside an area - if (building) - dir = ndir - src.tdir = dir // to fix Vars bug - dir = SOUTH - - if(auto_name) - name = "[get_area(src)] APC" - - pixel_x = (src.tdir & 3)? 0 : (src.tdir == 4 ? 24 : -24) - pixel_y = (src.tdir & 3)? (src.tdir ==1 ? 24 : -24) : 0 - if (building==0) - init() - else - area = src.loc.loc:master - opened = 1 - operating = 0 - name = "[area.name] APC" - stat |= MAINT - src.update_icon() - spawn(5) - src.update() - -/obj/machinery/power/apc/Destroy() - if(malfai && operating) - if (ticker.mode.config_tag == "malfunction") - if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) - ticker.mode:apcs-- - area.power_light = 0 - area.power_equip = 0 - area.power_environ = 0 - area.power_change() - if(occupier) - malfvacate(1) - del(wires) - if(cell) - qdel(cell) - if(terminal) - disconnect_terminal() - ..() - -/obj/machinery/power/apc/proc/make_terminal() - // create a terminal object at the same position as original turf loc - // wires will attach to this - terminal = new/obj/machinery/power/terminal(src.loc) - terminal.dir = tdir - terminal.master = src - -/obj/machinery/power/apc/proc/init() - has_electronics = 2 //installed and secured - // is starting with a power cell installed, create it and set its charge level - if(cell_type) - src.cell = new/obj/item/weapon/stock_parts/cell(src) - cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively) - cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value) - - var/area/A = src.loc.loc - - //if area isn't specified use current - if(isarea(A) && src.areastring == null) - src.area = A - else - src.area = get_area_name(areastring) - update_icon() - - make_terminal() - - spawn(5) - src.update() - -/obj/machinery/power/apc/examine() - set src in oview(1) - - if(usr /*&& !usr.stat*/) - ..() - if(stat & BROKEN) - usr << "Looks broken." - return - if(opened) - if(has_electronics && terminal) - usr << "The cover is [opened==2?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]." - else if (!has_electronics && terminal) - usr << "There are some wires but no any electronics." - else if (has_electronics && !terminal) - usr << "Electronics installed but not wired." - else /* if (!has_electronics && !terminal) */ - usr << "There is no electronics nor connected wires." - - else - if (stat & MAINT) - usr << "The cover is closed. Something wrong with it: it doesn't work." - else if (malfhack) - usr << "The cover is broken. It may be hard to force it open." - else - usr << "The cover is closed." - - -// update the APC icon to show the three base states -// also add overlays for indicator lights -/obj/machinery/power/apc/update_icon() - if (!status_overlays) - status_overlays = 1 - status_overlays_lock = new - status_overlays_charging = new - status_overlays_equipment = new - status_overlays_lighting = new - status_overlays_environ = new - - status_overlays_lock.len = 2 - status_overlays_charging.len = 3 - status_overlays_equipment.len = 4 - status_overlays_lighting.len = 4 - status_overlays_environ.len = 4 - - status_overlays_lock[1] = image(icon, "apcox-0") // 0=blue 1=red - status_overlays_lock[2] = image(icon, "apcox-1") - - status_overlays_charging[1] = image(icon, "apco3-0") - status_overlays_charging[2] = image(icon, "apco3-1") - status_overlays_charging[3] = image(icon, "apco3-2") - - status_overlays_equipment[1] = image(icon, "apco0-0") - status_overlays_equipment[2] = image(icon, "apco0-1") - status_overlays_equipment[3] = image(icon, "apco0-2") - status_overlays_equipment[4] = image(icon, "apco0-3") - - status_overlays_lighting[1] = image(icon, "apco1-0") - status_overlays_lighting[2] = image(icon, "apco1-1") - status_overlays_lighting[3] = image(icon, "apco1-2") - status_overlays_lighting[4] = image(icon, "apco1-3") - - status_overlays_environ[1] = image(icon, "apco2-0") - status_overlays_environ[2] = image(icon, "apco2-1") - status_overlays_environ[3] = image(icon, "apco2-2") - status_overlays_environ[4] = image(icon, "apco2-3") - - var/update = check_updates() //returns 0 if no need to update icons. - // 1 if we need to update the icon_state - // 2 if we need to update the overlays - if(!update) - return - - if(update & 1) // Updating the icon state - if(update_state & UPSTATE_ALLGOOD) - icon_state = "apc0" - else if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2)) - var/basestate = "apc[ cell ? "2" : "1" ]" - if(update_state & UPSTATE_OPENED1) - if(update_state & (UPSTATE_MAINT|UPSTATE_BROKE)) - icon_state = "apcmaint" //disabled APC cannot hold cell - else - icon_state = basestate - else if(update_state & UPSTATE_OPENED2) - if (update_state & UPSTATE_BROKE || malfhack) - icon_state = "[basestate]-b-nocover" - else - icon_state = "[basestate]-nocover" - else if(update_state & UPSTATE_BROKE) - icon_state = "apc-b" - else if(update_state & UPSTATE_BLUESCREEN) - icon_state = "apcemag" - else if(update_state & UPSTATE_WIREEXP) - icon_state = "apcewires" - - if(!(update_state & UPSTATE_ALLGOOD)) - if(overlays.len) - overlays = 0 - - if(update & 2) - if(overlays.len) - overlays.len = 0 - if(!(stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD) - overlays += status_overlays_lock[locked+1] - overlays += status_overlays_charging[charging+1] - if(operating) - overlays += status_overlays_equipment[equipment+1] - overlays += status_overlays_lighting[lighting+1] - overlays += status_overlays_environ[environ+1] - - -/obj/machinery/power/apc/proc/check_updates() - - var/last_update_state = update_state - var/last_update_overlay = update_overlay - update_state = 0 - update_overlay = 0 - - if(cell) - update_state |= UPSTATE_CELL_IN - if(stat & BROKEN) - update_state |= UPSTATE_BROKE - if(stat & MAINT) - update_state |= UPSTATE_MAINT - if(opened) - if(opened==1) - update_state |= UPSTATE_OPENED1 - if(opened==2) - update_state |= UPSTATE_OPENED2 - else if(emagged || malfai) - update_state |= UPSTATE_BLUESCREEN - else if(wiresexposed) - update_state |= UPSTATE_WIREEXP - if(update_state <= 1) - update_state |= UPSTATE_ALLGOOD - - if(operating) - update_overlay |= APC_UPOVERLAY_OPERATING - - if(update_state & UPSTATE_ALLGOOD) - if(locked) - update_overlay |= APC_UPOVERLAY_LOCKED - - if(!charging) - update_overlay |= APC_UPOVERLAY_CHARGEING0 - else if(charging == 1) - update_overlay |= APC_UPOVERLAY_CHARGEING1 - else if(charging == 2) - update_overlay |= APC_UPOVERLAY_CHARGEING2 - - if (!equipment) - update_overlay |= APC_UPOVERLAY_EQUIPMENT0 - else if(equipment == 1) - update_overlay |= APC_UPOVERLAY_EQUIPMENT1 - else if(equipment == 2) - update_overlay |= APC_UPOVERLAY_EQUIPMENT2 - - if(!lighting) - update_overlay |= APC_UPOVERLAY_LIGHTING0 - else if(lighting == 1) - update_overlay |= APC_UPOVERLAY_LIGHTING1 - else if(lighting == 2) - update_overlay |= APC_UPOVERLAY_LIGHTING2 - - if(!environ) - update_overlay |= APC_UPOVERLAY_ENVIRON0 - else if(environ==1) - update_overlay |= APC_UPOVERLAY_ENVIRON1 - else if(environ==2) - update_overlay |= APC_UPOVERLAY_ENVIRON2 - - - var/results = 0 - if(last_update_state == update_state && last_update_overlay == update_overlay) - return 0 - if(last_update_state != update_state) - results += 1 - if(last_update_overlay != update_overlay) - results += 2 - return results - -// Used in process so it doesn't update the icon too much -/obj/machinery/power/apc/proc/queue_icon_update() - - if(!updating_icon) - updating_icon = 1 - // Start the update - spawn(APC_UPDATE_ICON_COOLDOWN) - update_icon() - updating_icon = 0 - -//attack with an item - open/close cover, insert cell, or (un)lock interface - -/obj/machinery/power/apc/attackby(obj/item/W, mob/user) - - if (istype(user, /mob/living/silicon) && get_dist(src,user)>1) - return src.attack_hand(user) - if (istype(W, /obj/item/weapon/crowbar) && opened) - if (has_electronics==1) - if (terminal) - user << "\red Disconnect wires first." - return - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues - if(do_after(user, 50)) - has_electronics = 0 - if ((stat & BROKEN) || malfhack) - user.visible_message(\ - "\red [user.name] has broken the power control board inside [src.name]!",\ - "You broke the charred power control board and remove the remains.", - "You hear a crack!") - //ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0 - else - user.visible_message(\ - "\red [user.name] has removed the power control board from [src.name]!",\ - "You remove the power control board.") - new /obj/item/weapon/module/power_control(loc) - else if (opened!=2) //cover isn't removed - opened = 0 - update_icon() - else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || malfhack) ) - if(coverlocked && !(stat & MAINT)) - user << "\red The cover is locked and cannot be opened." - return - else - opened = 1 - update_icon() - else if (istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside - if(cell) - user << "There is a power cell already installed." - return - else - if (stat & MAINT) - user << "\red There is no connector for your power cell." - return - user.drop_item() - W.loc = src - cell = W - user.visible_message(\ - "\red [user.name] has inserted the power cell to [src.name]!",\ - "You insert the power cell.") - chargecount = 0 - update_icon() - else if (istype(W, /obj/item/weapon/screwdriver)) // haxing - if(opened) - if (cell) - user << "\red Close the APC first." //Less hints more mystery! - return - else - if (has_electronics==1 && terminal) - has_electronics = 2 - stat &= ~MAINT - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You screw the circuit electronics into place." - else if (has_electronics==2) - has_electronics = 1 - stat |= MAINT - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You unfasten the electronics." - else /* has_electronics==0 */ - user << "\red There is nothing to secure." - return - update_icon() - else if(emagged) - user << "The interface is broken." - else - wiresexposed = !wiresexposed - user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]" - update_icon() - - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card - if(emagged) - user << "The interface is broken." - else if(opened) - user << "You must close the cover to swipe an ID card." - else if(wiresexposed) - user << "You must close the panel" - else if(stat & (BROKEN|MAINT)) - user << "Nothing happens." - else - if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN)) - locked = !locked - user << "You [ locked ? "lock" : "unlock"] the APC interface." - update_icon() - else - user << "\red Access denied." - else if (istype(W, /obj/item/weapon/card/emag) && !(emagged || malfhack)) // trying to unlock with an emag card - if(opened) - user << "You must close the cover to swipe an ID card." - else if(wiresexposed) - user << "You must close the panel first" - else if(stat & (BROKEN|MAINT)) - user << "Nothing happens." - else - flick("apc-spark", src) - if (do_after(user,6)) - if(prob(50)) - emagged = 1 - locked = 0 - user << "You emag the APC interface." - update_icon() - else - user << "You fail to [ locked ? "unlock" : "lock"] the APC interface." - else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2) - if (src.loc:intact) - user << "\red You must remove the floor plating in front of the APC first." - return - var/obj/item/stack/cable_coil/C = W - if(C.amount < 10) - user << "\red You need more wires." - return - user << "You start adding cables to the APC frame..." - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 20) && C.amount >= 10) - var/turf/T = get_turf(src) - var/obj/structure/cable/N = T.get_cable_node() - if (prob(50) && electrocute_mob(usr, N, N)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - return - C.use(10) - user.visible_message(\ - "\red [user.name] has added cables to the APC frame!",\ - "You add cables to the APC frame.") - make_terminal() - terminal.connect_to_network() - else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2) - if (src.loc:intact) - user << "\red You must remove the floor plating in front of the APC first." - return - user << "You begin to cut the cables..." - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 50)) - if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - return - new /obj/item/stack/cable_coil(loc,10) - user.visible_message(\ - "\red [user.name] cut the cables and dismantled the power terminal.",\ - "You cut the cables and dismantle the power terminal.") - qdel(terminal) - else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack)) - user << "You trying to insert the power control board into the frame..." - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 10)) - has_electronics = 1 - user << "You place the power control board inside the frame." - qdel(W) - else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) - user << "\red You cannot put the board inside, the frame is damaged." - return - else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal) - var/obj/item/weapon/weldingtool/WT = W - if (WT.get_fuel() < 3) - user << "\blue You need more welding fuel to complete this task." - return - user << "You start welding the APC frame..." - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - if(do_after(user, 50)) - if(!src || !WT.remove_fuel(3, user)) return - if (emagged || malfhack || (stat & BROKEN) || opened==2) - new /obj/item/stack/sheet/metal(loc) - user.visible_message(\ - "\red [src] has been cut apart by [user.name] with the weldingtool.",\ - "You disassembled the broken APC frame.",\ - "\red You hear welding.") - else - new /obj/item/apc_frame(loc) - user.visible_message(\ - "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ - "You cut the APC frame from the wall.",\ - "\red You hear welding.") - qdel(src) - return - else if (istype(W, /obj/item/apc_frame) && opened && emagged) - emagged = 0 - if (opened==2) - opened = 1 - user.visible_message(\ - "\red [user.name] has replaced the damaged APC frontal panel with a new one.",\ - "You replace the damaged APC frontal panel with a new one.") - qdel(W) - update_icon() - else if (istype(W, /obj/item/apc_frame) && opened && ((stat & BROKEN) || malfhack)) - if (has_electronics) - user << "You cannot repair this APC until you remove the electronics still inside." - return - user << "You begin to replace the damaged APC frame..." - if(do_after(user, 50)) - user.visible_message(\ - "\red [user.name] has replaced the damaged APC frame with new one.",\ - "You replace the damaged APC frame with new one.") - qdel(W) - stat &= ~BROKEN - malfai = null - malfhack = 0 - if (opened==2) - opened = 1 - update_icon() - else - if ( ((stat & BROKEN) || malfhack) \ - && !opened \ - && W.force >= 5 \ - && W.w_class >= 3.0 \ - && prob(20) ) - opened = 2 - user.visible_message("\red The APC cover was knocked down with the [W.name] by [user.name]!", \ - "\red You knock down the APC cover with your [W.name]!", \ - "You hear bang") - update_icon() - else - if (istype(user, /mob/living/silicon)) - return src.attack_hand(user) - if (!opened && wiresexposed && \ - (istype(W, /obj/item/device/multitool) || \ - istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler))) - return src.attack_hand(user) - user.visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!", \ - "\red You hit the [src.name] with your [W.name]!", \ - "You hear bang") - -// attack with hand - remove cell (if cover open) or interact with the APC - -/obj/machinery/power/apc/attack_hand(mob/user) -// if (!can_use(user)) This already gets called in interact() and in topic() -// return - if(!user) - return - src.add_fingerprint(user) - if(usr == user && opened && (!issilicon(user))) - if(cell) - user.put_in_hands(cell) - cell.add_fingerprint(user) - cell.updateicon() - - src.cell = null - user.visible_message("\red [user.name] removes the power cell from [src.name]!", "You remove the power cell.") - //user << "You remove the power cell." - charging = 0 - src.update_icon() - return - if(stat & (BROKEN|MAINT)) - return - // do APC interaction - src.interact(user) - -/obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user) - if(!user) - return - user.visible_message("\red [user.name] slashes at the [src.name]!", "\blue You slash at the [src.name]!") - playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) - - var/allcut = wires.IsAllCut() - - if(beenhit >= pick(3, 4) && wiresexposed != 1) - wiresexposed = 1 - src.update_icon() - src.visible_message("\red The [src.name]'s cover flies open, exposing the wires!") - - else if(wiresexposed == 1 && allcut == 0) - wires.CutAll() - src.update_icon() - src.visible_message("\red The [src.name]'s wires are shredded!") - else - beenhit += 1 - return - - -/obj/machinery/power/apc/interact(mob/user) - if(!user) - return - - if(wiresexposed /*&& (!istype(user, /mob/living/silicon))*/) //Commented out the typecheck to allow engiborgs to repair damaged apcs. - wires.Interact(user) - - return ui_interact(user) - - -/obj/machinery/power/apc/proc/get_malf_status(mob/user) - if (ticker && ticker.mode && (user.mind in ticker.mode.malf_ai) && istype(user, /mob/living/silicon/ai)) - if (src.malfai == (user:parent ? user:parent : user)) - if (src.occupier == user) - return 3 // 3 = User is shunted in this APC - else if (istype(user.loc, /obj/machinery/power/apc)) - return 4 // 4 = User is shunted in another APC - else - return 2 // 2 = APC hacked by user, and user is in its core. - else - return 1 // 1 = APC not hacked. - else - return 0 // 0 = User is not a Malf AI - - -/obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) - if(!user) - return - - var/list/data = list( - "locked" = locked, - "isOperating" = operating, - "externalPower" = main_status, - "powerCellStatus" = cell ? cell.percent() : null, - "chargeMode" = chargemode, - "chargingStatus" = charging, - "totalLoad" = lastused_equip + lastused_light + lastused_environ, - "coverLocked" = coverlocked, - "siliconUser" = istype(user, /mob/living/silicon), - "malfStatus" = get_malf_status(user), - - "powerChannels" = list( - list( - "title" = "Equipment", - "powerLoad" = lastused_equip, - "status" = equipment, - "topicParams" = list( - "auto" = list("eqp" = 3), - "on" = list("eqp" = 2), - "off" = list("eqp" = 1) - ) - ), - list( - "title" = "Lighting", - "powerLoad" = lastused_light, - "status" = lighting, - "topicParams" = list( - "auto" = list("lgt" = 3), - "on" = list("lgt" = 2), - "off" = list("lgt" = 1) - ) - ), - list( - "title" = "Environment", - "powerLoad" = lastused_environ, - "status" = environ, - "topicParams" = list( - "auto" = list("env" = 3), - "on" = list("env" = 2), - "off" = list("env" = 1) - ) - ) - ) - ) - - // update the ui if it exists, returns null if no ui is passed/found - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) - if (!ui) - // the ui does not exist, so we'll create a new() one - // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 465 : 420) - // when the ui is first opened this is the data it will use - ui.set_initial_data(data) - // open the new ui window - ui.open() - // auto update every Master Controller tick - ui.set_auto_update(1) - -/obj/machinery/power/apc/proc/report() - return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" - -/obj/machinery/power/apc/proc/update() - if(operating && !shorted) - area.power_light = (lighting > 1) - area.power_equip = (equipment > 1) - area.power_environ = (environ > 1) -// if (area.name == "AI Chamber") -// spawn(10) -// world << " [area.name] [area.power_equip]" - else - area.power_light = 0 - area.power_equip = 0 - area.power_environ = 0 -// if (area.name == "AI Chamber") -// world << "[area.power_equip]" - area.power_change() - -/obj/machinery/power/apc/proc/isWireCut(var/wireIndex) - return wires.IsIndexCut(wireIndex) - - -/obj/machinery/power/apc/proc/can_use(mob/user as mob, var/loud = 0) //used by attack_hand() and Topic() - if (user.stat) - user << "\red You must be conscious to use this [src]!" - return 0 - if(!user.client) - return 0 - if ( ! (istype(user, /mob/living/carbon/human) || \ - istype(user, /mob/living/silicon) || \ - istype(user, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) - user << "\red You don't have the dexterity to use this [src]!" - return 0 - if(user.restrained()) - user << "\red You must have free hands to use this [src]" - return 0 - if(user.lying) - user << "\red You must stand to use this [src]!" - return 0 - if (istype(user, /mob/living/silicon)) - var/mob/living/silicon/ai/AI = user - var/mob/living/silicon/robot/robot = user - if ( \ - src.aidisabled || \ - malfhack && istype(malfai) && \ - ( \ - (istype(AI) && (malfai!=AI && malfai != AI.parent)) || \ - (istype(robot) && (robot in malfai.connected_robots)) \ - ) \ - ) - if(!loud) - user << "\red \The [src] have AI control disabled!" - return 0 - else - if ((!in_range(src, user) || !istype(src.loc, /turf))) - return 0 - - var/mob/living/carbon/human/H = user - if (istype(H)) - if(H.getBrainLoss() >= 60) - for(var/mob/M in viewers(src, null)) - M << "\red [H] stares cluelessly at [src] and drools." - return 0 - else if(prob(H.getBrainLoss())) - user << "\red You momentarily forget how to use [src]." - return 0 - return 1 - -/obj/machinery/power/apc/Topic(href, href_list) - if(..()) - return 0 - - if(!can_use(usr, 1)) - return 0 - - if (href_list["lock"]) - coverlocked = !coverlocked - - else if (href_list["breaker"]) - toggle_breaker() - - else if (href_list["cmode"]) - chargemode = !chargemode - if(!chargemode) - charging = 0 - update_icon() - - else if (href_list["eqp"]) - var/val = text2num(href_list["eqp"]) - equipment = setsubsystem(val) - update_icon() - update() - - else if (href_list["lgt"]) - var/val = text2num(href_list["lgt"]) - lighting = setsubsystem(val) - update_icon() - update() - - else if (href_list["env"]) - var/val = text2num(href_list["env"]) - environ = setsubsystem(val) - update_icon() - update() - - else if (href_list["overload"]) - if(istype(usr, /mob/living/silicon)) - src.overload_lighting() - - else if (href_list["malfhack"]) - var/mob/living/silicon/ai/malfai = usr - if(get_malf_status(malfai)==1) - if (malfai.malfhacking) - malfai << "You are already hacking an APC." - return 1 - malfai << "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process." - malfai.malfhack = src - malfai.malfhacking = 1 - sleep(600) - if(src) - if (!src.aidisabled) - malfai.malfhack = null - malfai.malfhacking = 0 - locked = 1 - if (ticker.mode.config_tag == "malfunction") - if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) - ticker.mode:apcs++ - if(usr:parent) - src.malfai = usr:parent - else - src.malfai = usr - malfai << "Hack complete. The APC is now under your exclusive control." - update_icon() - - else if (href_list["occupyapc"]) - if(get_malf_status(usr)) - malfoccupy(usr) - - else if (href_list["deoccupyapc"]) - if(get_malf_status(usr)) - malfvacate() - - else if (href_list["toggleaccess"]) - if(istype(usr, /mob/living/silicon)) - if(emagged || (stat & (BROKEN|MAINT))) - usr << "The APC does not respond to the command." - else - locked = !locked - update_icon() - - return 1 - -/obj/machinery/power/apc/proc/toggle_breaker() - operating = !operating - - if(malfai) - if (ticker.mode.config_tag == "malfunction") - if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) - operating ? ticker.mode:apcs++ : ticker.mode:apcs-- - - src.update() - update_icon() - -/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf) - if(!istype(malf)) - return - if(istype(malf.loc, /obj/machinery/power/apc)) // Already in an APC - malf << "You must evacuate your current apc first." - return - if(!malf.can_shunt) - malf << "You cannot shunt." - return - if(src.z != 1) - return - src.occupier = new /mob/living/silicon/ai(src,malf.laws,null,1) - src.occupier.adjustOxyLoss(malf.getOxyLoss()) - if(!findtext(src.occupier.name,"APC Copy")) - src.occupier.name = "[malf.name] APC Copy" - if(malf.parent) - src.occupier.parent = malf.parent - else - src.occupier.parent = malf - malf.mind.transfer_to(src.occupier) - src.occupier.eyeobj.name = "[src.occupier.name] (AI Eye)" - if(malf.parent) - qdel(malf) - src.occupier.verbs += /mob/living/silicon/ai/proc/corereturn - src.occupier.verbs += /datum/game_mode/malfunction/proc/takeover - src.occupier.cancel_camera() - if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) - for(var/obj/item/weapon/pinpointer/point in world) - point.the_disk = src //the pinpointer will detect the shunted AI - - -/obj/machinery/power/apc/proc/malfvacate(var/forced) - if(!src.occupier) - return - if(src.occupier.parent && src.occupier.parent.stat != 2) - src.occupier.mind.transfer_to(src.occupier.parent) - src.occupier.parent.adjustOxyLoss(src.occupier.getOxyLoss()) - src.occupier.parent.cancel_camera() - qdel(src.occupier) - if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) - for(var/obj/item/weapon/pinpointer/point in world) - for(var/datum/mind/AI_mind in ticker.mode.malf_ai) - var/mob/living/silicon/ai/A = AI_mind.current // the current mob the mind owns - if(A.stat != DEAD) - point.the_disk = A //The pinpointer tracks the AI back into its core. - - else - src.occupier << "\red Primary core damaged, unable to return core processes." - if(forced) - src.occupier.loc = src.loc - src.occupier.death() - src.occupier.gib() - for(var/obj/item/weapon/pinpointer/point in world) - point.the_disk = null //the pinpointer will go back to pointing at the nuke disc. - - -/obj/machinery/power/apc/proc/ion_act() - //intended to be exactly the same as an AI malf attack - if(!src.malfhack && src.z == 1) - if(prob(3)) - src.locked = 1 - if (src.cell.charge > 0) -// world << "\red blew APC in [src.loc.loc]" - src.cell.charge = 0 - cell.corrupt() - src.malfhack = 1 - update_icon() - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() - smoke.set_up(3, 0, src.loc) - smoke.attach(src) - smoke.start() - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - for(var/mob/M in viewers(src)) - M.show_message("\red The [src.name] suddenly lets out a blast of smoke and some sparks!", 3, "\red You hear sizzling electronics.", 2) - - -/obj/machinery/power/apc/surplus() - if(terminal) - return terminal.surplus() - else - return 0 - -/obj/machinery/power/apc/add_load(var/amount) - if(terminal && terminal.powernet) - terminal.powernet.newload += amount - -/obj/machinery/power/apc/avail() - if(terminal) - return terminal.avail() - else - return 0 - -/obj/machinery/power/apc/process() - - if(stat & (BROKEN|MAINT)) - return - if(!area.requires_power) - return - - - /* - if (equipment > 1) // off=0, off auto=1, on=2, on auto=3 - use_power(src.equip_consumption, EQUIP) - if (lighting > 1) // off=0, off auto=1, on=2, on auto=3 - use_power(src.light_consumption, LIGHT) - if (environ > 1) // off=0, off auto=1, on=2, on auto=3 - use_power(src.environ_consumption, ENVIRON) - - area.calc_lighting() */ - - lastused_light = area.usage(LIGHT) - lastused_equip = area.usage(EQUIP) - lastused_environ = area.usage(ENVIRON) - area.clear_usage() - - lastused_total = lastused_light + lastused_equip + lastused_environ - - //store states to update icon if any change - var/last_lt = lighting - var/last_eq = equipment - var/last_en = environ - var/last_ch = charging - - var/excess = surplus() - - if(!src.avail()) - main_status = 0 - else if(excess < 0) - main_status = 1 - else - main_status = 2 - - var/perapc = 0 - if(terminal && terminal.powernet) - perapc = terminal.powernet.perapc - - //if(debug) - // world.log << "Status: [main_status] - Excess: [excess] - Last Equip: [lastused_equip] - Last Light: [lastused_light] - Longterm: [longtermpower]" - - if(cell && !shorted) - - - // draw power from cell as before - var/cellused = min(cell.charge, CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell - cell.use(cellused) - - if(excess > 0 || perapc > lastused_total) // if power excess, or enough anyway, recharge the cell - // by the same amount just used - cell.give(cellused) - add_load(cellused/CELLRATE) // add the load used to recharge the cell - - - else // no excess, and not enough per-apc - - if( (cell.charge/CELLRATE+perapc) >= lastused_total) // can we draw enough from cell+grid to cover last usage? - - cell.charge = min(cell.maxcharge, cell.charge + CELLRATE * perapc) //recharge with what we can - add_load(perapc) // so draw what we can from the grid - charging = 0 - - else // not enough power available to run the last tick! - charging = 0 - chargecount = 0 - // This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room. - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - - - // set channels depending on how much charge we have left - - // Allow the APC to operate as normal if the cell can charge - if(charging && longtermpower < 10) - longtermpower += 1 - else if(longtermpower > -10) - longtermpower -= 2 - - if(cell.charge <= 0) // zero charge, turn all off - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - area.poweralert(0, src) - else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment - equipment = autoset(equipment, 2) - lighting = autoset(lighting, 2) - environ = autoset(environ, 1) - area.poweralert(0, src) - else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment - equipment = autoset(equipment, 2) - lighting = autoset(lighting, 1) - environ = autoset(environ, 1) - area.poweralert(0, src) - else // otherwise all can be on - equipment = autoset(equipment, 1) - lighting = autoset(lighting, 1) - environ = autoset(environ, 1) - area.poweralert(1, src) - if(cell.percent() > 75) - area.poweralert(1, src) - - // now trickle-charge the cell - - if(chargemode && charging == 1 && operating) - if(excess > 0) // check to make sure we have enough to charge - // Max charge is perapc share, capped to cell capacity, or % per second constant (Whichever is smallest) -/* var/ch = min(perapc, (cell.maxcharge - cell.charge), (cell.maxcharge*CHARGELEVEL)) - add_load(ch) // Removes the power we're taking from the grid - cell.give(ch) // actually recharge the cell -*/ - var/ch = min(perapc*CELLRATE, (cell.maxcharge - cell.charge), (cell.maxcharge*CHARGELEVEL)) - add_load(ch/CELLRATE) // Removes the power we're taking from the grid - cell.give(ch) // actually recharge the cell - - else - charging = 0 // stop charging - chargecount = 0 - - // show cell as fully charged if so - - if(cell.charge >= cell.maxcharge) - charging = 2 - - if(chargemode) - if(!charging) - if(excess > cell.maxcharge*CHARGELEVEL) - chargecount++ - else - chargecount = 0 - - if(chargecount == 10) - - chargecount = 0 - charging = 1 - - else // chargemode off - charging = 0 - chargecount = 0 - - else // no cell, switch everything off - - charging = 0 - chargecount = 0 - equipment = autoset(equipment, 0) - lighting = autoset(lighting, 0) - environ = autoset(environ, 0) - area.poweralert(0, src) - - // update icon & area power if anything changed - - if(last_lt != lighting || last_eq != equipment || last_en != environ) - queue_icon_update() - update() - else if (last_ch != charging) - queue_icon_update() - -// val 0=off, 1=off(auto) 2=on 3=on(auto) -// on 0=off, 1=on, 2=autooff - -obj/machinery/power/apc/proc/autoset(var/val, var/on) - if(on==0) - if(val==2) // if on, return off - return 0 - else if(val==3) // if auto-on, return auto-off - return 1 - - else if(on==1) - if(val==1) // if auto-off, return auto-on - return 3 - - else if(on==2) - if(val==3) // if auto-on, return auto-off - return 1 - - return val - -// damage and destruction acts - -/obj/machinery/power/apc/meteorhit(var/obj/O as obj) - - set_broken() - return - -/obj/machinery/power/apc/emp_act(severity) - if(cell) - cell.emp_act(severity) - if(occupier) - occupier.emp_act(severity) - lighting = 0 - equipment = 0 - environ = 0 - spawn(600) - equipment = 3 - environ = 3 - ..() - -/obj/machinery/power/apc/ex_act(severity) - - switch(severity) - if(1.0) - //set_broken() //now Del() do what we need - if (cell) - cell.ex_act(1.0) // more lags woohoo - qdel(src) - return - if(2.0) - if (prob(50)) - set_broken() - if (cell && prob(50)) - cell.ex_act(2.0) - if(3.0) - if (prob(25)) - set_broken() - if (cell && prob(25)) - cell.ex_act(3.0) - return - -/obj/machinery/power/apc/blob_act() - if (prob(75)) - set_broken() - if (cell && prob(5)) - cell.blob_act() - -/obj/machinery/power/apc/disconnect_terminal() - if(terminal) - terminal.master = null - terminal = null - -/obj/machinery/power/apc/proc/set_broken() - if(malfai && operating) - if (ticker.mode.config_tag == "malfunction") - if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) - ticker.mode:apcs-- - stat |= BROKEN - operating = 0 - if(occupier) - malfvacate(1) - update_icon() - update() - -// overload all the lights in this APC area - -/obj/machinery/power/apc/proc/overload_lighting() - if(/* !get_connection() || */ !operating || shorted) - return - if( cell && cell.charge>=20) - cell.use(20); - spawn(0) - for(var/area/A in area.related) - for(var/obj/machinery/light/L in A) - L.on = 1 - L.broken() - sleep(1) - -/obj/machinery/power/apc/proc/shock(mob/user, prb) - if(!prob(prb)) - return 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - if(isalien(user)) - return 0 - if (electrocute_mob(user, src, src)) - return 1 - else - return 0 - -/obj/machinery/power/apc/proc/setsubsystem(val) - if(cell && cell.charge > 0) - return (val==1) ? 0 : val - else if(val == 3) - return 1 - else - return 0 - -#undef APC_UPDATE_ICON_COOLDOWN +#define APC_WIRE_IDSCAN 1 +#define APC_WIRE_MAIN_POWER1 2 +#define APC_WIRE_MAIN_POWER2 3 +#define APC_WIRE_AI_CONTROL 4 + +//update_state +#define UPSTATE_CELL_IN 1 +#define UPSTATE_OPENED1 2 +#define UPSTATE_OPENED2 4 +#define UPSTATE_MAINT 8 +#define UPSTATE_BROKE 16 +#define UPSTATE_BLUESCREEN 32 +#define UPSTATE_WIREEXP 64 +#define UPSTATE_ALLGOOD 128 + +//update_overlay +#define APC_UPOVERLAY_CHARGEING0 1 +#define APC_UPOVERLAY_CHARGEING1 2 +#define APC_UPOVERLAY_CHARGEING2 4 +#define APC_UPOVERLAY_EQUIPMENT0 8 +#define APC_UPOVERLAY_EQUIPMENT1 16 +#define APC_UPOVERLAY_EQUIPMENT2 32 +#define APC_UPOVERLAY_LIGHTING0 64 +#define APC_UPOVERLAY_LIGHTING1 128 +#define APC_UPOVERLAY_LIGHTING2 256 +#define APC_UPOVERLAY_ENVIRON0 512 +#define APC_UPOVERLAY_ENVIRON1 1024 +#define APC_UPOVERLAY_ENVIRON2 2048 +#define APC_UPOVERLAY_LOCKED 4096 +#define APC_UPOVERLAY_OPERATING 8192 + + +#define APC_UPDATE_ICON_COOLDOWN 200 // 20 seconds + +// the Area Power Controller (APC), formerly Power Distribution Unit (PDU) +// one per area, needs wire conection to power network + +// controls power to devices in that area +// may be opened to change power cell +// three different channels (lighting/equipment/environ) - may each be set to on, off, or auto + + +//NOTE: STUFF STOLEN FROM AIRLOCK.DM thx + + +/obj/machinery/power/apc + name = "area power controller" + desc = "A control terminal for the area electrical systems." + + icon_state = "apc0" + anchored = 1 + use_power = 0 + req_access = list(access_engine_equip) + var/area/area + var/areastring = null + var/obj/item/weapon/stock_parts/cell/cell + var/start_charge = 90 // initial cell charge % + var/cell_type = 2500 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500 + var/opened = 0 //0=closed, 1=opened, 2=cover removed + var/shorted = 0 + var/lighting = 3 + var/equipment = 3 + var/environ = 3 + var/operating = 1 + var/charging = 0 + var/chargemode = 1 + var/chargecount = 0 + var/locked = 1 + var/coverlocked = 1 + var/aidisabled = 0 + var/tdir = null + var/obj/machinery/power/terminal/terminal = null + var/lastused_light = 0 + var/lastused_equip = 0 + var/lastused_environ = 0 + var/lastused_total = 0 + var/main_status = 0 + var/wiresexposed = 0 + powernet = 0 // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :( + var/malfhack = 0 //New var for my changes to AI malf. --NeoFite + var/mob/living/silicon/ai/malfai = null //See above --NeoFite +// luminosity = 1 + var/has_electronics = 0 // 0 - none, 1 - plugged in, 2 - secured by screwdriver + var/overload = 1 //used for the Blackout malf module + var/beenhit = 0 // used for counting how many times it has been hit, used for Aliens at the moment + var/mob/living/silicon/ai/occupier = null + var/longtermpower = 10 + var/datum/wires/apc/wires = null + var/auto_name = 0 + var/update_state = -1 + var/update_overlay = -1 + var/global/status_overlays = 0 + var/updating_icon = 0 + var/global/list/status_overlays_lock + var/global/list/status_overlays_charging + var/global/list/status_overlays_equipment + var/global/list/status_overlays_lighting + var/global/list/status_overlays_environ + +/obj/machinery/power/apc/updateDialog() + if (stat & (BROKEN|MAINT)) + return + ..() + +/obj/machinery/power/apc/connect_to_network() + //Override because the APC does not directly connect to the network; it goes through a terminal. + //The terminal is what the power computer looks for anyway. + if(!terminal) + make_terminal() + if(terminal) + terminal.connect_to_network() + +/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) + ..() + wires = new(src) + // offset 24 pixels in direction of dir + // this allows the APC to be embedded in a wall, yet still inside an area + if (building) + dir = ndir + src.tdir = dir // to fix Vars bug + dir = SOUTH + + if(auto_name) + name = "[get_area(src)] APC" + + pixel_x = (src.tdir & 3)? 0 : (src.tdir == 4 ? 24 : -24) + pixel_y = (src.tdir & 3)? (src.tdir ==1 ? 24 : -24) : 0 + if (building==0) + init() + else + area = src.loc.loc:master + opened = 1 + operating = 0 + name = "[area.name] APC" + stat |= MAINT + src.update_icon() + spawn(5) + src.update() + +/obj/machinery/power/apc/Destroy() + if(malfai && operating) + if (ticker.mode.config_tag == "malfunction") + if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) + ticker.mode:apcs-- + area.power_light = 0 + area.power_equip = 0 + area.power_environ = 0 + area.power_change() + if(occupier) + malfvacate(1) + del(wires) + if(cell) + qdel(cell) + if(terminal) + disconnect_terminal() + ..() + +/obj/machinery/power/apc/proc/make_terminal() + // create a terminal object at the same position as original turf loc + // wires will attach to this + terminal = new/obj/machinery/power/terminal(src.loc) + terminal.dir = tdir + terminal.master = src + +/obj/machinery/power/apc/proc/init() + has_electronics = 2 //installed and secured + // is starting with a power cell installed, create it and set its charge level + if(cell_type) + src.cell = new/obj/item/weapon/stock_parts/cell(src) + cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively) + cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value) + + var/area/A = src.loc.loc + + //if area isn't specified use current + if(isarea(A) && src.areastring == null) + src.area = A + else + src.area = get_area_name(areastring) + update_icon() + + make_terminal() + + spawn(5) + src.update() + +/obj/machinery/power/apc/examine() + set src in oview(1) + + if(usr /*&& !usr.stat*/) + ..() + if(stat & BROKEN) + usr << "Looks broken." + return + if(opened) + if(has_electronics && terminal) + usr << "The cover is [opened==2?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]." + else if (!has_electronics && terminal) + usr << "There are some wires but no any electronics." + else if (has_electronics && !terminal) + usr << "Electronics installed but not wired." + else /* if (!has_electronics && !terminal) */ + usr << "There is no electronics nor connected wires." + + else + if (stat & MAINT) + usr << "The cover is closed. Something wrong with it: it doesn't work." + else if (malfhack) + usr << "The cover is broken. It may be hard to force it open." + else + usr << "The cover is closed." + + +// update the APC icon to show the three base states +// also add overlays for indicator lights +/obj/machinery/power/apc/update_icon() + if (!status_overlays) + status_overlays = 1 + status_overlays_lock = new + status_overlays_charging = new + status_overlays_equipment = new + status_overlays_lighting = new + status_overlays_environ = new + + status_overlays_lock.len = 2 + status_overlays_charging.len = 3 + status_overlays_equipment.len = 4 + status_overlays_lighting.len = 4 + status_overlays_environ.len = 4 + + status_overlays_lock[1] = image(icon, "apcox-0") // 0=blue 1=red + status_overlays_lock[2] = image(icon, "apcox-1") + + status_overlays_charging[1] = image(icon, "apco3-0") + status_overlays_charging[2] = image(icon, "apco3-1") + status_overlays_charging[3] = image(icon, "apco3-2") + + status_overlays_equipment[1] = image(icon, "apco0-0") + status_overlays_equipment[2] = image(icon, "apco0-1") + status_overlays_equipment[3] = image(icon, "apco0-2") + status_overlays_equipment[4] = image(icon, "apco0-3") + + status_overlays_lighting[1] = image(icon, "apco1-0") + status_overlays_lighting[2] = image(icon, "apco1-1") + status_overlays_lighting[3] = image(icon, "apco1-2") + status_overlays_lighting[4] = image(icon, "apco1-3") + + status_overlays_environ[1] = image(icon, "apco2-0") + status_overlays_environ[2] = image(icon, "apco2-1") + status_overlays_environ[3] = image(icon, "apco2-2") + status_overlays_environ[4] = image(icon, "apco2-3") + + var/update = check_updates() //returns 0 if no need to update icons. + // 1 if we need to update the icon_state + // 2 if we need to update the overlays + if(!update) + return + + if(update & 1) // Updating the icon state + if(update_state & UPSTATE_ALLGOOD) + icon_state = "apc0" + else if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2)) + var/basestate = "apc[ cell ? "2" : "1" ]" + if(update_state & UPSTATE_OPENED1) + if(update_state & (UPSTATE_MAINT|UPSTATE_BROKE)) + icon_state = "apcmaint" //disabled APC cannot hold cell + else + icon_state = basestate + else if(update_state & UPSTATE_OPENED2) + if (update_state & UPSTATE_BROKE || malfhack) + icon_state = "[basestate]-b-nocover" + else + icon_state = "[basestate]-nocover" + else if(update_state & UPSTATE_BROKE) + icon_state = "apc-b" + else if(update_state & UPSTATE_BLUESCREEN) + icon_state = "apcemag" + else if(update_state & UPSTATE_WIREEXP) + icon_state = "apcewires" + + if(!(update_state & UPSTATE_ALLGOOD)) + if(overlays.len) + overlays = 0 + + if(update & 2) + if(overlays.len) + overlays.len = 0 + if(!(stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD) + overlays += status_overlays_lock[locked+1] + overlays += status_overlays_charging[charging+1] + if(operating) + overlays += status_overlays_equipment[equipment+1] + overlays += status_overlays_lighting[lighting+1] + overlays += status_overlays_environ[environ+1] + + +/obj/machinery/power/apc/proc/check_updates() + + var/last_update_state = update_state + var/last_update_overlay = update_overlay + update_state = 0 + update_overlay = 0 + + if(cell) + update_state |= UPSTATE_CELL_IN + if(stat & BROKEN) + update_state |= UPSTATE_BROKE + if(stat & MAINT) + update_state |= UPSTATE_MAINT + if(opened) + if(opened==1) + update_state |= UPSTATE_OPENED1 + if(opened==2) + update_state |= UPSTATE_OPENED2 + else if(emagged || malfai) + update_state |= UPSTATE_BLUESCREEN + else if(wiresexposed) + update_state |= UPSTATE_WIREEXP + if(update_state <= 1) + update_state |= UPSTATE_ALLGOOD + + if(operating) + update_overlay |= APC_UPOVERLAY_OPERATING + + if(update_state & UPSTATE_ALLGOOD) + if(locked) + update_overlay |= APC_UPOVERLAY_LOCKED + + if(!charging) + update_overlay |= APC_UPOVERLAY_CHARGEING0 + else if(charging == 1) + update_overlay |= APC_UPOVERLAY_CHARGEING1 + else if(charging == 2) + update_overlay |= APC_UPOVERLAY_CHARGEING2 + + if (!equipment) + update_overlay |= APC_UPOVERLAY_EQUIPMENT0 + else if(equipment == 1) + update_overlay |= APC_UPOVERLAY_EQUIPMENT1 + else if(equipment == 2) + update_overlay |= APC_UPOVERLAY_EQUIPMENT2 + + if(!lighting) + update_overlay |= APC_UPOVERLAY_LIGHTING0 + else if(lighting == 1) + update_overlay |= APC_UPOVERLAY_LIGHTING1 + else if(lighting == 2) + update_overlay |= APC_UPOVERLAY_LIGHTING2 + + if(!environ) + update_overlay |= APC_UPOVERLAY_ENVIRON0 + else if(environ==1) + update_overlay |= APC_UPOVERLAY_ENVIRON1 + else if(environ==2) + update_overlay |= APC_UPOVERLAY_ENVIRON2 + + + var/results = 0 + if(last_update_state == update_state && last_update_overlay == update_overlay) + return 0 + if(last_update_state != update_state) + results += 1 + if(last_update_overlay != update_overlay) + results += 2 + return results + +// Used in process so it doesn't update the icon too much +/obj/machinery/power/apc/proc/queue_icon_update() + + if(!updating_icon) + updating_icon = 1 + // Start the update + spawn(APC_UPDATE_ICON_COOLDOWN) + update_icon() + updating_icon = 0 + +//attack with an item - open/close cover, insert cell, or (un)lock interface + +/obj/machinery/power/apc/attackby(obj/item/W, mob/user) + + if (istype(user, /mob/living/silicon) && get_dist(src,user)>1) + return src.attack_hand(user) + if (istype(W, /obj/item/weapon/crowbar) && opened) + if (has_electronics==1) + if (terminal) + user << "\red Disconnect wires first." + return + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues + if(do_after(user, 50)) + has_electronics = 0 + if ((stat & BROKEN) || malfhack) + user.visible_message(\ + "\red [user.name] has broken the power control board inside [src.name]!",\ + "You broke the charred power control board and remove the remains.", + "You hear a crack!") + //ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0 + else + user.visible_message(\ + "\red [user.name] has removed the power control board from [src.name]!",\ + "You remove the power control board.") + new /obj/item/weapon/module/power_control(loc) + else if (opened!=2) //cover isn't removed + opened = 0 + update_icon() + else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || malfhack) ) + if(coverlocked && !(stat & MAINT)) + user << "\red The cover is locked and cannot be opened." + return + else + opened = 1 + update_icon() + else if (istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside + if(cell) + user << "There is a power cell already installed." + return + else + if (stat & MAINT) + user << "\red There is no connector for your power cell." + return + user.drop_item() + W.loc = src + cell = W + user.visible_message(\ + "\red [user.name] has inserted the power cell to [src.name]!",\ + "You insert the power cell.") + chargecount = 0 + update_icon() + else if (istype(W, /obj/item/weapon/screwdriver)) // haxing + if(opened) + if (cell) + user << "\red Close the APC first." //Less hints more mystery! + return + else + if (has_electronics==1 && terminal) + has_electronics = 2 + stat &= ~MAINT + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You screw the circuit electronics into place." + else if (has_electronics==2) + has_electronics = 1 + stat |= MAINT + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You unfasten the electronics." + else /* has_electronics==0 */ + user << "\red There is nothing to secure." + return + update_icon() + else if(emagged) + user << "The interface is broken." + else + wiresexposed = !wiresexposed + user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]" + update_icon() + + else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card + if(emagged) + user << "The interface is broken." + else if(opened) + user << "You must close the cover to swipe an ID card." + else if(wiresexposed) + user << "You must close the panel" + else if(stat & (BROKEN|MAINT)) + user << "Nothing happens." + else + if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN)) + locked = !locked + user << "You [ locked ? "lock" : "unlock"] the APC interface." + update_icon() + else + user << "\red Access denied." + else if (istype(W, /obj/item/weapon/card/emag) && !(emagged || malfhack)) // trying to unlock with an emag card + if(opened) + user << "You must close the cover to swipe an ID card." + else if(wiresexposed) + user << "You must close the panel first" + else if(stat & (BROKEN|MAINT)) + user << "Nothing happens." + else + flick("apc-spark", src) + if (do_after(user,6)) + if(prob(50)) + emagged = 1 + locked = 0 + user << "You emag the APC interface." + update_icon() + else + user << "You fail to [ locked ? "unlock" : "lock"] the APC interface." + else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2) + if (src.loc:intact) + user << "\red You must remove the floor plating in front of the APC first." + return + var/obj/item/stack/cable_coil/C = W + if(C.amount < 10) + user << "\red You need more wires." + return + user << "You start adding cables to the APC frame..." + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20) && C.amount >= 10) + var/turf/T = get_turf(src) + var/obj/structure/cable/N = T.get_cable_node() + if (prob(50) && electrocute_mob(usr, N, N)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + return + C.use(10) + user.visible_message(\ + "\red [user.name] has added cables to the APC frame!",\ + "You add cables to the APC frame.") + make_terminal() + terminal.connect_to_network() + else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2) + if (src.loc:intact) + user << "\red You must remove the floor plating in front of the APC first." + return + user << "You begin to cut the cables..." + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 50)) + if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + return + new /obj/item/stack/cable_coil(loc,10) + user.visible_message(\ + "\red [user.name] cut the cables and dismantled the power terminal.",\ + "You cut the cables and dismantle the power terminal.") + qdel(terminal) + else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack)) + user << "You trying to insert the power control board into the frame..." + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 10)) + has_electronics = 1 + user << "You place the power control board inside the frame." + qdel(W) + else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) + user << "\red You cannot put the board inside, the frame is damaged." + return + else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal) + var/obj/item/weapon/weldingtool/WT = W + if (WT.get_fuel() < 3) + user << "\blue You need more welding fuel to complete this task." + return + user << "You start welding the APC frame..." + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(do_after(user, 50)) + if(!src || !WT.remove_fuel(3, user)) return + if (emagged || malfhack || (stat & BROKEN) || opened==2) + new /obj/item/stack/sheet/metal(loc) + user.visible_message(\ + "\red [src] has been cut apart by [user.name] with the weldingtool.",\ + "You disassembled the broken APC frame.",\ + "\red You hear welding.") + else + new /obj/item/apc_frame(loc) + user.visible_message(\ + "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ + "You cut the APC frame from the wall.",\ + "\red You hear welding.") + qdel(src) + return + else if (istype(W, /obj/item/apc_frame) && opened && emagged) + emagged = 0 + if (opened==2) + opened = 1 + user.visible_message(\ + "\red [user.name] has replaced the damaged APC frontal panel with a new one.",\ + "You replace the damaged APC frontal panel with a new one.") + qdel(W) + update_icon() + else if (istype(W, /obj/item/apc_frame) && opened && ((stat & BROKEN) || malfhack)) + if (has_electronics) + user << "You cannot repair this APC until you remove the electronics still inside." + return + user << "You begin to replace the damaged APC frame..." + if(do_after(user, 50)) + user.visible_message(\ + "\red [user.name] has replaced the damaged APC frame with new one.",\ + "You replace the damaged APC frame with new one.") + qdel(W) + stat &= ~BROKEN + malfai = null + malfhack = 0 + if (opened==2) + opened = 1 + update_icon() + else + if ( ((stat & BROKEN) || malfhack) \ + && !opened \ + && W.force >= 5 \ + && W.w_class >= 3.0 \ + && prob(20) ) + opened = 2 + user.visible_message("\red The APC cover was knocked down with the [W.name] by [user.name]!", \ + "\red You knock down the APC cover with your [W.name]!", \ + "You hear bang") + update_icon() + else + if (istype(user, /mob/living/silicon)) + return src.attack_hand(user) + if (!opened && wiresexposed && \ + (istype(W, /obj/item/device/multitool) || \ + istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler))) + return src.attack_hand(user) + user.visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!", \ + "\red You hit the [src.name] with your [W.name]!", \ + "You hear bang") + +// attack with hand - remove cell (if cover open) or interact with the APC + +/obj/machinery/power/apc/attack_hand(mob/user) +// if (!can_use(user)) This already gets called in interact() and in topic() +// return + if(!user) + return + src.add_fingerprint(user) + if(usr == user && opened && (!issilicon(user))) + if(cell) + user.put_in_hands(cell) + cell.add_fingerprint(user) + cell.updateicon() + + src.cell = null + user.visible_message("\red [user.name] removes the power cell from [src.name]!", "You remove the power cell.") + //user << "You remove the power cell." + charging = 0 + src.update_icon() + return + if(stat & (BROKEN|MAINT)) + return + // do APC interaction + src.interact(user) + +/obj/machinery/power/apc/attack_alien(mob/living/carbon/alien/humanoid/user) + if(!user) + return + user.visible_message("\red [user.name] slashes at the [src.name]!", "\blue You slash at the [src.name]!") + playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) + + var/allcut = wires.IsAllCut() + + if(beenhit >= pick(3, 4) && wiresexposed != 1) + wiresexposed = 1 + src.update_icon() + src.visible_message("\red The [src.name]'s cover flies open, exposing the wires!") + + else if(wiresexposed == 1 && allcut == 0) + wires.CutAll() + src.update_icon() + src.visible_message("\red The [src.name]'s wires are shredded!") + else + beenhit += 1 + return + + +/obj/machinery/power/apc/interact(mob/user) + if(!user) + return + + if(wiresexposed /*&& (!istype(user, /mob/living/silicon))*/) //Commented out the typecheck to allow engiborgs to repair damaged apcs. + wires.Interact(user) + + return ui_interact(user) + + +/obj/machinery/power/apc/proc/get_malf_status(mob/user) + if (ticker && ticker.mode && (user.mind in ticker.mode.malf_ai) && istype(user, /mob/living/silicon/ai)) + if (src.malfai == (user:parent ? user:parent : user)) + if (src.occupier == user) + return 3 // 3 = User is shunted in this APC + else if (istype(user.loc, /obj/machinery/power/apc)) + return 4 // 4 = User is shunted in another APC + else + return 2 // 2 = APC hacked by user, and user is in its core. + else + return 1 // 1 = APC not hacked. + else + return 0 // 0 = User is not a Malf AI + + +/obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + if(!user) + return + + var/list/data = list( + "locked" = locked, + "isOperating" = operating, + "externalPower" = main_status, + "powerCellStatus" = cell ? cell.percent() : null, + "chargeMode" = chargemode, + "chargingStatus" = charging, + "totalLoad" = lastused_equip + lastused_light + lastused_environ, + "coverLocked" = coverlocked, + "siliconUser" = istype(user, /mob/living/silicon), + "malfStatus" = get_malf_status(user), + + "powerChannels" = list( + list( + "title" = "Equipment", + "powerLoad" = lastused_equip, + "status" = equipment, + "topicParams" = list( + "auto" = list("eqp" = 3), + "on" = list("eqp" = 2), + "off" = list("eqp" = 1) + ) + ), + list( + "title" = "Lighting", + "powerLoad" = lastused_light, + "status" = lighting, + "topicParams" = list( + "auto" = list("lgt" = 3), + "on" = list("lgt" = 2), + "off" = list("lgt" = 1) + ) + ), + list( + "title" = "Environment", + "powerLoad" = lastused_environ, + "status" = environ, + "topicParams" = list( + "auto" = list("env" = 3), + "on" = list("env" = 2), + "off" = list("env" = 1) + ) + ) + ) + ) + + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + if (!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 465 : 420) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every Master Controller tick + ui.set_auto_update(1) + +/obj/machinery/power/apc/proc/report() + return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" + +/obj/machinery/power/apc/proc/update() + if(operating && !shorted) + area.power_light = (lighting > 1) + area.power_equip = (equipment > 1) + area.power_environ = (environ > 1) +// if (area.name == "AI Chamber") +// spawn(10) +// world << " [area.name] [area.power_equip]" + else + area.power_light = 0 + area.power_equip = 0 + area.power_environ = 0 +// if (area.name == "AI Chamber") +// world << "[area.power_equip]" + area.power_change() + +/obj/machinery/power/apc/proc/isWireCut(var/wireIndex) + return wires.IsIndexCut(wireIndex) + + +/obj/machinery/power/apc/proc/can_use(mob/user as mob, var/loud = 0) //used by attack_hand() and Topic() + if (user.stat) + user << "\red You must be conscious to use this [src]!" + return 0 + if(!user.client) + return 0 + if ( ! (istype(user, /mob/living/carbon/human) || \ + istype(user, /mob/living/silicon) || \ + istype(user, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) + user << "\red You don't have the dexterity to use this [src]!" + return 0 + if(user.restrained()) + user << "\red You must have free hands to use this [src]" + return 0 + if(user.lying) + user << "\red You must stand to use this [src]!" + return 0 + if (istype(user, /mob/living/silicon)) + var/mob/living/silicon/ai/AI = user + var/mob/living/silicon/robot/robot = user + if ( \ + src.aidisabled || \ + malfhack && istype(malfai) && \ + ( \ + (istype(AI) && (malfai!=AI && malfai != AI.parent)) || \ + (istype(robot) && (robot in malfai.connected_robots)) \ + ) \ + ) + if(!loud) + user << "\red \The [src] have AI control disabled!" + return 0 + else + if ((!in_range(src, user) || !istype(src.loc, /turf))) + return 0 + + var/mob/living/carbon/human/H = user + if (istype(H)) + if(H.getBrainLoss() >= 60) + for(var/mob/M in viewers(src, null)) + M << "\red [H] stares cluelessly at [src] and drools." + return 0 + else if(prob(H.getBrainLoss())) + user << "\red You momentarily forget how to use [src]." + return 0 + return 1 + +/obj/machinery/power/apc/Topic(href, href_list) + if(..()) + return 0 + + if(!can_use(usr, 1)) + return 0 + + if (href_list["lock"]) + coverlocked = !coverlocked + + else if (href_list["breaker"]) + toggle_breaker() + + else if (href_list["cmode"]) + chargemode = !chargemode + if(!chargemode) + charging = 0 + update_icon() + + else if (href_list["eqp"]) + var/val = text2num(href_list["eqp"]) + equipment = setsubsystem(val) + update_icon() + update() + + else if (href_list["lgt"]) + var/val = text2num(href_list["lgt"]) + lighting = setsubsystem(val) + update_icon() + update() + + else if (href_list["env"]) + var/val = text2num(href_list["env"]) + environ = setsubsystem(val) + update_icon() + update() + + else if (href_list["overload"]) + if(istype(usr, /mob/living/silicon)) + src.overload_lighting() + + else if (href_list["malfhack"]) + var/mob/living/silicon/ai/malfai = usr + if(get_malf_status(malfai)==1) + if (malfai.malfhacking) + malfai << "You are already hacking an APC." + return 1 + malfai << "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process." + malfai.malfhack = src + malfai.malfhacking = 1 + sleep(600) + if(src) + if (!src.aidisabled) + malfai.malfhack = null + malfai.malfhacking = 0 + locked = 1 + if (ticker.mode.config_tag == "malfunction") + if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) + ticker.mode:apcs++ + if(usr:parent) + src.malfai = usr:parent + else + src.malfai = usr + malfai << "Hack complete. The APC is now under your exclusive control." + update_icon() + + else if (href_list["occupyapc"]) + if(get_malf_status(usr)) + malfoccupy(usr) + + else if (href_list["deoccupyapc"]) + if(get_malf_status(usr)) + malfvacate() + + else if (href_list["toggleaccess"]) + if(istype(usr, /mob/living/silicon)) + if(emagged || (stat & (BROKEN|MAINT))) + usr << "The APC does not respond to the command." + else + locked = !locked + update_icon() + + return 1 + +/obj/machinery/power/apc/proc/toggle_breaker() + operating = !operating + + if(malfai) + if (ticker.mode.config_tag == "malfunction") + if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) + operating ? ticker.mode:apcs++ : ticker.mode:apcs-- + + src.update() + update_icon() + +/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf) + if(!istype(malf)) + return + if(istype(malf.loc, /obj/machinery/power/apc)) // Already in an APC + malf << "You must evacuate your current apc first." + return + if(!malf.can_shunt) + malf << "You cannot shunt." + return + if(src.z != 1) + return + src.occupier = new /mob/living/silicon/ai(src,malf.laws,null,1) + src.occupier.adjustOxyLoss(malf.getOxyLoss()) + if(!findtext(src.occupier.name,"APC Copy")) + src.occupier.name = "[malf.name] APC Copy" + if(malf.parent) + src.occupier.parent = malf.parent + else + src.occupier.parent = malf + malf.mind.transfer_to(src.occupier) + src.occupier.eyeobj.name = "[src.occupier.name] (AI Eye)" + if(malf.parent) + qdel(malf) + src.occupier.verbs += /mob/living/silicon/ai/proc/corereturn + src.occupier.verbs += /datum/game_mode/malfunction/proc/takeover + src.occupier.cancel_camera() + if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) + for(var/obj/item/weapon/pinpointer/point in world) + point.the_disk = src //the pinpointer will detect the shunted AI + + +/obj/machinery/power/apc/proc/malfvacate(var/forced) + if(!src.occupier) + return + if(src.occupier.parent && src.occupier.parent.stat != 2) + src.occupier.mind.transfer_to(src.occupier.parent) + src.occupier.parent.adjustOxyLoss(src.occupier.getOxyLoss()) + src.occupier.parent.cancel_camera() + qdel(src.occupier) + if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) + for(var/obj/item/weapon/pinpointer/point in world) + for(var/datum/mind/AI_mind in ticker.mode.malf_ai) + var/mob/living/silicon/ai/A = AI_mind.current // the current mob the mind owns + if(A.stat != DEAD) + point.the_disk = A //The pinpointer tracks the AI back into its core. + + else + src.occupier << "\red Primary core damaged, unable to return core processes." + if(forced) + src.occupier.loc = src.loc + src.occupier.death() + src.occupier.gib() + for(var/obj/item/weapon/pinpointer/point in world) + point.the_disk = null //the pinpointer will go back to pointing at the nuke disc. + + +/obj/machinery/power/apc/proc/ion_act() + //intended to be exactly the same as an AI malf attack + if(!src.malfhack && src.z == 1) + if(prob(3)) + src.locked = 1 + if (src.cell.charge > 0) +// world << "\red blew APC in [src.loc.loc]" + src.cell.charge = 0 + cell.corrupt() + src.malfhack = 1 + update_icon() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(3, 0, src.loc) + smoke.attach(src) + smoke.start() + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + for(var/mob/M in viewers(src)) + M.show_message("\red The [src.name] suddenly lets out a blast of smoke and some sparks!", 3, "\red You hear sizzling electronics.", 2) + + +/obj/machinery/power/apc/surplus() + if(terminal) + return terminal.surplus() + else + return 0 + +/obj/machinery/power/apc/add_load(var/amount) + if(terminal && terminal.powernet) + terminal.powernet.newload += amount + +/obj/machinery/power/apc/avail() + if(terminal) + return terminal.avail() + else + return 0 + +/obj/machinery/power/apc/process() + + if(stat & (BROKEN|MAINT)) + return + if(!area.requires_power) + return + + + /* + if (equipment > 1) // off=0, off auto=1, on=2, on auto=3 + use_power(src.equip_consumption, EQUIP) + if (lighting > 1) // off=0, off auto=1, on=2, on auto=3 + use_power(src.light_consumption, LIGHT) + if (environ > 1) // off=0, off auto=1, on=2, on auto=3 + use_power(src.environ_consumption, ENVIRON) + + area.calc_lighting() */ + + lastused_light = area.usage(LIGHT) + lastused_equip = area.usage(EQUIP) + lastused_environ = area.usage(ENVIRON) + area.clear_usage() + + lastused_total = lastused_light + lastused_equip + lastused_environ + + //store states to update icon if any change + var/last_lt = lighting + var/last_eq = equipment + var/last_en = environ + var/last_ch = charging + + var/excess = surplus() + + if(!src.avail()) + main_status = 0 + else if(excess < 0) + main_status = 1 + else + main_status = 2 + + var/perapc = 0 + if(terminal && terminal.powernet) + perapc = terminal.powernet.perapc + + //if(debug) + // world.log << "Status: [main_status] - Excess: [excess] - Last Equip: [lastused_equip] - Last Light: [lastused_light] - Longterm: [longtermpower]" + + if(cell && !shorted) + + + // draw power from cell as before + var/cellused = min(cell.charge, CELLRATE * lastused_total) // clamp deduction to a max, amount left in cell + cell.use(cellused) + + if(excess > 0 || perapc > lastused_total) // if power excess, or enough anyway, recharge the cell + // by the same amount just used + cell.give(cellused) + add_load(cellused/CELLRATE) // add the load used to recharge the cell + + + else // no excess, and not enough per-apc + + if( (cell.charge/CELLRATE+perapc) >= lastused_total) // can we draw enough from cell+grid to cover last usage? + + cell.charge = min(cell.maxcharge, cell.charge + CELLRATE * perapc) //recharge with what we can + add_load(perapc) // so draw what we can from the grid + charging = 0 + + else // not enough power available to run the last tick! + charging = 0 + chargecount = 0 + // This turns everything off in the case that there is still a charge left on the battery, just not enough to run the room. + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + + + // set channels depending on how much charge we have left + + // Allow the APC to operate as normal if the cell can charge + if(charging && longtermpower < 10) + longtermpower += 1 + else if(longtermpower > -10) + longtermpower -= 2 + + if(cell.charge <= 0) // zero charge, turn all off + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + area.poweralert(0, src) + else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment + equipment = autoset(equipment, 2) + lighting = autoset(lighting, 2) + environ = autoset(environ, 1) + area.poweralert(0, src) + else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment + equipment = autoset(equipment, 2) + lighting = autoset(lighting, 1) + environ = autoset(environ, 1) + area.poweralert(0, src) + else // otherwise all can be on + equipment = autoset(equipment, 1) + lighting = autoset(lighting, 1) + environ = autoset(environ, 1) + area.poweralert(1, src) + if(cell.percent() > 75) + area.poweralert(1, src) + + // now trickle-charge the cell + + if(chargemode && charging == 1 && operating) + if(excess > 0) // check to make sure we have enough to charge + // Max charge is perapc share, capped to cell capacity, or % per second constant (Whichever is smallest) +/* var/ch = min(perapc, (cell.maxcharge - cell.charge), (cell.maxcharge*CHARGELEVEL)) + add_load(ch) // Removes the power we're taking from the grid + cell.give(ch) // actually recharge the cell +*/ + var/ch = min(perapc*CELLRATE, (cell.maxcharge - cell.charge), (cell.maxcharge*CHARGELEVEL)) + add_load(ch/CELLRATE) // Removes the power we're taking from the grid + cell.give(ch) // actually recharge the cell + + else + charging = 0 // stop charging + chargecount = 0 + + // show cell as fully charged if so + + if(cell.charge >= cell.maxcharge) + charging = 2 + + if(chargemode) + if(!charging) + if(excess > cell.maxcharge*CHARGELEVEL) + chargecount++ + else + chargecount = 0 + + if(chargecount == 10) + + chargecount = 0 + charging = 1 + + else // chargemode off + charging = 0 + chargecount = 0 + + else // no cell, switch everything off + + charging = 0 + chargecount = 0 + equipment = autoset(equipment, 0) + lighting = autoset(lighting, 0) + environ = autoset(environ, 0) + area.poweralert(0, src) + + // update icon & area power if anything changed + + if(last_lt != lighting || last_eq != equipment || last_en != environ) + queue_icon_update() + update() + else if (last_ch != charging) + queue_icon_update() + +// val 0=off, 1=off(auto) 2=on 3=on(auto) +// on 0=off, 1=on, 2=autooff + +obj/machinery/power/apc/proc/autoset(var/val, var/on) + if(on==0) + if(val==2) // if on, return off + return 0 + else if(val==3) // if auto-on, return auto-off + return 1 + + else if(on==1) + if(val==1) // if auto-off, return auto-on + return 3 + + else if(on==2) + if(val==3) // if auto-on, return auto-off + return 1 + + return val + +// damage and destruction acts + +/obj/machinery/power/apc/meteorhit(var/obj/O as obj) + + set_broken() + return + +/obj/machinery/power/apc/emp_act(severity) + if(cell) + cell.emp_act(severity) + if(occupier) + occupier.emp_act(severity) + lighting = 0 + equipment = 0 + environ = 0 + spawn(600) + equipment = 3 + environ = 3 + ..() + +/obj/machinery/power/apc/ex_act(severity) + + switch(severity) + if(1.0) + //set_broken() //now Del() do what we need + if (cell) + cell.ex_act(1.0) // more lags woohoo + qdel(src) + return + if(2.0) + if (prob(50)) + set_broken() + if (cell && prob(50)) + cell.ex_act(2.0) + if(3.0) + if (prob(25)) + set_broken() + if (cell && prob(25)) + cell.ex_act(3.0) + return + +/obj/machinery/power/apc/blob_act() + if (prob(75)) + set_broken() + if (cell && prob(5)) + cell.blob_act() + +/obj/machinery/power/apc/disconnect_terminal() + if(terminal) + terminal.master = null + terminal = null + +/obj/machinery/power/apc/proc/set_broken() + if(malfai && operating) + if (ticker.mode.config_tag == "malfunction") + if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) + ticker.mode:apcs-- + stat |= BROKEN + operating = 0 + if(occupier) + malfvacate(1) + update_icon() + update() + +// overload all the lights in this APC area + +/obj/machinery/power/apc/proc/overload_lighting() + if(/* !get_connection() || */ !operating || shorted) + return + if( cell && cell.charge>=20) + cell.use(20); + spawn(0) + for(var/area/A in area.related) + for(var/obj/machinery/light/L in A) + L.on = 1 + L.broken() + sleep(1) + +/obj/machinery/power/apc/proc/shock(mob/user, prb) + if(!prob(prb)) + return 0 + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + if(isalien(user)) + return 0 + if (electrocute_mob(user, src, src)) + return 1 + else + return 0 + +/obj/machinery/power/apc/proc/setsubsystem(val) + if(cell && cell.charge > 0) + return (val==1) ? 0 : val + else if(val == 3) + return 1 + else + return 0 + +#undef APC_UPDATE_ICON_COOLDOWN diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 8adf3ec6d29..ba011c6777c 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -1,635 +1,635 @@ -// attach a wire to a power machine - leads from the turf you are standing on - -/obj/machinery/power/attackby(obj/item/weapon/W, mob/user) - - if(istype(W, /obj/item/stack/cable_coil)) - - var/obj/item/stack/cable_coil/coil = W - - var/turf/T = user.loc - - if(T.intact || !istype(T, /turf/simulated/floor)) - return - - if(get_dist(src, user) > 1) - return - - if(!directwired) // only for attaching to directwired machines - return - - coil.turf_place(T, user) - return - else - ..() - return - -/obj/structure/cable - level = 1 - anchored =1 - var/datum/powernet/powernet - name = "power cable" - desc = "A flexible superconducting cable for heavy-duty power transfer" - icon = 'icons/obj/power_cond/power_cond_red.dmi' - icon_state = "0-1" - var/d1 = 0 - var/d2 = 1 - layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 - var/cable_color = "red" - -/obj/structure/cable/yellow - cable_color = "yellow" - icon = 'icons/obj/power_cond/power_cond_yellow.dmi' - -/obj/structure/cable/green - cable_color = "green" - icon = 'icons/obj/power_cond/power_cond_green.dmi' - -/obj/structure/cable/blue - cable_color = "blue" - icon = 'icons/obj/power_cond/power_cond_blue.dmi' - -/obj/structure/cable/pink - cable_color = "pink" - icon = 'icons/obj/power_cond/power_cond_pink.dmi' - -/obj/structure/cable/orange - cable_color = "orange" - icon = 'icons/obj/power_cond/power_cond_orange.dmi' - -/obj/structure/cable/cyan - cable_color = "cyan" - icon = 'icons/obj/power_cond/power_cond_cyan.dmi' - -/obj/structure/cable/white - cable_color = "white" - icon = 'icons/obj/power_cond/power_cond_white.dmi' - -// the power cable object - -/obj/structure/cable/New() - ..() - - - // ensure d1 & d2 reflect the icon_state for entering and exiting cable - - var/dash = findtext(icon_state, "-") - - d1 = text2num( copytext( icon_state, 1, dash ) ) - - d2 = text2num( copytext( icon_state, dash+1 ) ) - - var/turf/T = src.loc // hide if turf is not intact - - if(level==1) hide(T.intact) - cable_list += src - - -/obj/structure/cable/Destroy() // called when a cable is deleted -// if(!defer_powernet_rebuild) // set if network will be rebuilt manually - if(powernet) - powernet.cut_cable(src) // update the powernets - cable_list -= src - ..() // then go ahead and delete the cable - -/obj/structure/cable/hide(var/i) - - if(level == 1 && istype(loc, /turf)) - invisibility = i ? 101 : 0 - updateicon() - -/obj/structure/cable/proc/updateicon() - if(invisibility) - icon_state = "[d1]-[d2]-f" - else - icon_state = "[d1]-[d2]" - - -// returns the powernet this cable belongs to -/obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete - return powernet - -/obj/structure/cable/attack_tk(mob/user) - return - -/obj/structure/cable/attackby(obj/item/W, mob/user) - - var/turf/T = src.loc - if(T.intact) - return - - if(istype(W, /obj/item/weapon/wirecutters)) - - if (shock(user, 50)) - return - - if(src.d1) // 0-X cables are 1 unit, X-X cables are 2 units long - new/obj/item/stack/cable_coil(T, 2, cable_color) - else - new/obj/item/stack/cable_coil(T, 1, cable_color) - - for(var/mob/O in viewers(src, null)) - O.show_message("\red [user] cuts the cable.", 1) - - investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") - - qdel(src) - return - - - else if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = W - coil.cable_join(src, user) - - else if(istype(W, /obj/item/device/multitool)) - - var/datum/powernet/PN = get_powernet() // find the powernet - - if(PN && (PN.avail > 0)) // is it powered? - user << "\red [PN.avail]W in power network." - - else - user << "\red The cable is not powered." - - shock(user, 5, 0.2) - - else - if (W.flags & CONDUCT) - shock(user, 50, 0.7) - - src.add_fingerprint(user) - -// shock the user with probability prb - -/obj/structure/cable/proc/shock(mob/user, prb, var/siemens_coeff = 1.0) - if(!prob(prb)) - return 0 - if (electrocute_mob(user, powernet, src, siemens_coeff)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - return 1 - else - return 0 - -/obj/structure/cable/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - if(2.0) - if (prob(50)) - new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) - qdel(src) - - if(3.0) - if (prob(25)) - new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) - qdel(src) - return - -// the cable coil object, used for laying cable - -#define MAXCOIL 30 -/obj/item/stack/cable_coil - name = "cable coil" - icon = 'icons/obj/power.dmi' - icon_state = "coil_red" - item_state = "coil_red" - amount = MAXCOIL - item_color = "red" - desc = "A coil of power cable." - throwforce = 0 - w_class = 2.0 - throw_speed = 3 - throw_range = 5 - m_amt = 50 - g_amt = 20 - flags = CONDUCT - slot_flags = SLOT_BELT - attack_verb = list("whipped", "lashed", "disciplined", "flogged") - - suicide_act(mob/user) - if(locate(/obj/structure/stool) in user.loc) - viewers(user) << "[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide." - else - viewers(user) << "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." - return(OXYLOSS) - -/obj/item/stack/cable_coil/attack(mob/living/carbon/human/H, mob/user) - if(!istype(H)) - return ..() - - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting)) - if(affecting.status == ORGAN_ROBOTIC) - src.item_heal_robotic(H, user, 0, 30) - src.use(1) - return - else - return ..() - -/obj/item/stack/cable_coil/New(loc, amount = MAXCOIL, var/param_color = null) - ..() - src.amount = amount - if (param_color) - item_color = param_color - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) - update_icon() - -/obj/item/stack/cable_coil/update_icon() - if (!item_color) - item_color = pick("red", "yellow", "blue", "green") - if(amount == 1) - icon_state = "coil_[item_color]1" - name = "cable piece" - else if(amount == 2) - icon_state = "coil_[item_color]2" - name = "cable piece" - else - icon_state = "coil_[item_color]" - name = "cable coil" - -/obj/item/stack/cable_coil/examine() - set src in view(1) - - if(amount == 1) - usr << "A short piece of power cable." - else if(amount == 2) - usr << "A piece of power cable." - else - usr << "A coil of power cable. There are [amount] lengths of cable in the coil." - -/obj/item/stack/cable_coil/verb/make_restraint() - set name = "Make Cable Restraints" - set category = "Object" - var/mob/M = usr - - if(ishuman(M) && !M.restrained() && !M.stat && !M.paralysis && ! M.stunned) - if(!istype(usr.loc,/turf)) return - if(src.amount <= 14) - usr << "\red You need at least 15 lengths to make restraints!" - return - var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc) - B.icon_state = "cuff_[item_color]" - usr << "\blue You wind some cable together to make some restraints." - src.use(15) - else - usr << "\blue You cannot do that." - ..() - -/obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) - ..() - if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1) - src.amount-- - new/obj/item/stack/cable_coil(user.loc, 1,item_color) - user << "You cut a piece off the cable coil." - src.update_icon() - return - - else if( istype(W, /obj/item/stack/cable_coil) ) - var/obj/item/stack/cable_coil/C = W - if(C.amount >= MAXCOIL) - user << "The coil is too long, you cannot add any more cable to it." - return - - if( (C.amount + src.amount <= MAXCOIL) ) - user << "You join the cable coils together." - C.give(src.amount) // give it cable - src.use(src.amount) // make sure this one cleans up right - return - - else - var/amt = MAXCOIL - C.amount - user << "You transfer [amt] length\s of cable from one coil to the other." - C.give(amt) - src.use(amt) - return - -/obj/item/stack/cable_coil/use(var/used) - if(src.amount < used) - return 0 - else if (src.amount == used) - if(ismob(loc)) //handle mob icon update - var/mob/M = loc - M.unEquip(src) - qdel(src) - return 1 - else - amount -= used - update_icon() - return 1 - -/obj/item/stack/cable_coil/proc/give(var/extra) - if(amount + extra > MAXCOIL) - amount = MAXCOIL - else - amount += extra - update_icon() - -// called when cable_coil is clicked on a turf/simulated/floor - -/obj/item/stack/cable_coil/proc/turf_place(turf/simulated/floor/F, mob/user) - - if(!isturf(user.loc)) - return - - if(get_dist(F,user) > 1) - user << "You can't lay cable at a place that far away." - return - - if(F.intact) // if floor is intact, complain - user << "You can't lay cable there unless the floor tiles are removed." - return - - else - var/dirn - - if(user.loc == F) - dirn = user.dir // if laying on the tile we're on, lay in the direction we're facing - else - dirn = get_dir(F, user) - - for(var/obj/structure/cable/LC in F) - if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0)) - user << "There's already a cable at that position." - return - - var/obj/structure/cable/C = new(F) - - C.cableColor(item_color) - - C.d1 = 0 - C.d2 = dirn - C.add_fingerprint(user) - C.updateicon() - - C.powernet = new() - powernets += C.powernet - C.powernet.cables += C - - C.mergeConnectedNetworks(C.d2) - C.mergeConnectedNetworksOnTurf() - - - use(1) - if (C.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) - qdel(C) - //src.laying = 1 - //last = C - - -// called when cable_coil is click on an installed obj/cable - -/obj/item/stack/cable_coil/proc/cable_join(obj/structure/cable/C, mob/user) - - var/turf/U = user.loc - if(!isturf(U)) - return - - var/turf/T = C.loc - - if(!isturf(T) || T.intact) // sanity checks, also stop use interacting with T-scanner revealed cable - return - - if(get_dist(C, user) > 1) // make sure it's close enough - user << "You can't lay cable at a place that far away." - return - - - if(U == T) // do nothing if we clicked a cable we're standing on - return // may change later if can think of something logical to do - - var/dirn = get_dir(C, user) - - if(C.d1 == dirn || C.d2 == dirn) // one end of the clicked cable is pointing towards us - if(U.intact) // can't place a cable if the floor is complete - user << "You can't lay cable there unless the floor tiles are removed." - return - else - // cable is pointing at us, we're standing on an open tile - // so create a stub pointing at the clicked cable on our tile - - var/fdirn = turn(dirn, 180) // the opposite direction - - for(var/obj/structure/cable/LC in U) // check to make sure there's not a cable there already - if(LC.d1 == fdirn || LC.d2 == fdirn) - user << "There's already a cable at that position." - return - - var/obj/structure/cable/NC = new(U) - NC.cableColor(item_color) - - NC.d1 = 0 - NC.d2 = fdirn - NC.add_fingerprint() - NC.updateicon() - - if(C.powernet) - NC.powernet = C.powernet - NC.powernet.cables += NC - NC.mergeConnectedNetworks(NC.d2) - NC.mergeConnectedNetworksOnTurf() - use(1) - if (NC.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) - qdel(NC) - - return - else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub - // if so, make it a full cable pointing from it's old direction to our dirn - var/nd1 = C.d2 // these will be the new directions - var/nd2 = dirn - - - if(nd1 > nd2) // swap directions to match icons/states - nd1 = dirn - nd2 = C.d2 - - - for(var/obj/structure/cable/LC in T) // check to make sure there's no matching cable - if(LC == C) // skip the cable we're interacting with - continue - if((LC.d1 == nd1 && LC.d2 == nd2) || (LC.d1 == nd2 && LC.d2 == nd1) ) // make sure no cable matches either direction - user << "There's already a cable at that position." - return - - - C.cableColor(item_color) - - C.d1 = nd1 - C.d2 = nd2 - - C.add_fingerprint() - C.updateicon() - - - C.mergeConnectedNetworks(C.d1) - C.mergeConnectedNetworks(C.d2) - C.mergeConnectedNetworksOnTurf() - - use(1) - if (C.shock(user, 50)) - if (prob(50)) //fail - new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) - qdel(C) - return - - C.denode()// this call may have disconnected some cables that terminated on the centre of the turf, if so split the powernets. - return - -/obj/structure/cable/proc/mergeConnectedNetworks(var/direction) - var/turf/TB - if(!(d1 == direction || d2 == direction)) - return - TB = get_step(src, direction) - - for(var/obj/structure/cable/TC in TB) - - if(!TC) - continue - - if(src == TC) - continue - - var/fdir = (!direction)? 0 : turn(direction, 180) - - if(TC.d1 == fdir || TC.d2 == fdir) - - if(!TC.powernet) - TC.powernet = new() - powernets += TC.powernet - TC.powernet.cables += TC - - if(powernet) - merge_powernets(powernet,TC.powernet) - else - powernet = TC.powernet - powernet.cables += src - - - - -/obj/structure/cable/proc/mergeConnectedNetworksOnTurf() - if(!powernet) - powernet = new() - powernets += powernet - powernet.cables += src - - for(var/AM in loc) - if(istype(AM,/obj/structure/cable)) - var/obj/structure/cable/C = AM - if(C.d1 == 0 && d1==0) //only connected if they are both "nodes" - if(C.powernet == powernet) continue - if(C.powernet) - merge_powernets(powernet, C.powernet) - else - C.powernet = powernet - powernet.cables += C - - else if(istype(AM,/obj/machinery/power/apc)) - var/obj/machinery/power/apc/N = AM - if(!N.terminal) continue - if(N.terminal.powernet) - merge_powernets(powernet, N.terminal.powernet) - else - N.terminal.powernet = powernet - powernet.nodes[N.terminal] = N.terminal - - else if(istype(AM,/obj/machinery/power)) - var/obj/machinery/power/M = AM - if(M.powernet == powernet) continue - if(M.powernet) - merge_powernets(powernet, M.powernet) - else - M.powernet = powernet - powernet.nodes[M] = M - - -obj/structure/cable/proc/cableColor(var/colorC) - var/color_n = "red" - if(colorC) - color_n = colorC - cable_color = color_n - switch(colorC) - if("red") - icon = 'icons/obj/power_cond/power_cond_red.dmi' - if("yellow") - icon = 'icons/obj/power_cond/power_cond_yellow.dmi' - if("green") - icon = 'icons/obj/power_cond/power_cond_green.dmi' - if("blue") - icon = 'icons/obj/power_cond/power_cond_blue.dmi' - if("pink") - icon = 'icons/obj/power_cond/power_cond_pink.dmi' - if("orange") - icon = 'icons/obj/power_cond/power_cond_orange.dmi' - if("cyan") - icon = 'icons/obj/power_cond/power_cond_cyan.dmi' - if("white") - icon = 'icons/obj/power_cond/power_cond_white.dmi' - -obj/structure/cable/proc/add_avail(var/amount) - if(powernet) - powernet.newavail += amount - -obj/structure/cable/proc/add_load(var/amount) - if(powernet) - powernet.newload += amount - -obj/structure/cable/proc/surplus() - if(powernet) - return powernet.avail-powernet.load - else - return 0 - -obj/structure/cable/proc/avail() - if(powernet) - return powernet.avail - else - return 0 - -/obj/item/stack/cable_coil/cut - item_state = "coil_red2" - -/obj/item/stack/cable_coil/cut/New(loc) - ..() - src.amount = rand(1,2) - pixel_x = rand(-2,2) - pixel_y = rand(-2,2) - update_icon() - -/obj/item/stack/cable_coil/yellow - item_color = "yellow" - icon_state = "coil_yellow" - -/obj/item/stack/cable_coil/blue - item_color = "blue" - icon_state = "coil_blue" - item_state = "coil_blue" - -/obj/item/stack/cable_coil/green - item_color = "green" - icon_state = "coil_green" - -/obj/item/stack/cable_coil/pink - item_color = "pink" - icon_state = "coil_pink" - -/obj/item/stack/cable_coil/orange - item_color = "orange" - icon_state = "coil_orange" - -/obj/item/stack/cable_coil/cyan - item_color = "cyan" - icon_state = "coil_cyan" - -/obj/item/stack/cable_coil/white - item_color = "white" - icon_state = "coil_white" - -/obj/item/stack/cable_coil/random/New() - item_color = pick("red","yellow","green","blue","pink") - icon_state = "coil_[item_color]" - ..() +// attach a wire to a power machine - leads from the turf you are standing on + +/obj/machinery/power/attackby(obj/item/weapon/W, mob/user) + + if(istype(W, /obj/item/stack/cable_coil)) + + var/obj/item/stack/cable_coil/coil = W + + var/turf/T = user.loc + + if(T.intact || !istype(T, /turf/simulated/floor)) + return + + if(get_dist(src, user) > 1) + return + + if(!directwired) // only for attaching to directwired machines + return + + coil.turf_place(T, user) + return + else + ..() + return + +/obj/structure/cable + level = 1 + anchored =1 + var/datum/powernet/powernet + name = "power cable" + desc = "A flexible superconducting cable for heavy-duty power transfer" + icon = 'icons/obj/power_cond/power_cond_red.dmi' + icon_state = "0-1" + var/d1 = 0 + var/d2 = 1 + layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 + var/cable_color = "red" + +/obj/structure/cable/yellow + cable_color = "yellow" + icon = 'icons/obj/power_cond/power_cond_yellow.dmi' + +/obj/structure/cable/green + cable_color = "green" + icon = 'icons/obj/power_cond/power_cond_green.dmi' + +/obj/structure/cable/blue + cable_color = "blue" + icon = 'icons/obj/power_cond/power_cond_blue.dmi' + +/obj/structure/cable/pink + cable_color = "pink" + icon = 'icons/obj/power_cond/power_cond_pink.dmi' + +/obj/structure/cable/orange + cable_color = "orange" + icon = 'icons/obj/power_cond/power_cond_orange.dmi' + +/obj/structure/cable/cyan + cable_color = "cyan" + icon = 'icons/obj/power_cond/power_cond_cyan.dmi' + +/obj/structure/cable/white + cable_color = "white" + icon = 'icons/obj/power_cond/power_cond_white.dmi' + +// the power cable object + +/obj/structure/cable/New() + ..() + + + // ensure d1 & d2 reflect the icon_state for entering and exiting cable + + var/dash = findtext(icon_state, "-") + + d1 = text2num( copytext( icon_state, 1, dash ) ) + + d2 = text2num( copytext( icon_state, dash+1 ) ) + + var/turf/T = src.loc // hide if turf is not intact + + if(level==1) hide(T.intact) + cable_list += src + + +/obj/structure/cable/Destroy() // called when a cable is deleted +// if(!defer_powernet_rebuild) // set if network will be rebuilt manually + if(powernet) + powernet.cut_cable(src) // update the powernets + cable_list -= src + ..() // then go ahead and delete the cable + +/obj/structure/cable/hide(var/i) + + if(level == 1 && istype(loc, /turf)) + invisibility = i ? 101 : 0 + updateicon() + +/obj/structure/cable/proc/updateicon() + if(invisibility) + icon_state = "[d1]-[d2]-f" + else + icon_state = "[d1]-[d2]" + + +// returns the powernet this cable belongs to +/obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete + return powernet + +/obj/structure/cable/attack_tk(mob/user) + return + +/obj/structure/cable/attackby(obj/item/W, mob/user) + + var/turf/T = src.loc + if(T.intact) + return + + if(istype(W, /obj/item/weapon/wirecutters)) + + if (shock(user, 50)) + return + + if(src.d1) // 0-X cables are 1 unit, X-X cables are 2 units long + new/obj/item/stack/cable_coil(T, 2, cable_color) + else + new/obj/item/stack/cable_coil(T, 1, cable_color) + + for(var/mob/O in viewers(src, null)) + O.show_message("\red [user] cuts the cable.", 1) + + investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") + + qdel(src) + return + + + else if(istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = W + coil.cable_join(src, user) + + else if(istype(W, /obj/item/device/multitool)) + + var/datum/powernet/PN = get_powernet() // find the powernet + + if(PN && (PN.avail > 0)) // is it powered? + user << "\red [PN.avail]W in power network." + + else + user << "\red The cable is not powered." + + shock(user, 5, 0.2) + + else + if (W.flags & CONDUCT) + shock(user, 50, 0.7) + + src.add_fingerprint(user) + +// shock the user with probability prb + +/obj/structure/cable/proc/shock(mob/user, prb, var/siemens_coeff = 1.0) + if(!prob(prb)) + return 0 + if (electrocute_mob(user, powernet, src, siemens_coeff)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + return 1 + else + return 0 + +/obj/structure/cable/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + if(2.0) + if (prob(50)) + new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) + qdel(src) + + if(3.0) + if (prob(25)) + new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color) + qdel(src) + return + +// the cable coil object, used for laying cable + +#define MAXCOIL 30 +/obj/item/stack/cable_coil + name = "cable coil" + icon = 'icons/obj/power.dmi' + icon_state = "coil_red" + item_state = "coil_red" + amount = MAXCOIL + item_color = "red" + desc = "A coil of power cable." + throwforce = 0 + w_class = 2.0 + throw_speed = 3 + throw_range = 5 + m_amt = 50 + g_amt = 20 + flags = CONDUCT + slot_flags = SLOT_BELT + attack_verb = list("whipped", "lashed", "disciplined", "flogged") + + suicide_act(mob/user) + if(locate(/obj/structure/stool) in user.loc) + viewers(user) << "[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide." + else + viewers(user) << "[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide." + return(OXYLOSS) + +/obj/item/stack/cable_coil/attack(mob/living/carbon/human/H, mob/user) + if(!istype(H)) + return ..() + + var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting)) + if(affecting.status == ORGAN_ROBOTIC) + src.item_heal_robotic(H, user, 0, 30) + src.use(1) + return + else + return ..() + +/obj/item/stack/cable_coil/New(loc, amount = MAXCOIL, var/param_color = null) + ..() + src.amount = amount + if (param_color) + item_color = param_color + pixel_x = rand(-2,2) + pixel_y = rand(-2,2) + update_icon() + +/obj/item/stack/cable_coil/update_icon() + if (!item_color) + item_color = pick("red", "yellow", "blue", "green") + if(amount == 1) + icon_state = "coil_[item_color]1" + name = "cable piece" + else if(amount == 2) + icon_state = "coil_[item_color]2" + name = "cable piece" + else + icon_state = "coil_[item_color]" + name = "cable coil" + +/obj/item/stack/cable_coil/examine() + set src in view(1) + + if(amount == 1) + usr << "A short piece of power cable." + else if(amount == 2) + usr << "A piece of power cable." + else + usr << "A coil of power cable. There are [amount] lengths of cable in the coil." + +/obj/item/stack/cable_coil/verb/make_restraint() + set name = "Make Cable Restraints" + set category = "Object" + var/mob/M = usr + + if(ishuman(M) && !M.restrained() && !M.stat && !M.paralysis && ! M.stunned) + if(!istype(usr.loc,/turf)) return + if(src.amount <= 14) + usr << "\red You need at least 15 lengths to make restraints!" + return + var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc) + B.icon_state = "cuff_[item_color]" + usr << "\blue You wind some cable together to make some restraints." + src.use(15) + else + usr << "\blue You cannot do that." + ..() + +/obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) + ..() + if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1) + src.amount-- + new/obj/item/stack/cable_coil(user.loc, 1,item_color) + user << "You cut a piece off the cable coil." + src.update_icon() + return + + else if( istype(W, /obj/item/stack/cable_coil) ) + var/obj/item/stack/cable_coil/C = W + if(C.amount >= MAXCOIL) + user << "The coil is too long, you cannot add any more cable to it." + return + + if( (C.amount + src.amount <= MAXCOIL) ) + user << "You join the cable coils together." + C.give(src.amount) // give it cable + src.use(src.amount) // make sure this one cleans up right + return + + else + var/amt = MAXCOIL - C.amount + user << "You transfer [amt] length\s of cable from one coil to the other." + C.give(amt) + src.use(amt) + return + +/obj/item/stack/cable_coil/use(var/used) + if(src.amount < used) + return 0 + else if (src.amount == used) + if(ismob(loc)) //handle mob icon update + var/mob/M = loc + M.unEquip(src) + qdel(src) + return 1 + else + amount -= used + update_icon() + return 1 + +/obj/item/stack/cable_coil/proc/give(var/extra) + if(amount + extra > MAXCOIL) + amount = MAXCOIL + else + amount += extra + update_icon() + +// called when cable_coil is clicked on a turf/simulated/floor + +/obj/item/stack/cable_coil/proc/turf_place(turf/simulated/floor/F, mob/user) + + if(!isturf(user.loc)) + return + + if(get_dist(F,user) > 1) + user << "You can't lay cable at a place that far away." + return + + if(F.intact) // if floor is intact, complain + user << "You can't lay cable there unless the floor tiles are removed." + return + + else + var/dirn + + if(user.loc == F) + dirn = user.dir // if laying on the tile we're on, lay in the direction we're facing + else + dirn = get_dir(F, user) + + for(var/obj/structure/cable/LC in F) + if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0)) + user << "There's already a cable at that position." + return + + var/obj/structure/cable/C = new(F) + + C.cableColor(item_color) + + C.d1 = 0 + C.d2 = dirn + C.add_fingerprint(user) + C.updateicon() + + C.powernet = new() + powernets += C.powernet + C.powernet.cables += C + + C.mergeConnectedNetworks(C.d2) + C.mergeConnectedNetworksOnTurf() + + + use(1) + if (C.shock(user, 50)) + if (prob(50)) //fail + new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) + qdel(C) + //src.laying = 1 + //last = C + + +// called when cable_coil is click on an installed obj/cable + +/obj/item/stack/cable_coil/proc/cable_join(obj/structure/cable/C, mob/user) + + var/turf/U = user.loc + if(!isturf(U)) + return + + var/turf/T = C.loc + + if(!isturf(T) || T.intact) // sanity checks, also stop use interacting with T-scanner revealed cable + return + + if(get_dist(C, user) > 1) // make sure it's close enough + user << "You can't lay cable at a place that far away." + return + + + if(U == T) // do nothing if we clicked a cable we're standing on + return // may change later if can think of something logical to do + + var/dirn = get_dir(C, user) + + if(C.d1 == dirn || C.d2 == dirn) // one end of the clicked cable is pointing towards us + if(U.intact) // can't place a cable if the floor is complete + user << "You can't lay cable there unless the floor tiles are removed." + return + else + // cable is pointing at us, we're standing on an open tile + // so create a stub pointing at the clicked cable on our tile + + var/fdirn = turn(dirn, 180) // the opposite direction + + for(var/obj/structure/cable/LC in U) // check to make sure there's not a cable there already + if(LC.d1 == fdirn || LC.d2 == fdirn) + user << "There's already a cable at that position." + return + + var/obj/structure/cable/NC = new(U) + NC.cableColor(item_color) + + NC.d1 = 0 + NC.d2 = fdirn + NC.add_fingerprint() + NC.updateicon() + + if(C.powernet) + NC.powernet = C.powernet + NC.powernet.cables += NC + NC.mergeConnectedNetworks(NC.d2) + NC.mergeConnectedNetworksOnTurf() + use(1) + if (NC.shock(user, 50)) + if (prob(50)) //fail + new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) + qdel(NC) + + return + else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub + // if so, make it a full cable pointing from it's old direction to our dirn + var/nd1 = C.d2 // these will be the new directions + var/nd2 = dirn + + + if(nd1 > nd2) // swap directions to match icons/states + nd1 = dirn + nd2 = C.d2 + + + for(var/obj/structure/cable/LC in T) // check to make sure there's no matching cable + if(LC == C) // skip the cable we're interacting with + continue + if((LC.d1 == nd1 && LC.d2 == nd2) || (LC.d1 == nd2 && LC.d2 == nd1) ) // make sure no cable matches either direction + user << "There's already a cable at that position." + return + + + C.cableColor(item_color) + + C.d1 = nd1 + C.d2 = nd2 + + C.add_fingerprint() + C.updateicon() + + + C.mergeConnectedNetworks(C.d1) + C.mergeConnectedNetworks(C.d2) + C.mergeConnectedNetworksOnTurf() + + use(1) + if (C.shock(user, 50)) + if (prob(50)) //fail + new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) + qdel(C) + return + + C.denode()// this call may have disconnected some cables that terminated on the centre of the turf, if so split the powernets. + return + +/obj/structure/cable/proc/mergeConnectedNetworks(var/direction) + var/turf/TB + if(!(d1 == direction || d2 == direction)) + return + TB = get_step(src, direction) + + for(var/obj/structure/cable/TC in TB) + + if(!TC) + continue + + if(src == TC) + continue + + var/fdir = (!direction)? 0 : turn(direction, 180) + + if(TC.d1 == fdir || TC.d2 == fdir) + + if(!TC.powernet) + TC.powernet = new() + powernets += TC.powernet + TC.powernet.cables += TC + + if(powernet) + merge_powernets(powernet,TC.powernet) + else + powernet = TC.powernet + powernet.cables += src + + + + +/obj/structure/cable/proc/mergeConnectedNetworksOnTurf() + if(!powernet) + powernet = new() + powernets += powernet + powernet.cables += src + + for(var/AM in loc) + if(istype(AM,/obj/structure/cable)) + var/obj/structure/cable/C = AM + if(C.d1 == 0 && d1==0) //only connected if they are both "nodes" + if(C.powernet == powernet) continue + if(C.powernet) + merge_powernets(powernet, C.powernet) + else + C.powernet = powernet + powernet.cables += C + + else if(istype(AM,/obj/machinery/power/apc)) + var/obj/machinery/power/apc/N = AM + if(!N.terminal) continue + if(N.terminal.powernet) + merge_powernets(powernet, N.terminal.powernet) + else + N.terminal.powernet = powernet + powernet.nodes[N.terminal] = N.terminal + + else if(istype(AM,/obj/machinery/power)) + var/obj/machinery/power/M = AM + if(M.powernet == powernet) continue + if(M.powernet) + merge_powernets(powernet, M.powernet) + else + M.powernet = powernet + powernet.nodes[M] = M + + +obj/structure/cable/proc/cableColor(var/colorC) + var/color_n = "red" + if(colorC) + color_n = colorC + cable_color = color_n + switch(colorC) + if("red") + icon = 'icons/obj/power_cond/power_cond_red.dmi' + if("yellow") + icon = 'icons/obj/power_cond/power_cond_yellow.dmi' + if("green") + icon = 'icons/obj/power_cond/power_cond_green.dmi' + if("blue") + icon = 'icons/obj/power_cond/power_cond_blue.dmi' + if("pink") + icon = 'icons/obj/power_cond/power_cond_pink.dmi' + if("orange") + icon = 'icons/obj/power_cond/power_cond_orange.dmi' + if("cyan") + icon = 'icons/obj/power_cond/power_cond_cyan.dmi' + if("white") + icon = 'icons/obj/power_cond/power_cond_white.dmi' + +obj/structure/cable/proc/add_avail(var/amount) + if(powernet) + powernet.newavail += amount + +obj/structure/cable/proc/add_load(var/amount) + if(powernet) + powernet.newload += amount + +obj/structure/cable/proc/surplus() + if(powernet) + return powernet.avail-powernet.load + else + return 0 + +obj/structure/cable/proc/avail() + if(powernet) + return powernet.avail + else + return 0 + +/obj/item/stack/cable_coil/cut + item_state = "coil_red2" + +/obj/item/stack/cable_coil/cut/New(loc) + ..() + src.amount = rand(1,2) + pixel_x = rand(-2,2) + pixel_y = rand(-2,2) + update_icon() + +/obj/item/stack/cable_coil/yellow + item_color = "yellow" + icon_state = "coil_yellow" + +/obj/item/stack/cable_coil/blue + item_color = "blue" + icon_state = "coil_blue" + item_state = "coil_blue" + +/obj/item/stack/cable_coil/green + item_color = "green" + icon_state = "coil_green" + +/obj/item/stack/cable_coil/pink + item_color = "pink" + icon_state = "coil_pink" + +/obj/item/stack/cable_coil/orange + item_color = "orange" + icon_state = "coil_orange" + +/obj/item/stack/cable_coil/cyan + item_color = "cyan" + icon_state = "coil_cyan" + +/obj/item/stack/cable_coil/white + item_color = "white" + icon_state = "coil_white" + +/obj/item/stack/cable_coil/random/New() + item_color = pick("red","yellow","green","blue","pink") + icon_state = "coil_[item_color]" + ..() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 2af337929b7..36789ac7d87 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -1,742 +1,742 @@ -// The lighting system -// -// consists of light fixtures (/obj/machinery/light) and light tube/bulb items (/obj/item/weapon/light) - - -// status values shared between lighting fixtures and items -#define LIGHT_OK 0 -#define LIGHT_EMPTY 1 -#define LIGHT_BROKEN 2 -#define LIGHT_BURNED 3 - - - -/obj/item/light_fixture_frame - name = "light fixture frame" - desc = "Used for building lights." - icon = 'icons/obj/lighting.dmi' - icon_state = "tube-construct-item" - flags = CONDUCT - var/fixture_type = "tube" - var/obj/machinery/light/newlight = null - var/sheets_refunded = 2 - -/obj/item/light_fixture_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/wrench)) - new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded ) - qdel(src) - return - ..() - -/obj/item/light_fixture_frame/proc/try_build(turf/on_wall) - if (get_dist(on_wall,usr)>1) - return - var/ndir = get_dir(usr,on_wall) - if (!(ndir in cardinal)) - return - var/turf/loc = get_turf(usr) - if (!istype(loc, /turf/simulated/floor)) - usr << "\red [src.name] cannot be placed on this spot." - return - usr << "Attaching [src] to the wall." - playsound(src.loc, 'sound/machines/click.ogg', 75, 1) - var/constrdir = usr.dir - var/constrloc = usr.loc - if (!do_after(usr, 30)) - return - switch(fixture_type) - if("bulb") - newlight = new /obj/machinery/light_construct/small(constrloc) - if("tube") - newlight = new /obj/machinery/light_construct(constrloc) - newlight.dir = constrdir - newlight.fingerprints = src.fingerprints - newlight.fingerprintshidden = src.fingerprintshidden - newlight.fingerprintslast = src.fingerprintslast - - usr.visible_message("[usr.name] attaches [src] to the wall.", \ - "You attach [src] to the wall.") - qdel(src) - -/obj/item/light_fixture_frame/small - name = "small light fixture frame" - desc = "Used for building small lights." - icon = 'icons/obj/lighting.dmi' - icon_state = "bulb-construct-item" - flags = CONDUCT - fixture_type = "bulb" - sheets_refunded = 1 - -/obj/machinery/light_construct - name = "light fixture frame" - desc = "A light fixture under construction." - icon = 'icons/obj/lighting.dmi' - icon_state = "tube-construct-stage1" - anchored = 1 - layer = 5 - var/stage = 1 - var/fixture_type = "tube" - var/sheets_refunded = 2 - var/obj/machinery/light/newlight = null - -/obj/machinery/light_construct/New() - ..() - if (fixture_type == "bulb") - icon_state = "bulb-construct-stage1" - -/obj/machinery/light_construct/examine() - set src in view() - ..() - if (!(usr in view(2))) return - switch(src.stage) - if(1) - usr << "It's an empty frame." - return - if(2) - usr << "It's wired." - return - if(3) - usr << "The casing is closed." - return - -/obj/machinery/light_construct/attackby(obj/item/weapon/W as obj, mob/user as mob) - src.add_fingerprint(user) - if (istype(W, /obj/item/weapon/wrench)) - if (src.stage == 1) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - usr << "You begin deconstructing [src]." - if (!do_after(usr, 30)) - return - new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded ) - user.visible_message("[user.name] deconstructs [src].", \ - "You deconstruct [src].", "You hear a noise.") - playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - qdel(src) - if (src.stage == 2) - usr << "You have to remove the wires first." - return - - if (src.stage == 3) - usr << "You have to unscrew the case first." - return - - if(istype(W, /obj/item/weapon/wirecutters)) - if (src.stage != 2) return - src.stage = 1 - switch(fixture_type) - if ("tube") - src.icon_state = "tube-construct-stage1" - if("bulb") - src.icon_state = "bulb-construct-stage1" - new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red") - user.visible_message("[user.name] removes the wiring from [src].", \ - "You remove the wiring from [src].", "You hear a noise.") - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - return - - if(istype(W, /obj/item/stack/cable_coil)) - if (src.stage != 1) return - var/obj/item/stack/cable_coil/coil = W - coil.use(1) - switch(fixture_type) - if ("tube") - src.icon_state = "tube-construct-stage2" - if("bulb") - src.icon_state = "bulb-construct-stage2" - src.stage = 2 - user.visible_message("[user.name] adds wires to [src].", \ - "You add wires to [src].") - return - - if(istype(W, /obj/item/weapon/screwdriver)) - if (src.stage == 2) - switch(fixture_type) - if ("tube") - src.icon_state = "tube-empty" - if("bulb") - src.icon_state = "bulb-empty" - src.stage = 3 - user.visible_message("[user.name] closes [src]'s casing.", \ - "You close [src]'s casing.", "You hear a noise.") - playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) - - switch(fixture_type) - - if("tube") - newlight = new /obj/machinery/light/built(src.loc) - if ("bulb") - newlight = new /obj/machinery/light/small/built(src.loc) - - newlight.dir = src.dir - src.transfer_fingerprints_to(newlight) - qdel(src) - return - ..() - -/obj/machinery/light_construct/small - name = "small light fixture frame" - desc = "A small light fixture under construction." - icon = 'icons/obj/lighting.dmi' - icon_state = "bulb-construct-stage1" - anchored = 1 - layer = 5 - stage = 1 - fixture_type = "bulb" - sheets_refunded = 1 - -// the standard tube light fixture -/obj/machinery/light - name = "light fixture" - icon = 'icons/obj/lighting.dmi' - var/base_state = "tube" // base description and icon_state - icon_state = "tube1" - desc = "A lighting fixture." - anchored = 1 - layer = 5 // They were appearing under mobs which is a little weird - Ostaf - use_power = 2 - idle_power_usage = 2 - active_power_usage = 20 - power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list - var/on = 0 // 1 if on, 0 if off - var/on_gs = 0 - var/brightness = 8 // luminosity when on, also used in power calculation - var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN - var/flickering = 0 - var/light_type = /obj/item/weapon/light/tube // the type of light item - var/fitting = "tube" - var/switchcount = 0 // count of number of times switched on/off - // this is used to calc the probability the light burns out - - var/rigged = 0 // true if rigged to explode - -// the smaller bulb light fixture - -/obj/machinery/light/small - icon_state = "bulb1" - base_state = "bulb" - fitting = "bulb" - brightness = 4 - desc = "A small lighting fixture." - light_type = /obj/item/weapon/light/bulb - - -/obj/machinery/light/Move() - if(status != LIGHT_BROKEN) broken(1) - return ..() - -/obj/machinery/light/built/New() - status = LIGHT_EMPTY - update(0) - ..() - -/obj/machinery/light/small/built/New() - status = LIGHT_EMPTY - update(0) - ..() - - -// create a new lighting fixture -/obj/machinery/light/New() - ..() - spawn(2) - switch(fitting) - if("tube") - brightness = 8 - if(prob(2)) - broken(1) - if("bulb") - brightness = 4 - if(prob(5)) - broken(1) - spawn(1) - update(0) - -/obj/machinery/light/Destroy() - var/area/A = get_area(src) - if(A) - on = 0 -// A.update_lights() - ..() - -/obj/machinery/light/update_icon() - - switch(status) // set icon_states - if(LIGHT_OK) - icon_state = "[base_state][on]" - if(LIGHT_EMPTY) - icon_state = "[base_state]-empty" - on = 0 - if(LIGHT_BURNED) - icon_state = "[base_state]-burned" - on = 0 - if(LIGHT_BROKEN) - icon_state = "[base_state]-broken" - on = 0 - return - -// update the icon_state and luminosity of the light depending on its state -/obj/machinery/light/proc/update(var/trigger = 1) - - update_icon() - if(on) - if(luminosity != brightness) - switchcount++ - if(rigged) - if(status == LIGHT_OK && trigger) - explode() - else if( prob( min(60, switchcount*switchcount*0.01) ) ) - if(status == LIGHT_OK && trigger) - status = LIGHT_BURNED - icon_state = "[base_state]-burned" - on = 0 - SetLuminosity(0) - else - use_power = 2 - SetLuminosity(brightness) - else - use_power = 1 - SetLuminosity(0) - - active_power_usage = (luminosity * 10) - if(on != on_gs) - on_gs = on - - -// attempt to set the light's on/off status -// will not switch on if broken/burned/empty -/obj/machinery/light/proc/seton(var/s) - on = (s && status == LIGHT_OK) - update() - -// examine verb -/obj/machinery/light/examine() - set src in oview(1) - ..() - if(usr && !usr.stat) - switch(status) - if(LIGHT_OK) - usr << "It is turned [on? "on" : "off"]." - if(LIGHT_EMPTY) - usr << "The [fitting] has been removed." - if(LIGHT_BURNED) - usr << "The [fitting] is burnt out." - if(LIGHT_BROKEN) - usr << "The [fitting] has been smashed." - - - -// attack with item - insert light (if right type), otherwise try to break the light - -/obj/machinery/light/attackby(obj/item/W, mob/user) - - //Light replacer code - if(istype(W, /obj/item/device/lightreplacer)) - var/obj/item/device/lightreplacer/LR = W - if(isliving(user)) - var/mob/living/U = user - LR.ReplaceLight(src, U) - return - - // attempt to insert light - if(istype(W, /obj/item/weapon/light)) - if(status != LIGHT_EMPTY) - user << "There is a [fitting] already inserted." - return - else - src.add_fingerprint(user) - var/obj/item/weapon/light/L = W - if(istype(L, light_type)) - status = L.status - user << "You insert the [L.name]." - switchcount = L.switchcount - rigged = L.rigged - brightness = L.brightness - on = has_power() - update() - - user.drop_item() //drop the item to update overlays and such - qdel(L) - - if(on && rigged) - explode() - else - user << "This type of light requires a [fitting]." - return - - // attempt to break the light - //If xenos decide they want to smash a light bulb with a toolbox, who am I to stop them? /N - - else if(status != LIGHT_BROKEN && status != LIGHT_EMPTY) - - - if(prob(1+W.force * 5)) - - user << "You hit the light, and it smashes!" - for(var/mob/M in viewers(src)) - if(M == user) - continue - M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) - if(on && (W.flags & CONDUCT)) - //if(!user.mutations & COLD_RESISTANCE) - if (prob(12)) - electrocute_mob(user, get_area(src), src, 0.3) - broken() - - else - user << "You hit the light!" - - // attempt to stick weapon into light socket - else if(status == LIGHT_EMPTY) - if(istype(W, /obj/item/weapon/screwdriver)) //If it's a screwdriver open it. - playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) - user.visible_message("[user.name] opens [src]'s casing.", \ - "You open [src]'s casing.", "You hear a noise.") - var/obj/machinery/light_construct/newlight = null - switch(fitting) - if("tube") - newlight = new /obj/machinery/light_construct(src.loc) - newlight.icon_state = "tube-construct-stage2" - - if("bulb") - newlight = new /obj/machinery/light_construct/small(src.loc) - newlight.icon_state = "bulb-construct-stage2" - newlight.dir = src.dir - newlight.stage = 2 - newlight.fingerprints = src.fingerprints - newlight.fingerprintshidden = src.fingerprintshidden - newlight.fingerprintslast = src.fingerprintslast - qdel(src) - return - - user << "You stick \the [W] into the light socket!" - if(has_power() && (W.flags & CONDUCT)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - //if(!user.mutations & COLD_RESISTANCE) - if (prob(75)) - electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) - - -// returns whether this light has power -// true if area has power and lightswitch is on -/obj/machinery/light/proc/has_power() - var/area/A = src.loc.loc - return A.master.lightswitch && A.master.power_light - -/obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) - if(flickering) return - flickering = 1 - spawn(0) - if(on && status == LIGHT_OK) - for(var/i = 0; i < amount; i++) - if(status != LIGHT_OK) break - on = !on - update(0) - sleep(rand(5, 15)) - on = (status == LIGHT_OK) - update(0) - flickering = 0 - -// ai attack - make lights flicker, because why not - -/obj/machinery/light/attack_ai(mob/user) - src.flicker(1) - return - -// Aliens smash the bulb but do not get electrocuted./N -/obj/machinery/light/attack_alien(mob/living/carbon/alien/humanoid/user)//So larva don't go breaking light bulbs. - if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - user << "\green That object is useless to you." - return - else if (status == LIGHT_OK||status == LIGHT_BURNED) - for(var/mob/M in viewers(src)) - M.show_message("\red [user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) - broken() - return - -/obj/machinery/light/attack_animal(mob/living/simple_animal/M) - if(M.melee_damage_upper == 0) return - if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - M << "\red That object is useless to you." - return - else if (status == LIGHT_OK||status == LIGHT_BURNED) - for(var/mob/O in viewers(src)) - O.show_message("\red [M.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) - broken() - return -// attack with hand - remove tube/bulb -// if hands aren't protected and the light is on, burn the player - -/obj/machinery/light/attack_hand(mob/user) - - add_fingerprint(user) - - if(status == LIGHT_EMPTY) - user << "There is no [fitting] in this light." - return - - // make it burn hands if not wearing fire-insulated gloves - if(on) - var/prot = 0 - var/mob/living/carbon/human/H = user - - if(istype(H)) - - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(G.max_heat_protection_temperature) - prot = (G.max_heat_protection_temperature > 360) - else - prot = 1 - - if(prot > 0 || (COLD_RESISTANCE in user.mutations)) - user << "You remove the light [fitting]" - else if(TK in user.mutations) - user << "You telekinetically remove the light [fitting]." - else - user << "You try to remove the light [fitting], but you burn your hand on it!" - - var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") - if(affecting.take_damage( 0, 5 )) // 5 burn damage - H.update_damage_overlays(0) - H.updatehealth() - return // if burned, don't remove the light - else - user << "You remove the light [fitting]." - // create a light tube/bulb item and put it in the user's hand - var/obj/item/weapon/light/L = new light_type() - L.status = status - L.rigged = rigged - L.brightness = brightness - - // light item inherits the switchcount, then zero it - L.switchcount = switchcount - switchcount = 0 - - L.update() - L.add_fingerprint(user) - L.loc = loc - - user.put_in_active_hand(L) //puts it in our active hand - - status = LIGHT_EMPTY - update() - -/obj/machinery/light/attack_tk(mob/user) - if(status == LIGHT_EMPTY) - user << "There is no [fitting] in this light." - return - - user << "You telekinetically remove the light [fitting]." - // create a light tube/bulb item and put it in the user's hand - var/obj/item/weapon/light/L = new light_type() - L.status = status - L.rigged = rigged - L.brightness = brightness - - // light item inherits the switchcount, then zero it - L.switchcount = switchcount - switchcount = 0 - - L.update() - L.add_fingerprint(user) - L.loc = loc - - status = LIGHT_EMPTY - update() - -// break the light and make sparks if was on - -/obj/machinery/light/proc/broken(var/skip_sound_and_sparks = 0) - if(status == LIGHT_EMPTY) - return - - if(!skip_sound_and_sparks) - if(status == LIGHT_OK || status == LIGHT_BURNED) - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - if(on) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - status = LIGHT_BROKEN - update() - -/obj/machinery/light/proc/fix() - if(status == LIGHT_OK) - return - status = LIGHT_OK - brightness = initial(brightness) - on = 1 - update() - -// explosion effect -// destroy the whole light fixture or just shatter it - -/obj/machinery/light/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(75)) - broken() - if(3.0) - if (prob(50)) - broken() - return - -//blob effect - -/obj/machinery/light/blob_act() - if(prob(75)) - broken() - - -// timed process -// use power - -#define LIGHTING_POWER_FACTOR 20 //20W per unit luminosity - -/obj/machinery/light/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY - if(on) - use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT) - -// called when area power state changes -/obj/machinery/light/power_change() - var/area/A = get_area(src) - A = A.master - seton(A.lightswitch && A.power_light) - -// called when on fire - -/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C - broken() - -// explode the light - -/obj/machinery/light/proc/explode() - var/turf/T = get_turf(src.loc) - spawn(0) - broken() // break it first to give a warning - sleep(2) - explosion(T, 0, 0, 2, 2) - sleep(1) - qdel(src) - -// the light item -// can be tube or bulb subtypes -// will fit into empty /obj/machinery/light of the corresponding type - -/obj/item/weapon/light - icon = 'icons/obj/lighting.dmi' - force = 2 - throwforce = 5 - w_class = 1 - var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN - var/base_state - var/switchcount = 0 // number of times switched - m_amt = 60 - var/rigged = 0 // true if rigged to explode - var/brightness = 2 //how much light it gives off - -/obj/item/weapon/light/tube - name = "light tube" - desc = "A replacement light tube." - icon_state = "ltube" - base_state = "ltube" - item_state = "c_tube" - g_amt = 100 - brightness = 8 - -/obj/item/weapon/light/tube/large - w_class = 2 - name = "large light tube" - brightness = 15 - -/obj/item/weapon/light/bulb - name = "light bulb" - desc = "A replacement light bulb." - icon_state = "lbulb" - base_state = "lbulb" - item_state = "contvapour" - g_amt = 100 - brightness = 5 - -/obj/item/weapon/light/throw_impact(atom/hit_atom) - ..() - shatter() - -/obj/item/weapon/light/bulb/fire - name = "fire bulb" - desc = "A replacement fire bulb." - icon_state = "fbulb" - base_state = "fbulb" - item_state = "egg4" - g_amt = 100 - brightness = 5 - -// update the icon state and description of the light - -/obj/item/weapon/light/proc/update() - switch(status) - if(LIGHT_OK) - icon_state = base_state - desc = "A replacement [name]." - if(LIGHT_BURNED) - icon_state = "[base_state]-burned" - desc = "A burnt-out [name]." - if(LIGHT_BROKEN) - icon_state = "[base_state]-broken" - desc = "A broken [name]." - - -/obj/item/weapon/light/New() - ..() - switch(name) - if("light tube") - brightness = rand(6,9) - if("light bulb") - brightness = rand(4,6) - update() - - -// attack bulb/tube with object -// if a syringe, can inject plasma to make it explode -/obj/item/weapon/light/attackby(var/obj/item/I, var/mob/user) - ..() - if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - var/obj/item/weapon/reagent_containers/syringe/S = I - - user << "You inject the solution into the [src]." - - if(S.reagents.has_reagent("plasma", 5)) - - rigged = 1 - - S.reagents.clear_reagents() - else - ..() - return - -// called after an attack with a light item -// shatter light, unless it was an attempt to put it in a light socket -// now only shatter if the intent was harm - -/obj/item/weapon/light/afterattack(atom/target, mob/user,proximity) - if(!proximity) return - if(istype(target, /obj/machinery/light)) - return - if(user.a_intent != "harm") - return - - shatter() - -/obj/item/weapon/light/proc/shatter() - if(status == LIGHT_OK || status == LIGHT_BURNED) - src.visible_message("\red [name] shatters.","\red You hear a small glass object shatter.") - status = LIGHT_BROKEN - force = 5 - playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - update() +// The lighting system +// +// consists of light fixtures (/obj/machinery/light) and light tube/bulb items (/obj/item/weapon/light) + + +// status values shared between lighting fixtures and items +#define LIGHT_OK 0 +#define LIGHT_EMPTY 1 +#define LIGHT_BROKEN 2 +#define LIGHT_BURNED 3 + + + +/obj/item/light_fixture_frame + name = "light fixture frame" + desc = "Used for building lights." + icon = 'icons/obj/lighting.dmi' + icon_state = "tube-construct-item" + flags = CONDUCT + var/fixture_type = "tube" + var/obj/machinery/light/newlight = null + var/sheets_refunded = 2 + +/obj/item/light_fixture_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/wrench)) + new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded ) + qdel(src) + return + ..() + +/obj/item/light_fixture_frame/proc/try_build(turf/on_wall) + if (get_dist(on_wall,usr)>1) + return + var/ndir = get_dir(usr,on_wall) + if (!(ndir in cardinal)) + return + var/turf/loc = get_turf(usr) + if (!istype(loc, /turf/simulated/floor)) + usr << "\red [src.name] cannot be placed on this spot." + return + usr << "Attaching [src] to the wall." + playsound(src.loc, 'sound/machines/click.ogg', 75, 1) + var/constrdir = usr.dir + var/constrloc = usr.loc + if (!do_after(usr, 30)) + return + switch(fixture_type) + if("bulb") + newlight = new /obj/machinery/light_construct/small(constrloc) + if("tube") + newlight = new /obj/machinery/light_construct(constrloc) + newlight.dir = constrdir + newlight.fingerprints = src.fingerprints + newlight.fingerprintshidden = src.fingerprintshidden + newlight.fingerprintslast = src.fingerprintslast + + usr.visible_message("[usr.name] attaches [src] to the wall.", \ + "You attach [src] to the wall.") + qdel(src) + +/obj/item/light_fixture_frame/small + name = "small light fixture frame" + desc = "Used for building small lights." + icon = 'icons/obj/lighting.dmi' + icon_state = "bulb-construct-item" + flags = CONDUCT + fixture_type = "bulb" + sheets_refunded = 1 + +/obj/machinery/light_construct + name = "light fixture frame" + desc = "A light fixture under construction." + icon = 'icons/obj/lighting.dmi' + icon_state = "tube-construct-stage1" + anchored = 1 + layer = 5 + var/stage = 1 + var/fixture_type = "tube" + var/sheets_refunded = 2 + var/obj/machinery/light/newlight = null + +/obj/machinery/light_construct/New() + ..() + if (fixture_type == "bulb") + icon_state = "bulb-construct-stage1" + +/obj/machinery/light_construct/examine() + set src in view() + ..() + if (!(usr in view(2))) return + switch(src.stage) + if(1) + usr << "It's an empty frame." + return + if(2) + usr << "It's wired." + return + if(3) + usr << "The casing is closed." + return + +/obj/machinery/light_construct/attackby(obj/item/weapon/W as obj, mob/user as mob) + src.add_fingerprint(user) + if (istype(W, /obj/item/weapon/wrench)) + if (src.stage == 1) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + usr << "You begin deconstructing [src]." + if (!do_after(usr, 30)) + return + new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded ) + user.visible_message("[user.name] deconstructs [src].", \ + "You deconstruct [src].", "You hear a noise.") + playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) + qdel(src) + if (src.stage == 2) + usr << "You have to remove the wires first." + return + + if (src.stage == 3) + usr << "You have to unscrew the case first." + return + + if(istype(W, /obj/item/weapon/wirecutters)) + if (src.stage != 2) return + src.stage = 1 + switch(fixture_type) + if ("tube") + src.icon_state = "tube-construct-stage1" + if("bulb") + src.icon_state = "bulb-construct-stage1" + new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red") + user.visible_message("[user.name] removes the wiring from [src].", \ + "You remove the wiring from [src].", "You hear a noise.") + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + return + + if(istype(W, /obj/item/stack/cable_coil)) + if (src.stage != 1) return + var/obj/item/stack/cable_coil/coil = W + coil.use(1) + switch(fixture_type) + if ("tube") + src.icon_state = "tube-construct-stage2" + if("bulb") + src.icon_state = "bulb-construct-stage2" + src.stage = 2 + user.visible_message("[user.name] adds wires to [src].", \ + "You add wires to [src].") + return + + if(istype(W, /obj/item/weapon/screwdriver)) + if (src.stage == 2) + switch(fixture_type) + if ("tube") + src.icon_state = "tube-empty" + if("bulb") + src.icon_state = "bulb-empty" + src.stage = 3 + user.visible_message("[user.name] closes [src]'s casing.", \ + "You close [src]'s casing.", "You hear a noise.") + playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) + + switch(fixture_type) + + if("tube") + newlight = new /obj/machinery/light/built(src.loc) + if ("bulb") + newlight = new /obj/machinery/light/small/built(src.loc) + + newlight.dir = src.dir + src.transfer_fingerprints_to(newlight) + qdel(src) + return + ..() + +/obj/machinery/light_construct/small + name = "small light fixture frame" + desc = "A small light fixture under construction." + icon = 'icons/obj/lighting.dmi' + icon_state = "bulb-construct-stage1" + anchored = 1 + layer = 5 + stage = 1 + fixture_type = "bulb" + sheets_refunded = 1 + +// the standard tube light fixture +/obj/machinery/light + name = "light fixture" + icon = 'icons/obj/lighting.dmi' + var/base_state = "tube" // base description and icon_state + icon_state = "tube1" + desc = "A lighting fixture." + anchored = 1 + layer = 5 // They were appearing under mobs which is a little weird - Ostaf + use_power = 2 + idle_power_usage = 2 + active_power_usage = 20 + power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list + var/on = 0 // 1 if on, 0 if off + var/on_gs = 0 + var/brightness = 8 // luminosity when on, also used in power calculation + var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN + var/flickering = 0 + var/light_type = /obj/item/weapon/light/tube // the type of light item + var/fitting = "tube" + var/switchcount = 0 // count of number of times switched on/off + // this is used to calc the probability the light burns out + + var/rigged = 0 // true if rigged to explode + +// the smaller bulb light fixture + +/obj/machinery/light/small + icon_state = "bulb1" + base_state = "bulb" + fitting = "bulb" + brightness = 4 + desc = "A small lighting fixture." + light_type = /obj/item/weapon/light/bulb + + +/obj/machinery/light/Move() + if(status != LIGHT_BROKEN) broken(1) + return ..() + +/obj/machinery/light/built/New() + status = LIGHT_EMPTY + update(0) + ..() + +/obj/machinery/light/small/built/New() + status = LIGHT_EMPTY + update(0) + ..() + + +// create a new lighting fixture +/obj/machinery/light/New() + ..() + spawn(2) + switch(fitting) + if("tube") + brightness = 8 + if(prob(2)) + broken(1) + if("bulb") + brightness = 4 + if(prob(5)) + broken(1) + spawn(1) + update(0) + +/obj/machinery/light/Destroy() + var/area/A = get_area(src) + if(A) + on = 0 +// A.update_lights() + ..() + +/obj/machinery/light/update_icon() + + switch(status) // set icon_states + if(LIGHT_OK) + icon_state = "[base_state][on]" + if(LIGHT_EMPTY) + icon_state = "[base_state]-empty" + on = 0 + if(LIGHT_BURNED) + icon_state = "[base_state]-burned" + on = 0 + if(LIGHT_BROKEN) + icon_state = "[base_state]-broken" + on = 0 + return + +// update the icon_state and luminosity of the light depending on its state +/obj/machinery/light/proc/update(var/trigger = 1) + + update_icon() + if(on) + if(luminosity != brightness) + switchcount++ + if(rigged) + if(status == LIGHT_OK && trigger) + explode() + else if( prob( min(60, switchcount*switchcount*0.01) ) ) + if(status == LIGHT_OK && trigger) + status = LIGHT_BURNED + icon_state = "[base_state]-burned" + on = 0 + SetLuminosity(0) + else + use_power = 2 + SetLuminosity(brightness) + else + use_power = 1 + SetLuminosity(0) + + active_power_usage = (luminosity * 10) + if(on != on_gs) + on_gs = on + + +// attempt to set the light's on/off status +// will not switch on if broken/burned/empty +/obj/machinery/light/proc/seton(var/s) + on = (s && status == LIGHT_OK) + update() + +// examine verb +/obj/machinery/light/examine() + set src in oview(1) + ..() + if(usr && !usr.stat) + switch(status) + if(LIGHT_OK) + usr << "It is turned [on? "on" : "off"]." + if(LIGHT_EMPTY) + usr << "The [fitting] has been removed." + if(LIGHT_BURNED) + usr << "The [fitting] is burnt out." + if(LIGHT_BROKEN) + usr << "The [fitting] has been smashed." + + + +// attack with item - insert light (if right type), otherwise try to break the light + +/obj/machinery/light/attackby(obj/item/W, mob/user) + + //Light replacer code + if(istype(W, /obj/item/device/lightreplacer)) + var/obj/item/device/lightreplacer/LR = W + if(isliving(user)) + var/mob/living/U = user + LR.ReplaceLight(src, U) + return + + // attempt to insert light + if(istype(W, /obj/item/weapon/light)) + if(status != LIGHT_EMPTY) + user << "There is a [fitting] already inserted." + return + else + src.add_fingerprint(user) + var/obj/item/weapon/light/L = W + if(istype(L, light_type)) + status = L.status + user << "You insert the [L.name]." + switchcount = L.switchcount + rigged = L.rigged + brightness = L.brightness + on = has_power() + update() + + user.drop_item() //drop the item to update overlays and such + qdel(L) + + if(on && rigged) + explode() + else + user << "This type of light requires a [fitting]." + return + + // attempt to break the light + //If xenos decide they want to smash a light bulb with a toolbox, who am I to stop them? /N + + else if(status != LIGHT_BROKEN && status != LIGHT_EMPTY) + + + if(prob(1+W.force * 5)) + + user << "You hit the light, and it smashes!" + for(var/mob/M in viewers(src)) + if(M == user) + continue + M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) + if(on && (W.flags & CONDUCT)) + //if(!user.mutations & COLD_RESISTANCE) + if (prob(12)) + electrocute_mob(user, get_area(src), src, 0.3) + broken() + + else + user << "You hit the light!" + + // attempt to stick weapon into light socket + else if(status == LIGHT_EMPTY) + if(istype(W, /obj/item/weapon/screwdriver)) //If it's a screwdriver open it. + playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user.name] opens [src]'s casing.", \ + "You open [src]'s casing.", "You hear a noise.") + var/obj/machinery/light_construct/newlight = null + switch(fitting) + if("tube") + newlight = new /obj/machinery/light_construct(src.loc) + newlight.icon_state = "tube-construct-stage2" + + if("bulb") + newlight = new /obj/machinery/light_construct/small(src.loc) + newlight.icon_state = "bulb-construct-stage2" + newlight.dir = src.dir + newlight.stage = 2 + newlight.fingerprints = src.fingerprints + newlight.fingerprintshidden = src.fingerprintshidden + newlight.fingerprintslast = src.fingerprintslast + qdel(src) + return + + user << "You stick \the [W] into the light socket!" + if(has_power() && (W.flags & CONDUCT)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + //if(!user.mutations & COLD_RESISTANCE) + if (prob(75)) + electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) + + +// returns whether this light has power +// true if area has power and lightswitch is on +/obj/machinery/light/proc/has_power() + var/area/A = src.loc.loc + return A.master.lightswitch && A.master.power_light + +/obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) + if(flickering) return + flickering = 1 + spawn(0) + if(on && status == LIGHT_OK) + for(var/i = 0; i < amount; i++) + if(status != LIGHT_OK) break + on = !on + update(0) + sleep(rand(5, 15)) + on = (status == LIGHT_OK) + update(0) + flickering = 0 + +// ai attack - make lights flicker, because why not + +/obj/machinery/light/attack_ai(mob/user) + src.flicker(1) + return + +// Aliens smash the bulb but do not get electrocuted./N +/obj/machinery/light/attack_alien(mob/living/carbon/alien/humanoid/user)//So larva don't go breaking light bulbs. + if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) + user << "\green That object is useless to you." + return + else if (status == LIGHT_OK||status == LIGHT_BURNED) + for(var/mob/M in viewers(src)) + M.show_message("\red [user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) + broken() + return + +/obj/machinery/light/attack_animal(mob/living/simple_animal/M) + if(M.melee_damage_upper == 0) return + if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) + M << "\red That object is useless to you." + return + else if (status == LIGHT_OK||status == LIGHT_BURNED) + for(var/mob/O in viewers(src)) + O.show_message("\red [M.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) + broken() + return +// attack with hand - remove tube/bulb +// if hands aren't protected and the light is on, burn the player + +/obj/machinery/light/attack_hand(mob/user) + + add_fingerprint(user) + + if(status == LIGHT_EMPTY) + user << "There is no [fitting] in this light." + return + + // make it burn hands if not wearing fire-insulated gloves + if(on) + var/prot = 0 + var/mob/living/carbon/human/H = user + + if(istype(H)) + + if(H.gloves) + var/obj/item/clothing/gloves/G = H.gloves + if(G.max_heat_protection_temperature) + prot = (G.max_heat_protection_temperature > 360) + else + prot = 1 + + if(prot > 0 || (COLD_RESISTANCE in user.mutations)) + user << "You remove the light [fitting]" + else if(TK in user.mutations) + user << "You telekinetically remove the light [fitting]." + else + user << "You try to remove the light [fitting], but you burn your hand on it!" + + var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") + if(affecting.take_damage( 0, 5 )) // 5 burn damage + H.update_damage_overlays(0) + H.updatehealth() + return // if burned, don't remove the light + else + user << "You remove the light [fitting]." + // create a light tube/bulb item and put it in the user's hand + var/obj/item/weapon/light/L = new light_type() + L.status = status + L.rigged = rigged + L.brightness = brightness + + // light item inherits the switchcount, then zero it + L.switchcount = switchcount + switchcount = 0 + + L.update() + L.add_fingerprint(user) + L.loc = loc + + user.put_in_active_hand(L) //puts it in our active hand + + status = LIGHT_EMPTY + update() + +/obj/machinery/light/attack_tk(mob/user) + if(status == LIGHT_EMPTY) + user << "There is no [fitting] in this light." + return + + user << "You telekinetically remove the light [fitting]." + // create a light tube/bulb item and put it in the user's hand + var/obj/item/weapon/light/L = new light_type() + L.status = status + L.rigged = rigged + L.brightness = brightness + + // light item inherits the switchcount, then zero it + L.switchcount = switchcount + switchcount = 0 + + L.update() + L.add_fingerprint(user) + L.loc = loc + + status = LIGHT_EMPTY + update() + +// break the light and make sparks if was on + +/obj/machinery/light/proc/broken(var/skip_sound_and_sparks = 0) + if(status == LIGHT_EMPTY) + return + + if(!skip_sound_and_sparks) + if(status == LIGHT_OK || status == LIGHT_BURNED) + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(on) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + status = LIGHT_BROKEN + update() + +/obj/machinery/light/proc/fix() + if(status == LIGHT_OK) + return + status = LIGHT_OK + brightness = initial(brightness) + on = 1 + update() + +// explosion effect +// destroy the whole light fixture or just shatter it + +/obj/machinery/light/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(75)) + broken() + if(3.0) + if (prob(50)) + broken() + return + +//blob effect + +/obj/machinery/light/blob_act() + if(prob(75)) + broken() + + +// timed process +// use power + +#define LIGHTING_POWER_FACTOR 20 //20W per unit luminosity + +/obj/machinery/light/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY + if(on) + use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT) + +// called when area power state changes +/obj/machinery/light/power_change() + var/area/A = get_area(src) + A = A.master + seton(A.lightswitch && A.power_light) + +// called when on fire + +/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C + broken() + +// explode the light + +/obj/machinery/light/proc/explode() + var/turf/T = get_turf(src.loc) + spawn(0) + broken() // break it first to give a warning + sleep(2) + explosion(T, 0, 0, 2, 2) + sleep(1) + qdel(src) + +// the light item +// can be tube or bulb subtypes +// will fit into empty /obj/machinery/light of the corresponding type + +/obj/item/weapon/light + icon = 'icons/obj/lighting.dmi' + force = 2 + throwforce = 5 + w_class = 1 + var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN + var/base_state + var/switchcount = 0 // number of times switched + m_amt = 60 + var/rigged = 0 // true if rigged to explode + var/brightness = 2 //how much light it gives off + +/obj/item/weapon/light/tube + name = "light tube" + desc = "A replacement light tube." + icon_state = "ltube" + base_state = "ltube" + item_state = "c_tube" + g_amt = 100 + brightness = 8 + +/obj/item/weapon/light/tube/large + w_class = 2 + name = "large light tube" + brightness = 15 + +/obj/item/weapon/light/bulb + name = "light bulb" + desc = "A replacement light bulb." + icon_state = "lbulb" + base_state = "lbulb" + item_state = "contvapour" + g_amt = 100 + brightness = 5 + +/obj/item/weapon/light/throw_impact(atom/hit_atom) + ..() + shatter() + +/obj/item/weapon/light/bulb/fire + name = "fire bulb" + desc = "A replacement fire bulb." + icon_state = "fbulb" + base_state = "fbulb" + item_state = "egg4" + g_amt = 100 + brightness = 5 + +// update the icon state and description of the light + +/obj/item/weapon/light/proc/update() + switch(status) + if(LIGHT_OK) + icon_state = base_state + desc = "A replacement [name]." + if(LIGHT_BURNED) + icon_state = "[base_state]-burned" + desc = "A burnt-out [name]." + if(LIGHT_BROKEN) + icon_state = "[base_state]-broken" + desc = "A broken [name]." + + +/obj/item/weapon/light/New() + ..() + switch(name) + if("light tube") + brightness = rand(6,9) + if("light bulb") + brightness = rand(4,6) + update() + + +// attack bulb/tube with object +// if a syringe, can inject plasma to make it explode +/obj/item/weapon/light/attackby(var/obj/item/I, var/mob/user) + ..() + if(istype(I, /obj/item/weapon/reagent_containers/syringe)) + var/obj/item/weapon/reagent_containers/syringe/S = I + + user << "You inject the solution into the [src]." + + if(S.reagents.has_reagent("plasma", 5)) + + rigged = 1 + + S.reagents.clear_reagents() + else + ..() + return + +// called after an attack with a light item +// shatter light, unless it was an attempt to put it in a light socket +// now only shatter if the intent was harm + +/obj/item/weapon/light/afterattack(atom/target, mob/user,proximity) + if(!proximity) return + if(istype(target, /obj/machinery/light)) + return + if(user.a_intent != "harm") + return + + shatter() + +/obj/item/weapon/light/proc/shatter() + if(status == LIGHT_OK || status == LIGHT_BURNED) + src.visible_message("\red [name] shatters.","\red You hear a small glass object shatter.") + status = LIGHT_BROKEN + force = 5 + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + update() diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 9a7f1bc443f..92db2f7aaf8 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -1,337 +1,337 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - -/* new portable generator - work in progress - -/obj/machinery/power/port_gen - name = "portable generator" - desc = "A portable generator used for emergency backup power." - icon = 'generator.dmi' - icon_state = "off" - density = 1 - anchored = 0 - directwired = 0 - var/t_status = 0 - var/t_per = 5000 - var/filter = 1 - var/tank = null - var/turf/inturf - var/starter = 0 - var/rpm = 0 - var/rpmtarget = 0 - var/capacity = 1e6 - var/turf/outturf - var/lastgen - - -/obj/machinery/power/port_gen/process() -ideally we're looking to generate 5000 - -/obj/machinery/power/port_gen/attackby(obj/item/weapon/W, mob/user) -tank [un]loading stuff - -/obj/machinery/power/port_gen/attack_hand(mob/user) -turn on/off - -/obj/machinery/power/port_gen/examine() -display round(lastgen) and plasmatank amount - -*/ - -//Previous code been here forever, adding new framework for portable generators - - -//Baseline portable generator. Has all the default handling. Not intended to be used on it's own (since it generates unlimited power). -/obj/machinery/power/port_gen - name = "portable generator" - desc = "A portable generator for emergency backup power" - icon = 'icons/obj/power.dmi' - icon_state = "portgen0" - density = 1 - anchored = 0 - directwired = 0 - use_power = 0 - - var/active = 0 - var/power_gen = 5000 - var/recent_fault = 0 - var/power_output = 1 - var/consumption = 0 - -/obj/machinery/power/port_gen/proc/HasFuel() //Placeholder for fuel check. - return 1 - -/obj/machinery/power/port_gen/proc/UseFuel() //Placeholder for fuel use. - return - -/obj/machinery/power/port_gen/proc/DropFuel() - return - -/obj/machinery/power/port_gen/proc/handleInactive() - return - -/obj/machinery/power/port_gen/process() - if(active && HasFuel() && !crit_fail && anchored && powernet) - add_avail(power_gen * power_output) - UseFuel() - src.updateDialog() - - else - active = 0 - icon_state = initial(icon_state) - handleInactive() - -/obj/machinery/power/port_gen/attack_hand(mob/user as mob) - if(..()) - return - if(!anchored) - return - -/obj/machinery/power/port_gen/examine() - set src in oview(1) - ..() - if(active) - usr << "It is running." - else - usr << "It isn't running." - -/obj/machinery/power/port_gen/pacman - name = "\improper P.A.C.M.A.N.-type portable generator" - var/sheets = 0 - var/max_sheets = 100 - var/sheet_name = "" - var/sheet_path = /obj/item/stack/sheet/mineral/plasma - var/board_path = "/obj/item/weapon/circuitboard/pacman" - var/sheet_left = 0 // How much is left of the sheet - var/time_per_sheet = 260 - var/heat = 0 - -/obj/machinery/power/port_gen/pacman/initialize() - ..() - if(anchored) - connect_to_network() - -/obj/machinery/power/port_gen/pacman/New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/stack/cable_coil(src, 1) - component_parts += new /obj/item/stack/cable_coil(src, 1) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new board_path(src) - var/obj/sheet = new sheet_path(null) - sheet_name = sheet.name - RefreshParts() - -/obj/machinery/power/port_gen/pacman/Destroy() - DropFuel() - ..() - -/obj/machinery/power/port_gen/pacman/RefreshParts() - var/temp_rating = 0 - var/temp_reliability = 0 - var/consumption_coeff = 0 - for(var/obj/item/weapon/stock_parts/SP in component_parts) - if(istype(SP, /obj/item/weapon/stock_parts/matter_bin)) - max_sheets = SP.rating * SP.rating * 50 - else if(istype(SP, /obj/item/weapon/stock_parts/capacitor)) - temp_rating += SP.rating - else - consumption_coeff += SP.rating - for(var/obj/item/weapon/CP in component_parts) - temp_reliability += CP.reliability - reliability = min(round(temp_reliability / 4), 100) - power_gen = round(initial(power_gen) * temp_rating * 2) - consumption = consumption_coeff - -/obj/machinery/power/port_gen/pacman/examine() - ..() - usr << "\blue The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle." - if(crit_fail) usr << "\red The generator seems to have broken down." - -/obj/machinery/power/port_gen/pacman/HasFuel() - if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left) - return 1 - return 0 - -/obj/machinery/power/port_gen/pacman/DropFuel() - if(sheets) - var/fail_safe = 0 - while(sheets > 0 && fail_safe < 100) - fail_safe += 1 - var/obj/item/stack/sheet/S = new sheet_path(loc) - var/amount = min(sheets, S.max_amount) - S.amount = amount - sheets -= amount - -/obj/machinery/power/port_gen/pacman/UseFuel() - var/needed_sheets = 1 / (time_per_sheet * consumption / power_output) - var/temp = min(needed_sheets, sheet_left) - needed_sheets -= temp - sheet_left -= temp - sheets -= round(needed_sheets) - needed_sheets -= round(needed_sheets) - if (sheet_left <= 0 && sheets > 0) - sheet_left = 1 - needed_sheets - sheets-- - - var/lower_limit = 56 + power_output * 10 - var/upper_limit = 76 + power_output * 10 - var/bias = 0 - if (power_output > 4) - upper_limit = 400 - bias = power_output - consumption * (4 - consumption) - if (heat < lower_limit) - heat += 4 - consumption - else - heat += rand(-7 + bias, 7 + bias) - if (heat < lower_limit) - heat = lower_limit - if (heat > upper_limit) - heat = upper_limit - - if (heat > 300) - overheat() - qdel(src) - return - -/obj/machinery/power/port_gen/pacman/handleInactive() - - if (heat > 0) - heat = max(heat - 2, 0) - src.updateDialog() - -/obj/machinery/power/port_gen/pacman/proc/overheat() - explosion(src.loc, 2, 5, 2, -1) - -/obj/machinery/power/port_gen/pacman/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, sheet_path)) - var/obj/item/stack/addstack = O - var/amount = min((max_sheets - sheets), addstack.amount) - if(amount < 1) - user << "\blue The [src.name] is full!" - return - user << "\blue You add [amount] sheets to the [src.name]." - sheets += amount - addstack.use(amount) - updateUsrDialog() - return - else if (istype(O, /obj/item/weapon/card/emag)) - emagged = 1 - emp_act(1) - else if(!active) - - if(exchange_parts(user, O)) - return - - if(istype(O, /obj/item/weapon/wrench)) - - if(!anchored && !isinspace()) - connect_to_network() - user << "\blue You secure the generator to the floor." - anchored = 1 - else if(anchored) - disconnect_from_network() - user << "\blue You unsecure the generator from the floor." - anchored = 0 - - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - - else if(istype(O, /obj/item/weapon/screwdriver)) - panel_open = !panel_open - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(panel_open) - user << "\blue You open the access panel." - else - user << "\blue You close the access panel." - else if(istype(O, /obj/item/weapon/crowbar) && panel_open) - default_deconstruction_crowbar(O) - -/obj/machinery/power/port_gen/pacman/attack_hand(mob/user as mob) - ..() - if (!anchored) - return - - interact(user) - -/obj/machinery/power/port_gen/pacman/attack_ai(mob/user as mob) - interact(user) - -/obj/machinery/power/port_gen/pacman/attack_paw(mob/user as mob) - interact(user) - -/obj/machinery/power/port_gen/pacman/interact(mob/user) - if (get_dist(src, user) > 1 ) - if (!istype(user, /mob/living/silicon/ai)) - user.unset_machine() - user << browse(null, "window=port_gen") - return - - user.set_machine(src) - - var/dat = text("[name]
    ") - if (active) - dat += text("Generator: On
    ") - else - dat += text("Generator: Off
    ") - dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") - var/stack_percent = round(sheet_left * 100, 1) - dat += text("Current stack: [stack_percent]%
    ") - dat += text("Power output: - [power_gen * power_output] +
    ") - dat += text("Power current: [(powernet == null ? "Unconnected" : "[avail()]")]
    ") - dat += text("Heat: [heat]
    ") - dat += "
    Close" - user << browse("[dat]", "window=port_gen") - onclose(user, "port_gen") - -/obj/machinery/power/port_gen/pacman/Topic(href, href_list) - if(..()) - return - - src.add_fingerprint(usr) - if(href_list["action"]) - if(href_list["action"] == "enable") - if(!active && HasFuel() && !crit_fail) - active = 1 - icon_state = "portgen1" - src.updateUsrDialog() - if(href_list["action"] == "disable") - if (active) - active = 0 - icon_state = "portgen0" - src.updateUsrDialog() - if(href_list["action"] == "eject") - if(!active) - DropFuel() - src.updateUsrDialog() - if(href_list["action"] == "lower_power") - if (power_output > 1) - power_output-- - src.updateUsrDialog() - if (href_list["action"] == "higher_power") - if (power_output < 4 || emagged) - power_output++ - src.updateUsrDialog() - if (href_list["action"] == "close") - usr << browse(null, "window=port_gen") - usr.unset_machine() - -/obj/machinery/power/port_gen/pacman/super - name = "\improper S.U.P.E.R.P.A.C.M.A.N.-type portable generator" - icon_state = "portgen1" - sheet_path = /obj/item/stack/sheet/mineral/uranium - power_gen = 15000 - time_per_sheet = 85 - board_path = "/obj/item/weapon/circuitboard/pacman/super" - overheat() - explosion(src.loc, 3, 3, 3, -1) - -/obj/machinery/power/port_gen/pacman/mrs - name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator" - icon_state = "portgen2" - sheet_path = /obj/item/stack/sheet/mineral/diamond - power_gen = 40000 - time_per_sheet = 80 - board_path = "/obj/item/weapon/circuitboard/pacman/mrs" - overheat() - explosion(src.loc, 4, 4, 4, -1) +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 + +/* new portable generator - work in progress + +/obj/machinery/power/port_gen + name = "portable generator" + desc = "A portable generator used for emergency backup power." + icon = 'generator.dmi' + icon_state = "off" + density = 1 + anchored = 0 + directwired = 0 + var/t_status = 0 + var/t_per = 5000 + var/filter = 1 + var/tank = null + var/turf/inturf + var/starter = 0 + var/rpm = 0 + var/rpmtarget = 0 + var/capacity = 1e6 + var/turf/outturf + var/lastgen + + +/obj/machinery/power/port_gen/process() +ideally we're looking to generate 5000 + +/obj/machinery/power/port_gen/attackby(obj/item/weapon/W, mob/user) +tank [un]loading stuff + +/obj/machinery/power/port_gen/attack_hand(mob/user) +turn on/off + +/obj/machinery/power/port_gen/examine() +display round(lastgen) and plasmatank amount + +*/ + +//Previous code been here forever, adding new framework for portable generators + + +//Baseline portable generator. Has all the default handling. Not intended to be used on it's own (since it generates unlimited power). +/obj/machinery/power/port_gen + name = "portable generator" + desc = "A portable generator for emergency backup power" + icon = 'icons/obj/power.dmi' + icon_state = "portgen0" + density = 1 + anchored = 0 + directwired = 0 + use_power = 0 + + var/active = 0 + var/power_gen = 5000 + var/recent_fault = 0 + var/power_output = 1 + var/consumption = 0 + +/obj/machinery/power/port_gen/proc/HasFuel() //Placeholder for fuel check. + return 1 + +/obj/machinery/power/port_gen/proc/UseFuel() //Placeholder for fuel use. + return + +/obj/machinery/power/port_gen/proc/DropFuel() + return + +/obj/machinery/power/port_gen/proc/handleInactive() + return + +/obj/machinery/power/port_gen/process() + if(active && HasFuel() && !crit_fail && anchored && powernet) + add_avail(power_gen * power_output) + UseFuel() + src.updateDialog() + + else + active = 0 + icon_state = initial(icon_state) + handleInactive() + +/obj/machinery/power/port_gen/attack_hand(mob/user as mob) + if(..()) + return + if(!anchored) + return + +/obj/machinery/power/port_gen/examine() + set src in oview(1) + ..() + if(active) + usr << "It is running." + else + usr << "It isn't running." + +/obj/machinery/power/port_gen/pacman + name = "\improper P.A.C.M.A.N.-type portable generator" + var/sheets = 0 + var/max_sheets = 100 + var/sheet_name = "" + var/sheet_path = /obj/item/stack/sheet/mineral/plasma + var/board_path = "/obj/item/weapon/circuitboard/pacman" + var/sheet_left = 0 // How much is left of the sheet + var/time_per_sheet = 260 + var/heat = 0 + +/obj/machinery/power/port_gen/pacman/initialize() + ..() + if(anchored) + connect_to_network() + +/obj/machinery/power/port_gen/pacman/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) + component_parts += new /obj/item/stack/cable_coil(src, 1) + component_parts += new /obj/item/stack/cable_coil(src, 1) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + component_parts += new board_path(src) + var/obj/sheet = new sheet_path(null) + sheet_name = sheet.name + RefreshParts() + +/obj/machinery/power/port_gen/pacman/Destroy() + DropFuel() + ..() + +/obj/machinery/power/port_gen/pacman/RefreshParts() + var/temp_rating = 0 + var/temp_reliability = 0 + var/consumption_coeff = 0 + for(var/obj/item/weapon/stock_parts/SP in component_parts) + if(istype(SP, /obj/item/weapon/stock_parts/matter_bin)) + max_sheets = SP.rating * SP.rating * 50 + else if(istype(SP, /obj/item/weapon/stock_parts/capacitor)) + temp_rating += SP.rating + else + consumption_coeff += SP.rating + for(var/obj/item/weapon/CP in component_parts) + temp_reliability += CP.reliability + reliability = min(round(temp_reliability / 4), 100) + power_gen = round(initial(power_gen) * temp_rating * 2) + consumption = consumption_coeff + +/obj/machinery/power/port_gen/pacman/examine() + ..() + usr << "\blue The generator has [sheets] units of [sheet_name] fuel left, producing [power_gen] per cycle." + if(crit_fail) usr << "\red The generator seems to have broken down." + +/obj/machinery/power/port_gen/pacman/HasFuel() + if(sheets >= 1 / (time_per_sheet / power_output) - sheet_left) + return 1 + return 0 + +/obj/machinery/power/port_gen/pacman/DropFuel() + if(sheets) + var/fail_safe = 0 + while(sheets > 0 && fail_safe < 100) + fail_safe += 1 + var/obj/item/stack/sheet/S = new sheet_path(loc) + var/amount = min(sheets, S.max_amount) + S.amount = amount + sheets -= amount + +/obj/machinery/power/port_gen/pacman/UseFuel() + var/needed_sheets = 1 / (time_per_sheet * consumption / power_output) + var/temp = min(needed_sheets, sheet_left) + needed_sheets -= temp + sheet_left -= temp + sheets -= round(needed_sheets) + needed_sheets -= round(needed_sheets) + if (sheet_left <= 0 && sheets > 0) + sheet_left = 1 - needed_sheets + sheets-- + + var/lower_limit = 56 + power_output * 10 + var/upper_limit = 76 + power_output * 10 + var/bias = 0 + if (power_output > 4) + upper_limit = 400 + bias = power_output - consumption * (4 - consumption) + if (heat < lower_limit) + heat += 4 - consumption + else + heat += rand(-7 + bias, 7 + bias) + if (heat < lower_limit) + heat = lower_limit + if (heat > upper_limit) + heat = upper_limit + + if (heat > 300) + overheat() + qdel(src) + return + +/obj/machinery/power/port_gen/pacman/handleInactive() + + if (heat > 0) + heat = max(heat - 2, 0) + src.updateDialog() + +/obj/machinery/power/port_gen/pacman/proc/overheat() + explosion(src.loc, 2, 5, 2, -1) + +/obj/machinery/power/port_gen/pacman/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, sheet_path)) + var/obj/item/stack/addstack = O + var/amount = min((max_sheets - sheets), addstack.amount) + if(amount < 1) + user << "\blue The [src.name] is full!" + return + user << "\blue You add [amount] sheets to the [src.name]." + sheets += amount + addstack.use(amount) + updateUsrDialog() + return + else if (istype(O, /obj/item/weapon/card/emag)) + emagged = 1 + emp_act(1) + else if(!active) + + if(exchange_parts(user, O)) + return + + if(istype(O, /obj/item/weapon/wrench)) + + if(!anchored && !isinspace()) + connect_to_network() + user << "\blue You secure the generator to the floor." + anchored = 1 + else if(anchored) + disconnect_from_network() + user << "\blue You unsecure the generator from the floor." + anchored = 0 + + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + + else if(istype(O, /obj/item/weapon/screwdriver)) + panel_open = !panel_open + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(panel_open) + user << "\blue You open the access panel." + else + user << "\blue You close the access panel." + else if(istype(O, /obj/item/weapon/crowbar) && panel_open) + default_deconstruction_crowbar(O) + +/obj/machinery/power/port_gen/pacman/attack_hand(mob/user as mob) + ..() + if (!anchored) + return + + interact(user) + +/obj/machinery/power/port_gen/pacman/attack_ai(mob/user as mob) + interact(user) + +/obj/machinery/power/port_gen/pacman/attack_paw(mob/user as mob) + interact(user) + +/obj/machinery/power/port_gen/pacman/interact(mob/user) + if (get_dist(src, user) > 1 ) + if (!istype(user, /mob/living/silicon/ai)) + user.unset_machine() + user << browse(null, "window=port_gen") + return + + user.set_machine(src) + + var/dat = text("[name]
    ") + if (active) + dat += text("Generator: On
    ") + else + dat += text("Generator: Off
    ") + dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") + var/stack_percent = round(sheet_left * 100, 1) + dat += text("Current stack: [stack_percent]%
    ") + dat += text("Power output: - [power_gen * power_output] +
    ") + dat += text("Power current: [(powernet == null ? "Unconnected" : "[avail()]")]
    ") + dat += text("Heat: [heat]
    ") + dat += "
    Close" + user << browse("[dat]", "window=port_gen") + onclose(user, "port_gen") + +/obj/machinery/power/port_gen/pacman/Topic(href, href_list) + if(..()) + return + + src.add_fingerprint(usr) + if(href_list["action"]) + if(href_list["action"] == "enable") + if(!active && HasFuel() && !crit_fail) + active = 1 + icon_state = "portgen1" + src.updateUsrDialog() + if(href_list["action"] == "disable") + if (active) + active = 0 + icon_state = "portgen0" + src.updateUsrDialog() + if(href_list["action"] == "eject") + if(!active) + DropFuel() + src.updateUsrDialog() + if(href_list["action"] == "lower_power") + if (power_output > 1) + power_output-- + src.updateUsrDialog() + if (href_list["action"] == "higher_power") + if (power_output < 4 || emagged) + power_output++ + src.updateUsrDialog() + if (href_list["action"] == "close") + usr << browse(null, "window=port_gen") + usr.unset_machine() + +/obj/machinery/power/port_gen/pacman/super + name = "\improper S.U.P.E.R.P.A.C.M.A.N.-type portable generator" + icon_state = "portgen1" + sheet_path = /obj/item/stack/sheet/mineral/uranium + power_gen = 15000 + time_per_sheet = 85 + board_path = "/obj/item/weapon/circuitboard/pacman/super" + overheat() + explosion(src.loc, 3, 3, 3, -1) + +/obj/machinery/power/port_gen/pacman/mrs + name = "\improper M.R.S.P.A.C.M.A.N.-type portable generator" + icon_state = "portgen2" + sheet_path = /obj/item/stack/sheet/mineral/diamond + power_gen = 40000 + time_per_sheet = 80 + board_path = "/obj/item/weapon/circuitboard/pacman/mrs" + overheat() + explosion(src.loc, 4, 4, 4, -1) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 929fdc1fb2a..2e037f8e76e 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -1,416 +1,416 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - -/*Composed of 7 parts -3 Particle emitters -proc -emit_particle() - -1 power box -the only part of this thing that uses power, can hack to mess with the pa/make it better - -1 fuel chamber -contains procs for mixing gas and whatever other fuel it uses -mix_gas() - -1 gas holder WIP -acts like a tank valve on the ground that you wrench gas tanks onto -proc -extract_gas() -return_gas() -attach_tank() -remove_tank() -get_available_mix() - -1 End Cap - -1 Control computer -interface for the pa, acts like a computer with an html menu for diff parts and a status report -all other parts contain only a ref to this -a /machine/, tells the others to do work -contains ref for all parts -proc -process() -check_build() - -Setup map - |EC| -CC|FC| - |PB| -PE|PE|PE - - -Icon Addemdum -Icon system is much more robust, and the icons are all variable based. -Each part has a reference string, powered, strength, and contruction values. -Using this the update_icon() proc is simplified a bit (using for absolutely was problematic with naming), -so the icon_state comes out be: -"[reference][strength]", with a switch controlling construction_states and ensuring that it doesn't -power on while being contructed, and all these variables are set by the computer through it's scan list -Essential order of the icons: -Standard - [reference] -Wrenched - [reference] -Wired - [reference]w -Closed - [reference]c -Powered - [reference]p[strength] -Strength being set by the computer and a null strength (Computer is powered off or inactive) returns a 'null', counting as empty -So, hopefully this is helpful if any more icons are to be added/changed/wondering what the hell is going on here - -*/ - -/obj/structure/particle_accelerator - name = "Particle Accelerator" - desc = "Part of a Particle Accelerator." - icon = 'icons/obj/machines/particle_accelerator.dmi' - icon_state = "none" - anchored = 0 - density = 1 - var/obj/machinery/particle_accelerator/control_box/master = null - var/construction_state = 0 - var/reference = null - var/powered = 0 - var/strength = null - var/desc_holder = null - -/obj/structure/particle_accelerator/Destroy() - construction_state = 0 - if(master) - master.part_scan() - ..() - -/obj/structure/particle_accelerator/end_cap - name = "Alpha Particle Generation Array" - desc_holder = "This is where Alpha particles are generated from \[REDACTED\]" - icon_state = "end_cap" - reference = "end_cap" - -/obj/structure/particle_accelerator/update_icon() - ..() - return - - -/obj/structure/particle_accelerator/verb/rotate() - set name = "Rotate Clockwise" - set category = "Object" - set src in oview(1) - - if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" - return 0 - src.dir = turn(src.dir, 270) - return 1 - -/obj/structure/particle_accelerator/verb/rotateccw() - set name = "Rotate Counter Clockwise" - set category = "Object" - set src in oview(1) - - if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" - return 0 - src.dir = turn(src.dir, 90) - return 1 - -/obj/structure/particle_accelerator/examine() - switch(src.construction_state) - if(0) - src.desc = text("A [name], looks like it's not attached to the flooring") - if(1) - src.desc = text("A [name], it is missing some cables") - if(2) - src.desc = text("A [name], the panel is open") - if(3) - src.desc = text("The [name] is assembled") - if(powered) - src.desc = src.desc_holder - ..() - return - - -/obj/structure/particle_accelerator/attackby(obj/item/W, mob/user) - if(istool(W)) - if(src.process_tool_hit(W,user)) - return - ..() - return - - -/obj/structure/particle_accelerator/Move() - ..() - if(master && master.active) - master.toggle_power() - investigate_log("was moved whilst active; it powered down.","singulo") - -/obj/structure/particle_accelerator/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(50)) - qdel(src) - return - if(3.0) - if (prob(25)) - qdel(src) - return - else - return - - -/obj/structure/particle_accelerator/blob_act() - if(prob(50)) - qdel(src) - return - - -/obj/structure/particle_accelerator/meteorhit() - if(prob(50)) - qdel(src) - return - -/obj/structure/particle_accelerator/update_icon() - switch(construction_state) - if(0,1) - icon_state="[reference]" - if(2) - icon_state="[reference]w" - if(3) - if(powered) - icon_state="[reference]p[strength]" - else - icon_state="[reference]c" - return - -/obj/structure/particle_accelerator/proc/update_state() - if(master) - master.update_state() - return 0 - - -/obj/structure/particle_accelerator/proc/report_ready(var/obj/O) - if(O && (O == master)) - if(construction_state >= 3) - return 1 - return 0 - - -/obj/structure/particle_accelerator/proc/report_master() - if(master) - return master - return 0 - - -/obj/structure/particle_accelerator/proc/connect_master(var/obj/O) - if(O && istype(O,/obj/machinery/particle_accelerator/control_box)) - if(O.dir == src.dir) - master = O - return 1 - return 0 - - -/obj/structure/particle_accelerator/proc/process_tool_hit(var/obj/O, var/mob/user) - if(!(O) || !(user)) - return 0 - if(!ismob(user) || !isobj(O)) - return 0 - var/temp_state = src.construction_state - - switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps - if(0) - if(istype(O, /obj/item/weapon/wrench) && !isinspace()) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 1 - user.visible_message("[user.name] secures the [src.name] to the floor.", \ - "You secure the external bolts.") - temp_state++ - if(1) - if(istype(O, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 0 - user.visible_message("[user.name] detaches the [src.name] from the floor.", \ - "You remove the external bolts.") - temp_state-- - else if(istype(O, /obj/item/stack/cable_coil)) - if(O:use(1,user)) - user.visible_message("[user.name] adds wires to the [src.name].", \ - "You add some wires.") - temp_state++ - if(2) - if(istype(O, /obj/item/weapon/wirecutters))//TODO:Shock user if its on? - user.visible_message("[user.name] removes some wires from the [src.name].", \ - "You remove some wires.") - temp_state-- - else if(istype(O, /obj/item/weapon/screwdriver)) - user.visible_message("[user.name] closes the [src.name]'s access panel.", \ - "You close the access panel.") - temp_state++ - if(3) - if(istype(O, /obj/item/weapon/screwdriver)) - user.visible_message("[user.name] opens the [src.name]'s access panel.", \ - "You open the access panel.") - temp_state-- - if(temp_state == src.construction_state)//Nothing changed - return 0 - else - src.construction_state = temp_state - if(src.construction_state < 3)//Was taken apart, update state - update_state() - update_icon() - return 1 - return 0 - - - -/obj/machinery/particle_accelerator - name = "Particle Accelerator" - desc = "Part of a Particle Accelerator." - icon = 'icons/obj/machines/particle_accelerator.dmi' - icon_state = "none" - anchored = 0 - density = 1 - use_power = 0 - idle_power_usage = 0 - active_power_usage = 0 - var/construction_state = 0 - var/active = 0 - var/reference = null - var/powered = null - var/strength = 0 - var/desc_holder = null - - -/obj/machinery/particle_accelerator/verb/rotate() - set name = "Rotate Clockwise" - set category = "Object" - set src in oview(1) - - if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" - return 0 - src.dir = turn(src.dir, 270) - return 1 - -/obj/machinery/particle_accelerator/verb/rotateccw() - set name = "Rotate Counter-Clockwise" - set category = "Object" - set src in oview(1) - - if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" - return 0 - src.dir = turn(src.dir, 90) - return 1 - -/obj/machinery/particle_accelerator/update_icon() - return - -/obj/machinery/particle_accelerator/examine() - switch(src.construction_state) - if(0) - src.desc = text("A [name], looks like it's not attached to the flooring") - if(1) - src.desc = text("A [name], it is missing some cables") - if(2) - src.desc = text("A [name], the panel is open") - if(3) - src.desc = text("The [name] is assembled") - if(powered) - src.desc = src.desc_holder - ..() - return - - -/obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user) - if(istool(W)) - if(src.process_tool_hit(W,user)) - return - ..() - return - -/obj/machinery/particle_accelerator/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(50)) - qdel(src) - return - if(3.0) - if (prob(25)) - qdel(src) - return - else - return - - -/obj/machinery/particle_accelerator/blob_act() - if(prob(50)) - qdel(src) - return - - -/obj/machinery/particle_accelerator/meteorhit() - if(prob(50)) - qdel(src) - return - - -/obj/machinery/particle_accelerator/proc/update_state() - return 0 - - -/obj/machinery/particle_accelerator/proc/process_tool_hit(var/obj/O, var/mob/user) - if(!(O) || !(user)) - return 0 - if(!ismob(user) || !isobj(O)) - return 0 - var/temp_state = src.construction_state - switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps - if(0) - if(istype(O, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 1 - user.visible_message("[user.name] secures the [src.name] to the floor.", \ - "You secure the external bolts.") - temp_state++ - if(1) - if(istype(O, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 0 - user.visible_message("[user.name] detaches the [src.name] from the floor.", \ - "You remove the external bolts.") - temp_state-- - else if(istype(O, /obj/item/stack/cable_coil)) - if(O:use(1)) - user.visible_message("[user.name] adds wires to the [src.name].", \ - "You add some wires.") - temp_state++ - if(2) - if(istype(O, /obj/item/weapon/wirecutters))//TODO:Shock user if its on? - user.visible_message("[user.name] removes some wires from the [src.name].", \ - "You remove some wires.") - temp_state-- - else if(istype(O, /obj/item/weapon/screwdriver)) - user.visible_message("[user.name] closes the [src.name]'s access panel.", \ - "You close the access panel.") - temp_state++ - if(3) - if(istype(O, /obj/item/weapon/screwdriver)) - user.visible_message("[user.name] opens the [src.name]'s access panel.", \ - "You open the access panel.") - temp_state-- - active = 0 - if(temp_state == src.construction_state)//Nothing changed - return 0 - else - if(src.construction_state < 3)//Was taken apart, update state - update_state() - if(use_power) - use_power = 0 - src.construction_state = temp_state - if(src.construction_state >= 3) - use_power = 1 - update_icon() - return 1 - return 0 +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 + +/*Composed of 7 parts +3 Particle emitters +proc +emit_particle() + +1 power box +the only part of this thing that uses power, can hack to mess with the pa/make it better + +1 fuel chamber +contains procs for mixing gas and whatever other fuel it uses +mix_gas() + +1 gas holder WIP +acts like a tank valve on the ground that you wrench gas tanks onto +proc +extract_gas() +return_gas() +attach_tank() +remove_tank() +get_available_mix() + +1 End Cap + +1 Control computer +interface for the pa, acts like a computer with an html menu for diff parts and a status report +all other parts contain only a ref to this +a /machine/, tells the others to do work +contains ref for all parts +proc +process() +check_build() + +Setup map + |EC| +CC|FC| + |PB| +PE|PE|PE + + +Icon Addemdum +Icon system is much more robust, and the icons are all variable based. +Each part has a reference string, powered, strength, and contruction values. +Using this the update_icon() proc is simplified a bit (using for absolutely was problematic with naming), +so the icon_state comes out be: +"[reference][strength]", with a switch controlling construction_states and ensuring that it doesn't +power on while being contructed, and all these variables are set by the computer through it's scan list +Essential order of the icons: +Standard - [reference] +Wrenched - [reference] +Wired - [reference]w +Closed - [reference]c +Powered - [reference]p[strength] +Strength being set by the computer and a null strength (Computer is powered off or inactive) returns a 'null', counting as empty +So, hopefully this is helpful if any more icons are to be added/changed/wondering what the hell is going on here + +*/ + +/obj/structure/particle_accelerator + name = "Particle Accelerator" + desc = "Part of a Particle Accelerator." + icon = 'icons/obj/machines/particle_accelerator.dmi' + icon_state = "none" + anchored = 0 + density = 1 + var/obj/machinery/particle_accelerator/control_box/master = null + var/construction_state = 0 + var/reference = null + var/powered = 0 + var/strength = null + var/desc_holder = null + +/obj/structure/particle_accelerator/Destroy() + construction_state = 0 + if(master) + master.part_scan() + ..() + +/obj/structure/particle_accelerator/end_cap + name = "Alpha Particle Generation Array" + desc_holder = "This is where Alpha particles are generated from \[REDACTED\]" + icon_state = "end_cap" + reference = "end_cap" + +/obj/structure/particle_accelerator/update_icon() + ..() + return + + +/obj/structure/particle_accelerator/verb/rotate() + set name = "Rotate Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 270) + return 1 + +/obj/structure/particle_accelerator/verb/rotateccw() + set name = "Rotate Counter Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 90) + return 1 + +/obj/structure/particle_accelerator/examine() + switch(src.construction_state) + if(0) + src.desc = text("A [name], looks like it's not attached to the flooring") + if(1) + src.desc = text("A [name], it is missing some cables") + if(2) + src.desc = text("A [name], the panel is open") + if(3) + src.desc = text("The [name] is assembled") + if(powered) + src.desc = src.desc_holder + ..() + return + + +/obj/structure/particle_accelerator/attackby(obj/item/W, mob/user) + if(istool(W)) + if(src.process_tool_hit(W,user)) + return + ..() + return + + +/obj/structure/particle_accelerator/Move() + ..() + if(master && master.active) + master.toggle_power() + investigate_log("was moved whilst active; it powered down.","singulo") + +/obj/structure/particle_accelerator/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(50)) + qdel(src) + return + if(3.0) + if (prob(25)) + qdel(src) + return + else + return + + +/obj/structure/particle_accelerator/blob_act() + if(prob(50)) + qdel(src) + return + + +/obj/structure/particle_accelerator/meteorhit() + if(prob(50)) + qdel(src) + return + +/obj/structure/particle_accelerator/update_icon() + switch(construction_state) + if(0,1) + icon_state="[reference]" + if(2) + icon_state="[reference]w" + if(3) + if(powered) + icon_state="[reference]p[strength]" + else + icon_state="[reference]c" + return + +/obj/structure/particle_accelerator/proc/update_state() + if(master) + master.update_state() + return 0 + + +/obj/structure/particle_accelerator/proc/report_ready(var/obj/O) + if(O && (O == master)) + if(construction_state >= 3) + return 1 + return 0 + + +/obj/structure/particle_accelerator/proc/report_master() + if(master) + return master + return 0 + + +/obj/structure/particle_accelerator/proc/connect_master(var/obj/O) + if(O && istype(O,/obj/machinery/particle_accelerator/control_box)) + if(O.dir == src.dir) + master = O + return 1 + return 0 + + +/obj/structure/particle_accelerator/proc/process_tool_hit(var/obj/O, var/mob/user) + if(!(O) || !(user)) + return 0 + if(!ismob(user) || !isobj(O)) + return 0 + var/temp_state = src.construction_state + + switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps + if(0) + if(istype(O, /obj/item/weapon/wrench) && !isinspace()) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + src.anchored = 1 + user.visible_message("[user.name] secures the [src.name] to the floor.", \ + "You secure the external bolts.") + temp_state++ + if(1) + if(istype(O, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + src.anchored = 0 + user.visible_message("[user.name] detaches the [src.name] from the floor.", \ + "You remove the external bolts.") + temp_state-- + else if(istype(O, /obj/item/stack/cable_coil)) + if(O:use(1,user)) + user.visible_message("[user.name] adds wires to the [src.name].", \ + "You add some wires.") + temp_state++ + if(2) + if(istype(O, /obj/item/weapon/wirecutters))//TODO:Shock user if its on? + user.visible_message("[user.name] removes some wires from the [src.name].", \ + "You remove some wires.") + temp_state-- + else if(istype(O, /obj/item/weapon/screwdriver)) + user.visible_message("[user.name] closes the [src.name]'s access panel.", \ + "You close the access panel.") + temp_state++ + if(3) + if(istype(O, /obj/item/weapon/screwdriver)) + user.visible_message("[user.name] opens the [src.name]'s access panel.", \ + "You open the access panel.") + temp_state-- + if(temp_state == src.construction_state)//Nothing changed + return 0 + else + src.construction_state = temp_state + if(src.construction_state < 3)//Was taken apart, update state + update_state() + update_icon() + return 1 + return 0 + + + +/obj/machinery/particle_accelerator + name = "Particle Accelerator" + desc = "Part of a Particle Accelerator." + icon = 'icons/obj/machines/particle_accelerator.dmi' + icon_state = "none" + anchored = 0 + density = 1 + use_power = 0 + idle_power_usage = 0 + active_power_usage = 0 + var/construction_state = 0 + var/active = 0 + var/reference = null + var/powered = null + var/strength = 0 + var/desc_holder = null + + +/obj/machinery/particle_accelerator/verb/rotate() + set name = "Rotate Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 270) + return 1 + +/obj/machinery/particle_accelerator/verb/rotateccw() + set name = "Rotate Counter-Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 90) + return 1 + +/obj/machinery/particle_accelerator/update_icon() + return + +/obj/machinery/particle_accelerator/examine() + switch(src.construction_state) + if(0) + src.desc = text("A [name], looks like it's not attached to the flooring") + if(1) + src.desc = text("A [name], it is missing some cables") + if(2) + src.desc = text("A [name], the panel is open") + if(3) + src.desc = text("The [name] is assembled") + if(powered) + src.desc = src.desc_holder + ..() + return + + +/obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user) + if(istool(W)) + if(src.process_tool_hit(W,user)) + return + ..() + return + +/obj/machinery/particle_accelerator/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(50)) + qdel(src) + return + if(3.0) + if (prob(25)) + qdel(src) + return + else + return + + +/obj/machinery/particle_accelerator/blob_act() + if(prob(50)) + qdel(src) + return + + +/obj/machinery/particle_accelerator/meteorhit() + if(prob(50)) + qdel(src) + return + + +/obj/machinery/particle_accelerator/proc/update_state() + return 0 + + +/obj/machinery/particle_accelerator/proc/process_tool_hit(var/obj/O, var/mob/user) + if(!(O) || !(user)) + return 0 + if(!ismob(user) || !isobj(O)) + return 0 + var/temp_state = src.construction_state + switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps + if(0) + if(istype(O, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + src.anchored = 1 + user.visible_message("[user.name] secures the [src.name] to the floor.", \ + "You secure the external bolts.") + temp_state++ + if(1) + if(istype(O, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) + src.anchored = 0 + user.visible_message("[user.name] detaches the [src.name] from the floor.", \ + "You remove the external bolts.") + temp_state-- + else if(istype(O, /obj/item/stack/cable_coil)) + if(O:use(1)) + user.visible_message("[user.name] adds wires to the [src.name].", \ + "You add some wires.") + temp_state++ + if(2) + if(istype(O, /obj/item/weapon/wirecutters))//TODO:Shock user if its on? + user.visible_message("[user.name] removes some wires from the [src.name].", \ + "You remove some wires.") + temp_state-- + else if(istype(O, /obj/item/weapon/screwdriver)) + user.visible_message("[user.name] closes the [src.name]'s access panel.", \ + "You close the access panel.") + temp_state++ + if(3) + if(istype(O, /obj/item/weapon/screwdriver)) + user.visible_message("[user.name] opens the [src.name]'s access panel.", \ + "You open the access panel.") + temp_state-- + active = 0 + if(temp_state == src.construction_state)//Nothing changed + return 0 + else + if(src.construction_state < 3)//Was taken apart, update state + update_state() + if(use_power) + use_power = 0 + src.construction_state = temp_state + if(src.construction_state >= 3) + use_power = 1 + update_icon() + return 1 + return 0 diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 90834ff8489..aa0d1f84412 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -1,118 +1,118 @@ -/obj/item/ammo_casing/energy - name = "energy weapon lens" - desc = "The part of the gun that makes the laser go pew" - caliber = "energy" - projectile_type = /obj/item/projectile/energy - var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot. - var/select_name = "energy" - var/mod_name = null - var/fire_sound = 'sound/weapons/Laser.ogg' - -/obj/item/ammo_casing/energy/laser - projectile_type = /obj/item/projectile/beam - select_name = "kill" - -/obj/item/ammo_casing/energy/laser/practice - projectile_type = /obj/item/projectile/practice - select_name = "practice" - -/obj/item/ammo_casing/energy/laser/scatter - projectile_type = /obj/item/projectile/beam/scatter - pellets = 5 - variance = 0.8 - select_name = "scatter" - -/obj/item/ammo_casing/energy/laser/heavy - projectile_type = /obj/item/projectile/beam/heavylaser - select_name = "anti-vehicle" - fire_sound = 'sound/weapons/lasercannonfire.ogg' - -/obj/item/ammo_casing/energy/laser/pulse - projectile_type = /obj/item/projectile/beam/pulse - e_cost = 200 - select_name = "DESTROY" - fire_sound = 'sound/weapons/pulse.ogg' - -/obj/item/ammo_casing/energy/laser/bluetag - projectile_type = /obj/item/projectile/lasertag/bluetag - select_name = "bluetag" - -/obj/item/ammo_casing/energy/laser/redtag - projectile_type = /obj/item/projectile/lasertag/redtag - select_name = "redtag" - -/obj/item/ammo_casing/energy/bolt - projectile_type = /obj/item/projectile/energy/bolt - select_name = "bolt" - fire_sound = 'sound/weapons/Genhit.ogg' - -/obj/item/ammo_casing/energy/bolt/large - projectile_type = /obj/item/projectile/energy/bolt/large - select_name = "heavy bolt" - -/obj/item/ammo_casing/energy/xray - projectile_type = /obj/item/projectile/beam/xray - e_cost = 50 - fire_sound = 'sound/weapons/laser3.ogg' - -/obj/item/ammo_casing/energy/electrode - projectile_type = /obj/item/projectile/energy/electrode - select_name = "stun" - fire_sound = 'sound/weapons/taser.ogg' - -/obj/item/ammo_casing/energy/electrode/gun - fire_sound = 'sound/weapons/gunshot.ogg' - -/obj/item/ammo_casing/energy/ion - projectile_type = /obj/item/projectile/ion - select_name = "ion" - fire_sound = 'sound/weapons/Laser.ogg' - -/obj/item/ammo_casing/energy/declone - projectile_type = /obj/item/projectile/energy/declone - select_name = "declone" - fire_sound = 'sound/weapons/pulse3.ogg' - -/obj/item/ammo_casing/energy/mindflayer - projectile_type = /obj/item/projectile/beam/mindflayer - select_name = "MINDFUCK" - fire_sound = 'sound/weapons/Laser.ogg' - -/obj/item/ammo_casing/energy/flora - fire_sound = 'sound/effects/stealthoff.ogg' - -/obj/item/ammo_casing/energy/flora/yield - projectile_type = /obj/item/projectile/energy/florayield - select_name = "increase yield" - mod_name = "yield" - -/obj/item/ammo_casing/energy/flora/mut - projectile_type = /obj/item/projectile/energy/floramut - select_name = "induce mutations" - mod_name = "mut" - -/obj/item/ammo_casing/energy/temp - projectile_type = /obj/item/projectile/temp - select_name = "freeze" - e_cost = 250 - fire_sound = 'sound/weapons/pulse3.ogg' - -/obj/item/ammo_casing/energy/temp/hot - projectile_type = /obj/item/projectile/temp/hot - select_name = "bake" - -/obj/item/ammo_casing/energy/meteor - projectile_type = /obj/item/projectile/meteor - select_name = "goddamn meteor" - -/obj/item/ammo_casing/energy/kinetic - projectile_type = /obj/item/projectile/kinetic - select_name = "kinetic" - e_cost = 500 - fire_sound = 'sound/weapons/Gunshot4.ogg' - -/obj/item/ammo_casing/energy/disabler - projectile_type = /obj/item/projectile/energy/disabler - select_name = "disable" - e_cost = 50 +/obj/item/ammo_casing/energy + name = "energy weapon lens" + desc = "The part of the gun that makes the laser go pew" + caliber = "energy" + projectile_type = /obj/item/projectile/energy + var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot. + var/select_name = "energy" + var/mod_name = null + var/fire_sound = 'sound/weapons/Laser.ogg' + +/obj/item/ammo_casing/energy/laser + projectile_type = /obj/item/projectile/beam + select_name = "kill" + +/obj/item/ammo_casing/energy/laser/practice + projectile_type = /obj/item/projectile/practice + select_name = "practice" + +/obj/item/ammo_casing/energy/laser/scatter + projectile_type = /obj/item/projectile/beam/scatter + pellets = 5 + variance = 0.8 + select_name = "scatter" + +/obj/item/ammo_casing/energy/laser/heavy + projectile_type = /obj/item/projectile/beam/heavylaser + select_name = "anti-vehicle" + fire_sound = 'sound/weapons/lasercannonfire.ogg' + +/obj/item/ammo_casing/energy/laser/pulse + projectile_type = /obj/item/projectile/beam/pulse + e_cost = 200 + select_name = "DESTROY" + fire_sound = 'sound/weapons/pulse.ogg' + +/obj/item/ammo_casing/energy/laser/bluetag + projectile_type = /obj/item/projectile/lasertag/bluetag + select_name = "bluetag" + +/obj/item/ammo_casing/energy/laser/redtag + projectile_type = /obj/item/projectile/lasertag/redtag + select_name = "redtag" + +/obj/item/ammo_casing/energy/bolt + projectile_type = /obj/item/projectile/energy/bolt + select_name = "bolt" + fire_sound = 'sound/weapons/Genhit.ogg' + +/obj/item/ammo_casing/energy/bolt/large + projectile_type = /obj/item/projectile/energy/bolt/large + select_name = "heavy bolt" + +/obj/item/ammo_casing/energy/xray + projectile_type = /obj/item/projectile/beam/xray + e_cost = 50 + fire_sound = 'sound/weapons/laser3.ogg' + +/obj/item/ammo_casing/energy/electrode + projectile_type = /obj/item/projectile/energy/electrode + select_name = "stun" + fire_sound = 'sound/weapons/taser.ogg' + +/obj/item/ammo_casing/energy/electrode/gun + fire_sound = 'sound/weapons/gunshot.ogg' + +/obj/item/ammo_casing/energy/ion + projectile_type = /obj/item/projectile/ion + select_name = "ion" + fire_sound = 'sound/weapons/Laser.ogg' + +/obj/item/ammo_casing/energy/declone + projectile_type = /obj/item/projectile/energy/declone + select_name = "declone" + fire_sound = 'sound/weapons/pulse3.ogg' + +/obj/item/ammo_casing/energy/mindflayer + projectile_type = /obj/item/projectile/beam/mindflayer + select_name = "MINDFUCK" + fire_sound = 'sound/weapons/Laser.ogg' + +/obj/item/ammo_casing/energy/flora + fire_sound = 'sound/effects/stealthoff.ogg' + +/obj/item/ammo_casing/energy/flora/yield + projectile_type = /obj/item/projectile/energy/florayield + select_name = "increase yield" + mod_name = "yield" + +/obj/item/ammo_casing/energy/flora/mut + projectile_type = /obj/item/projectile/energy/floramut + select_name = "induce mutations" + mod_name = "mut" + +/obj/item/ammo_casing/energy/temp + projectile_type = /obj/item/projectile/temp + select_name = "freeze" + e_cost = 250 + fire_sound = 'sound/weapons/pulse3.ogg' + +/obj/item/ammo_casing/energy/temp/hot + projectile_type = /obj/item/projectile/temp/hot + select_name = "bake" + +/obj/item/ammo_casing/energy/meteor + projectile_type = /obj/item/projectile/meteor + select_name = "goddamn meteor" + +/obj/item/ammo_casing/energy/kinetic + projectile_type = /obj/item/projectile/kinetic + select_name = "kinetic" + e_cost = 500 + fire_sound = 'sound/weapons/Gunshot4.ogg' + +/obj/item/ammo_casing/energy/disabler + projectile_type = /obj/item/projectile/energy/disabler + select_name = "disable" + e_cost = 50 fire_sound = "sound/weapons/taser.ogg" \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 81b6af92124..1e44c1c7c73 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -1,161 +1,161 @@ -////////////////INTERNAL MAGAZINES////////////////////// -/obj/item/ammo_box/magazine/internal/cylinder - name = "revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/a357 - caliber = "357" - max_ammo = 7 - -/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(var/countempties = 1) - if (!countempties) - var/boolets = 0 - for (var/i = 1, i <= stored_ammo.len, i++) - var/obj/item/ammo_casing/bullet = stored_ammo[i] - if (bullet.BB) - boolets++ - return boolets - else - return ..() - -/obj/item/ammo_box/magazine/internal/cylinder/rus357 - name = "russian revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/a357 - caliber = "357" - max_ammo = 6 - multiload = 0 - -/obj/item/ammo_box/magazine/internal/cylinder/rus357/New() - stored_ammo += new ammo_type(src) - -/obj/item/ammo_box/magazine/internal/cylinder/rev38 - name = "d-tiv revolver cylinder" - desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/c38 - caliber = "38" - max_ammo = 6 - -/obj/item/ammo_box/magazine/internal/shot - name = "shotgun internal magazine" - desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/shotgun/beanbag - caliber = "shotgun" - max_ammo = 4 - multiload = 0 - -/obj/item/ammo_box/magazine/internal/shotcom - name = "combat shotgun internal magazine" - desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/shotgun/buckshot - caliber = "shotgun" - max_ammo = 8 - multiload = 0 - -/obj/item/ammo_box/magazine/internal/cylinder/dualshot - name = "double-barrel shotgun internal magazine" - desc = "This doesn't even exist" - ammo_type = /obj/item/ammo_casing/shotgun/beanbag - caliber = "shotgun" - max_ammo = 2 - multiload = 0 - -///////////EXTERNAL MAGAZINES//////////////// -/obj/item/ammo_box/magazine/m9mm - name = "magazine (9mm)" - icon_state = "9x19p" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/c9mm - caliber = "9mm" - max_ammo = 8 - multiple_sprites = 2 - -/obj/item/ammo_box/magazine/msmg9mm - name = "SMG magazine (9mm)" - icon_state = "smg9mm" - ammo_type = /obj/item/ammo_casing/c9mm - caliber = "9mm" - max_ammo = 18 - -/obj/item/ammo_box/magazine/msmg9mm/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),3)]" - -/obj/item/ammo_box/magazine/m10mm - name = "magazine (10mm)" - icon_state = "9x19p" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/c10mm - caliber = "10mm" - max_ammo = 8 - multiple_sprites = 2 - -/obj/item/ammo_box/magazine/m12mm - name = "magazine (12mm)" - icon_state = "12mm" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a12mm - caliber = "12mm" - max_ammo = 20 - -/obj/item/ammo_box/magazine/m12mm/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]" - -/obj/item/ammo_box/magazine/sm45 - name = "magazine (.45)" - icon_state = "9x19p" - ammo_type = /obj/item/ammo_casing/c45 - caliber = ".45" - max_ammo = 12 - -/obj/item/ammo_box/magazine/sm45/update_icon() - ..() - icon_state = "[initial(icon_state)]-[ammo_count() ? "8" : "0"]" - -/obj/item/ammo_box/magazine/uzim45 - name = "Uzi magazine (.45)" - icon_state = "uzi45" - ammo_type = /obj/item/ammo_casing/c45 - caliber = ".45" - max_ammo = 16 - -/obj/item/ammo_box/magazine/uzim45/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]" - -obj/item/ammo_box/magazine/tommygunm45 - name = "tommy gun drum (.45)" - icon_state = "drum45" - ammo_type = /obj/item/ammo_casing/c45 - caliber = ".45" - max_ammo = 50 - -/obj/item/ammo_box/magazine/m50 - name = "magazine (.50ae)" - icon_state = "50ae" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a50 - caliber = ".50" - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_box/magazine/m75 - name = "magazine (.75)" - icon_state = "75" - ammo_type = /obj/item/ammo_casing/caseless/a75 - caliber = "75" - multiple_sprites = 2 - max_ammo = 8 - -/obj/item/ammo_box/magazine/m762 - name = "magazine (7.62mm)" - icon_state = "a762" - origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a762 - caliber = "a762" - max_ammo = 50 - - -/obj/item/ammo_box/magazine/m762/update_icon() - ..() +////////////////INTERNAL MAGAZINES////////////////////// +/obj/item/ammo_box/magazine/internal/cylinder + name = "revolver cylinder" + desc = "Oh god, this shouldn't be here" + ammo_type = /obj/item/ammo_casing/a357 + caliber = "357" + max_ammo = 7 + +/obj/item/ammo_box/magazine/internal/cylinder/ammo_count(var/countempties = 1) + if (!countempties) + var/boolets = 0 + for (var/i = 1, i <= stored_ammo.len, i++) + var/obj/item/ammo_casing/bullet = stored_ammo[i] + if (bullet.BB) + boolets++ + return boolets + else + return ..() + +/obj/item/ammo_box/magazine/internal/cylinder/rus357 + name = "russian revolver cylinder" + desc = "Oh god, this shouldn't be here" + ammo_type = /obj/item/ammo_casing/a357 + caliber = "357" + max_ammo = 6 + multiload = 0 + +/obj/item/ammo_box/magazine/internal/cylinder/rus357/New() + stored_ammo += new ammo_type(src) + +/obj/item/ammo_box/magazine/internal/cylinder/rev38 + name = "d-tiv revolver cylinder" + desc = "Oh god, this shouldn't be here" + ammo_type = /obj/item/ammo_casing/c38 + caliber = "38" + max_ammo = 6 + +/obj/item/ammo_box/magazine/internal/shot + name = "shotgun internal magazine" + desc = "Oh god, this shouldn't be here" + ammo_type = /obj/item/ammo_casing/shotgun/beanbag + caliber = "shotgun" + max_ammo = 4 + multiload = 0 + +/obj/item/ammo_box/magazine/internal/shotcom + name = "combat shotgun internal magazine" + desc = "Oh god, this shouldn't be here" + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + caliber = "shotgun" + max_ammo = 8 + multiload = 0 + +/obj/item/ammo_box/magazine/internal/cylinder/dualshot + name = "double-barrel shotgun internal magazine" + desc = "This doesn't even exist" + ammo_type = /obj/item/ammo_casing/shotgun/beanbag + caliber = "shotgun" + max_ammo = 2 + multiload = 0 + +///////////EXTERNAL MAGAZINES//////////////// +/obj/item/ammo_box/magazine/m9mm + name = "magazine (9mm)" + icon_state = "9x19p" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/c9mm + caliber = "9mm" + max_ammo = 8 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/msmg9mm + name = "SMG magazine (9mm)" + icon_state = "smg9mm" + ammo_type = /obj/item/ammo_casing/c9mm + caliber = "9mm" + max_ammo = 18 + +/obj/item/ammo_box/magazine/msmg9mm/update_icon() + ..() + icon_state = "[initial(icon_state)]-[round(ammo_count(),3)]" + +/obj/item/ammo_box/magazine/m10mm + name = "magazine (10mm)" + icon_state = "9x19p" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/c10mm + caliber = "10mm" + max_ammo = 8 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/m12mm + name = "magazine (12mm)" + icon_state = "12mm" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/a12mm + caliber = "12mm" + max_ammo = 20 + +/obj/item/ammo_box/magazine/m12mm/update_icon() + ..() + icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]" + +/obj/item/ammo_box/magazine/sm45 + name = "magazine (.45)" + icon_state = "9x19p" + ammo_type = /obj/item/ammo_casing/c45 + caliber = ".45" + max_ammo = 12 + +/obj/item/ammo_box/magazine/sm45/update_icon() + ..() + icon_state = "[initial(icon_state)]-[ammo_count() ? "8" : "0"]" + +/obj/item/ammo_box/magazine/uzim45 + name = "Uzi magazine (.45)" + icon_state = "uzi45" + ammo_type = /obj/item/ammo_casing/c45 + caliber = ".45" + max_ammo = 16 + +/obj/item/ammo_box/magazine/uzim45/update_icon() + ..() + icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]" + +obj/item/ammo_box/magazine/tommygunm45 + name = "tommy gun drum (.45)" + icon_state = "drum45" + ammo_type = /obj/item/ammo_casing/c45 + caliber = ".45" + max_ammo = 50 + +/obj/item/ammo_box/magazine/m50 + name = "magazine (.50ae)" + icon_state = "50ae" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/a50 + caliber = ".50" + max_ammo = 7 + multiple_sprites = 1 + +/obj/item/ammo_box/magazine/m75 + name = "magazine (.75)" + icon_state = "75" + ammo_type = /obj/item/ammo_casing/caseless/a75 + caliber = "75" + multiple_sprites = 2 + max_ammo = 8 + +/obj/item/ammo_box/magazine/m762 + name = "magazine (7.62mm)" + icon_state = "a762" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/a762 + caliber = "a762" + max_ammo = 50 + + +/obj/item/ammo_box/magazine/m762/update_icon() + ..() icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]" \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index e530d7c2fca..6a1700decb5 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -1,30 +1,30 @@ -/obj/item/ammo_casing/magic - name = "magic casing" - desc = "I didn't even know magic needed ammo..." - projectile_type = /obj/item/projectile/magic - -/obj/item/ammo_casing/magic/change - projectile_type = /obj/item/projectile/magic/change - -/obj/item/ammo_casing/magic/animate - projectile_type = /obj/item/projectile/magic/animate - -/obj/item/ammo_casing/magic/heal - projectile_type = /obj/item/projectile/magic/resurrection - -/obj/item/ammo_casing/magic/death - projectile_type = /obj/item/projectile/magic/death - -/obj/item/ammo_casing/magic/teleport - projectile_type = /obj/item/projectile/magic/teleport - -/obj/item/ammo_casing/magic/door - projectile_type = /obj/item/projectile/magic/door - -/obj/item/ammo_casing/magic/fireball - projectile_type = /obj/item/projectile/magic/fireball - -/obj/item/ammo_casing/syringegun - name = "syringe gun spring" - desc = "A high-power spring that throws syringes." +/obj/item/ammo_casing/magic + name = "magic casing" + desc = "I didn't even know magic needed ammo..." + projectile_type = /obj/item/projectile/magic + +/obj/item/ammo_casing/magic/change + projectile_type = /obj/item/projectile/magic/change + +/obj/item/ammo_casing/magic/animate + projectile_type = /obj/item/projectile/magic/animate + +/obj/item/ammo_casing/magic/heal + projectile_type = /obj/item/projectile/magic/resurrection + +/obj/item/ammo_casing/magic/death + projectile_type = /obj/item/projectile/magic/death + +/obj/item/ammo_casing/magic/teleport + projectile_type = /obj/item/projectile/magic/teleport + +/obj/item/ammo_casing/magic/door + projectile_type = /obj/item/projectile/magic/door + +/obj/item/ammo_casing/magic/fireball + projectile_type = /obj/item/projectile/magic/fireball + +/obj/item/ammo_casing/syringegun + name = "syringe gun spring" + desc = "A high-power spring that throws syringes." projectile_type = null \ No newline at end of file diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index 88853f6378f..ed755495b46 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -1,61 +1,61 @@ -/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, var/distro, var/quiet) - distro += variance - for (var/i = max(1, pellets), i > 0, i--) - var/curloc = user.loc - var/targloc = get_turf(target) - ready_proj(target, user, quiet) - if(distro) - targloc = spread(targloc, curloc, distro) - if(!throw_proj(targloc, user, params)) - return 0 - if(i > 1) - newshot() - user.next_move = world.time + 4 - update_icon() - return 1 - -/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, var/quiet) - if (!BB) - return - BB.original = target - BB.firer = user - BB.def_zone = user.zone_sel.selecting - BB.silenced = quiet - - if(reagents && BB.reagents) - reagents.trans_to(BB, reagents.total_volume) //For chemical darts/bullets - reagents.delete() - return - -/obj/item/ammo_casing/proc/throw_proj(var/turf/targloc, mob/living/user as mob|obj, params) - var/turf/curloc = user.loc - if (!istype(targloc) || !istype(curloc) || !BB) - return 0 - if(targloc == curloc) //Fire the projectile - user.bullet_act(BB) - qdel(BB) - return 1 - BB.loc = get_turf(user) - BB.starting = get_turf(user) - BB.current = curloc - BB.yo = targloc.y - curloc.y - BB.xo = targloc.x - curloc.x - - if(params) - var/list/mouse_control = params2list(params) - if(mouse_control["icon-x"]) - BB.p_x = text2num(mouse_control["icon-x"]) - if(mouse_control["icon-y"]) - BB.p_y = text2num(mouse_control["icon-y"]) - - if(BB) - BB.process() - BB = null - return 1 - -/obj/item/ammo_casing/proc/spread(var/turf/target, var/turf/current, var/distro) - var/dx = abs(target.x - current.x) - var/dy = abs(target.y - current.y) - return locate(target.x + round(gaussian(0, distro) * (dy+2)/8, 1), target.y + round(gaussian(0, distro) * (dx+2)/8, 1), target.z) - +/obj/item/ammo_casing/proc/fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, params, var/distro, var/quiet) + distro += variance + for (var/i = max(1, pellets), i > 0, i--) + var/curloc = user.loc + var/targloc = get_turf(target) + ready_proj(target, user, quiet) + if(distro) + targloc = spread(targloc, curloc, distro) + if(!throw_proj(targloc, user, params)) + return 0 + if(i > 1) + newshot() + user.next_move = world.time + 4 + update_icon() + return 1 + +/obj/item/ammo_casing/proc/ready_proj(atom/target as mob|obj|turf, mob/living/user, var/quiet) + if (!BB) + return + BB.original = target + BB.firer = user + BB.def_zone = user.zone_sel.selecting + BB.silenced = quiet + + if(reagents && BB.reagents) + reagents.trans_to(BB, reagents.total_volume) //For chemical darts/bullets + reagents.delete() + return + +/obj/item/ammo_casing/proc/throw_proj(var/turf/targloc, mob/living/user as mob|obj, params) + var/turf/curloc = user.loc + if (!istype(targloc) || !istype(curloc) || !BB) + return 0 + if(targloc == curloc) //Fire the projectile + user.bullet_act(BB) + qdel(BB) + return 1 + BB.loc = get_turf(user) + BB.starting = get_turf(user) + BB.current = curloc + BB.yo = targloc.y - curloc.y + BB.xo = targloc.x - curloc.x + + if(params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + BB.p_x = text2num(mouse_control["icon-x"]) + if(mouse_control["icon-y"]) + BB.p_y = text2num(mouse_control["icon-y"]) + + if(BB) + BB.process() + BB = null + return 1 + +/obj/item/ammo_casing/proc/spread(var/turf/target, var/turf/current, var/distro) + var/dx = abs(target.x - current.x) + var/dy = abs(target.y - current.y) + return locate(target.x + round(gaussian(0, distro) * (dy+2)/8, 1), target.y + round(gaussian(0, distro) * (dx+2)/8, 1), target.z) + // gaussian(0, distro) \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 284c49f2f91..b9afac39484 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1,99 +1,99 @@ -/obj/item/weapon/gun - name = "gun" - desc = "It's a gun. It's pretty terrible, though." - icon = 'icons/obj/gun.dmi' - icon_state = "detective" - item_state = "gun" - flags = CONDUCT - slot_flags = SLOT_BELT - m_amt = 2000 - w_class = 3.0 - throwforce = 5 - throw_speed = 3 - throw_range = 5 - force = 5.0 - origin_tech = "combat=1" - attack_verb = list("struck", "hit", "bashed") - - var/fire_sound = "gunshot" - var/silenced = 0 - var/recoil = 0 - var/clumsy_check = 1 - var/obj/item/ammo_casing/chambered = null - var/trigger_guard = 1 - - proc/process_chamber() - return 0 - - proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. - return 1 - - proc/shoot_with_empty_chamber(mob/living/user as mob|obj) - user << "*click*" - return - - proc/shoot_live_shot(mob/living/user as mob|obj) - if(recoil) - spawn() - shake_camera(user, recoil + 1, recoil) - - if(silenced) - playsound(user, fire_sound, 10, 1) - else - playsound(user, fire_sound, 50, 1) - user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!") - - emp_act(severity) - for(var/obj/O in contents) - O.emp_act(severity) - - - afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)//TODO: go over this - if(flag) //It's adjacent, is the user, or is on the user's person - return - - //Exclude lasertag guns from the CLUMSY check. - if(clumsy_check) - if(istype(user, /mob/living)) - var/mob/living/M = user - if ((CLUMSY in M.mutations) && prob(40)) - M << "You shoot yourself in the foot with \the [src]!" - afterattack(user, user) - M.drop_item() - return - - if (!user.IsAdvancedToolUser()) - user << "You don't have the dexterity to do this!" - return - - if(trigger_guard) - if(istype(user, /mob/living)) - var/mob/living/M = user - if (HULK in M.mutations) - M << "Your meaty finger is much too large for the trigger guard!" - return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna && H.dna.mutantrace == "adamantine") - user << "Your metal fingers don't fit in the trigger guard!" - return - - add_fingerprint(user) - - if(!special_check(user)) - return - if(chambered) - if(!chambered.fire(target, user, params, , silenced)) - shoot_with_empty_chamber(user) - else - shoot_live_shot(user) - else - shoot_with_empty_chamber(user) - process_chamber() - update_icon() - - if(user.hand) - user.update_inv_l_hand(0) - else - user.update_inv_r_hand(0) - +/obj/item/weapon/gun + name = "gun" + desc = "It's a gun. It's pretty terrible, though." + icon = 'icons/obj/gun.dmi' + icon_state = "detective" + item_state = "gun" + flags = CONDUCT + slot_flags = SLOT_BELT + m_amt = 2000 + w_class = 3.0 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + force = 5.0 + origin_tech = "combat=1" + attack_verb = list("struck", "hit", "bashed") + + var/fire_sound = "gunshot" + var/silenced = 0 + var/recoil = 0 + var/clumsy_check = 1 + var/obj/item/ammo_casing/chambered = null + var/trigger_guard = 1 + + proc/process_chamber() + return 0 + + proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. + return 1 + + proc/shoot_with_empty_chamber(mob/living/user as mob|obj) + user << "*click*" + return + + proc/shoot_live_shot(mob/living/user as mob|obj) + if(recoil) + spawn() + shake_camera(user, recoil + 1, recoil) + + if(silenced) + playsound(user, fire_sound, 10, 1) + else + playsound(user, fire_sound, 50, 1) + user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!") + + emp_act(severity) + for(var/obj/O in contents) + O.emp_act(severity) + + + afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)//TODO: go over this + if(flag) //It's adjacent, is the user, or is on the user's person + return + + //Exclude lasertag guns from the CLUMSY check. + if(clumsy_check) + if(istype(user, /mob/living)) + var/mob/living/M = user + if ((CLUMSY in M.mutations) && prob(40)) + M << "You shoot yourself in the foot with \the [src]!" + afterattack(user, user) + M.drop_item() + return + + if (!user.IsAdvancedToolUser()) + user << "You don't have the dexterity to do this!" + return + + if(trigger_guard) + if(istype(user, /mob/living)) + var/mob/living/M = user + if (HULK in M.mutations) + M << "Your meaty finger is much too large for the trigger guard!" + return + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.dna && H.dna.mutantrace == "adamantine") + user << "Your metal fingers don't fit in the trigger guard!" + return + + add_fingerprint(user) + + if(!special_check(user)) + return + if(chambered) + if(!chambered.fire(target, user, params, , silenced)) + shoot_with_empty_chamber(user) + else + shoot_live_shot(user) + else + shoot_with_empty_chamber(user) + process_chamber() + update_icon() + + if(user.hand) + user.update_inv_l_hand(0) + else + user.update_inv_r_hand(0) + diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 770b1ae5af0..570ae8e60f2 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -1,54 +1,54 @@ -/obj/item/weapon/gun/magic - name = "staff of nothing" - desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years." - icon = 'icons/obj/gun.dmi' - icon_state = "staffofnothing" - item_state = "staff" - fire_sound = 'sound/weapons/emitter.ogg' - flags = CONDUCT - w_class = 5 - var/max_charges = 6 - var/charges = 0 - var/recharge_rate = 4 - var/charge_tick = 0 - var/can_charge = 1 - var/ammo_type - origin_tech = null - clumsy_check = 0 - trigger_guard = 0 - -/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag) - newshot() - ..() - -/obj/item/weapon/gun/magic/proc/newshot() - if (charges && chambered) - chambered.newshot() - charges-- - return - -/obj/item/weapon/gun/magic/New() - ..() - charges = max_charges - chambered = new ammo_type(src) - if(can_charge) processing_objects.Add(src) - - -/obj/item/weapon/gun/magic/Destroy() - if(can_charge) processing_objects.Remove(src) - ..() - - -/obj/item/weapon/gun/magic/process() - charge_tick++ - if(charge_tick < recharge_rate || charges >= max_charges) return 0 - charge_tick = 0 - charges++ - return 1 - -/obj/item/weapon/gun/magic/update_icon() - return - -/obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) - user << "The [name] whizzles quietly." +/obj/item/weapon/gun/magic + name = "staff of nothing" + desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years." + icon = 'icons/obj/gun.dmi' + icon_state = "staffofnothing" + item_state = "staff" + fire_sound = 'sound/weapons/emitter.ogg' + flags = CONDUCT + w_class = 5 + var/max_charges = 6 + var/charges = 0 + var/recharge_rate = 4 + var/charge_tick = 0 + var/can_charge = 1 + var/ammo_type + origin_tech = null + clumsy_check = 0 + trigger_guard = 0 + +/obj/item/weapon/gun/magic/afterattack(atom/target as mob, mob/living/user as mob, flag) + newshot() + ..() + +/obj/item/weapon/gun/magic/proc/newshot() + if (charges && chambered) + chambered.newshot() + charges-- + return + +/obj/item/weapon/gun/magic/New() + ..() + charges = max_charges + chambered = new ammo_type(src) + if(can_charge) processing_objects.Add(src) + + +/obj/item/weapon/gun/magic/Destroy() + if(can_charge) processing_objects.Remove(src) + ..() + + +/obj/item/weapon/gun/magic/process() + charge_tick++ + if(charge_tick < recharge_rate || charges >= max_charges) return 0 + charge_tick = 0 + charges++ + return 1 + +/obj/item/weapon/gun/magic/update_icon() + return + +/obj/item/weapon/gun/magic/shoot_with_empty_chamber(mob/living/user as mob|obj) + user << "The [name] whizzles quietly." return \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic/staff.dm b/code/modules/projectiles/guns/magic/staff.dm index a07ea02d7c9..fc74cae28a8 100644 --- a/code/modules/projectiles/guns/magic/staff.dm +++ b/code/modules/projectiles/guns/magic/staff.dm @@ -1,23 +1,23 @@ -obj/item/weapon/gun/magic/staff/ - slot_flags = SLOT_BACK - -obj/item/weapon/gun/magic/staff/change - name = "staff of change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" - ammo_type = /obj/item/ammo_casing/magic/change - icon_state = "staffofchange" - item_state = "staffofchange" - -obj/item/weapon/gun/magic/staff/animate - name = "staff of animation" - desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - ammo_type = /obj/item/ammo_casing/magic/animate - icon_state = "staffofanimation" - item_state = "staffofanimation" - -obj/item/weapon/gun/magic/staff/healing - name = "staff of healing" - desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." - ammo_type = /obj/item/ammo_casing/magic/heal - icon_state = "staffofhealing" - item_state = "staffofhealing" +obj/item/weapon/gun/magic/staff/ + slot_flags = SLOT_BACK + +obj/item/weapon/gun/magic/staff/change + name = "staff of change" + desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" + ammo_type = /obj/item/ammo_casing/magic/change + icon_state = "staffofchange" + item_state = "staffofchange" + +obj/item/weapon/gun/magic/staff/animate + name = "staff of animation" + desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." + ammo_type = /obj/item/ammo_casing/magic/animate + icon_state = "staffofanimation" + item_state = "staffofanimation" + +obj/item/weapon/gun/magic/staff/healing + name = "staff of healing" + desc = "An artefact that spits bolts of restoring magic which can remove ailments of all kinds and even raise the dead." + ammo_type = /obj/item/ammo_casing/magic/heal + icon_state = "staffofhealing" + item_state = "staffofhealing" diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index b25e68c4aa6..4efb2c10d62 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -1,124 +1,124 @@ -/obj/item/weapon/gun/magic/wand/ - name = "wand of nothing" - desc = "It's not just a stick, it's a MAGIC stick!" - ammo_type = /obj/item/ammo_casing/magic - icon_state = "nothingwand" - item_state = "wand" - w_class = 2 - can_charge = 0 - max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) - var/variable_charges = 1 - -/obj/item/weapon/gun/magic/wand/New() - if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges - if(prob(33)) - max_charges = Ceiling(max_charges / 3) - else - max_charges = Ceiling(max_charges / 2) - ..() - -/obj/item/weapon/gun/magic/wand/examine() - ..() - usr << "Has [charges] charge\s remaining." - return - -/obj/item/weapon/gun/magic/wand/update_icon() - icon_state = "[initial(icon_state)][charges ? "" : "-drained"]" - -/obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) - if(target == user) - return - ..() - -/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) - if(!charges) - shoot_with_empty_chamber(user) - return - if(target == user) - zap_self(user) - else - ..() - update_icon() - - -/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) - user.visible_message("[user] zaps \himself with [src]!") - playsound(user, fire_sound, 50, 1) - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" - -/obj/item/weapon/gun/magic/wand/death - name = "wand of death" - desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." - ammo_type = /obj/item/ammo_casing/magic/death - icon_state = "deathwand" - max_charges = 3 //3, 2, 2, 1 - -/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) - var/message ="You irradiate yourself with pure energy! " - message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") - user << message - user.adjustOxyLoss(500) - charges-- - ..() - -/obj/item/weapon/gun/magic/wand/resurrection - name = "wand of healing" - desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." - ammo_type = /obj/item/ammo_casing/magic/heal - icon_state = "revivewand" - max_charges = 10 //10, 5, 5, 4 - -/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) - user.revive() - user << "You feel great!" - charges-- - ..() - -/obj/item/weapon/gun/magic/wand/polymorph - name = "wand of polymorph" - desc = "This wand is attuned to chaos and will radically alter the victim's form." - ammo_type = /obj/item/ammo_casing/magic/change - icon_state = "polywand" - max_charges = 10 //10, 5, 5, 4 - -/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) - ..() //because the user mob ceases to exists by the time wabbajack fully resolves - wabbajack(user) - charges-- - -/obj/item/weapon/gun/magic/wand/teleport - name = "wand of teleportation" - desc = "This wand will wrench targets through space and time to move them somewhere else." - ammo_type = /obj/item/ammo_casing/magic/teleport - icon_state = "telewand" - max_charges = 10 //10, 5, 5, 4 - -/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) - do_teleport(user, user, 10) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() - smoke.set_up(10, 0, user.loc) - smoke.start() - charges-- - ..() - -/obj/item/weapon/gun/magic/wand/door - name = "wand of door creation" - desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." - ammo_type = /obj/item/ammo_casing/magic/door - icon_state = "doorwand" - max_charges = 20 //20, 10, 10, 7 - -/obj/item/weapon/gun/magic/wand/door/zap_self() - return - -/obj/item/weapon/gun/magic/wand/fireball - name = "wand of fireball" - desc = "This wand shoots scorching balls of fire that explode into destructive flames." - ammo_type = /obj/item/ammo_casing/magic/fireball - icon_state = "firewand" - max_charges = 8 //8, 4, 4, 3 - -/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - charges-- +/obj/item/weapon/gun/magic/wand/ + name = "wand of nothing" + desc = "It's not just a stick, it's a MAGIC stick!" + ammo_type = /obj/item/ammo_casing/magic + icon_state = "nothingwand" + item_state = "wand" + w_class = 2 + can_charge = 0 + max_charges = 100 //100, 50, 50, 34 (max charge distribution by 25%ths) + var/variable_charges = 1 + +/obj/item/weapon/gun/magic/wand/New() + if(prob(75) && variable_charges) //25% chance of listed max charges, 50% chance of 1/2 max charges, 25% chance of 1/3 max charges + if(prob(33)) + max_charges = Ceiling(max_charges / 3) + else + max_charges = Ceiling(max_charges / 2) + ..() + +/obj/item/weapon/gun/magic/wand/examine() + ..() + usr << "Has [charges] charge\s remaining." + return + +/obj/item/weapon/gun/magic/wand/update_icon() + icon_state = "[initial(icon_state)][charges ? "" : "-drained"]" + +/obj/item/weapon/gun/magic/wand/attack(atom/target as mob, mob/living/user as mob) + if(target == user) + return + ..() + +/obj/item/weapon/gun/magic/wand/afterattack(atom/target as mob, mob/living/user as mob) + if(!charges) + shoot_with_empty_chamber(user) + return + if(target == user) + zap_self(user) + else + ..() + update_icon() + + +/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob) + user.visible_message("[user] zaps \himself with [src]!") + playsound(user, fire_sound, 50, 1) + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" + +/obj/item/weapon/gun/magic/wand/death + name = "wand of death" + desc = "This deadly wand overwhelms the victim's body with pure energy, slaying them without fail." + ammo_type = /obj/item/ammo_casing/magic/death + icon_state = "deathwand" + max_charges = 3 //3, 2, 2, 1 + +/obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user as mob) + var/message ="You irradiate yourself with pure energy! " + message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") + user << message + user.adjustOxyLoss(500) + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/resurrection + name = "wand of healing" + desc = "This wand uses healing magics to heal and revive. They are rarely utilized within the Wizard Federation for some reason." + ammo_type = /obj/item/ammo_casing/magic/heal + icon_state = "revivewand" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user as mob) + user.revive() + user << "You feel great!" + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/polymorph + name = "wand of polymorph" + desc = "This wand is attuned to chaos and will radically alter the victim's form." + ammo_type = /obj/item/ammo_casing/magic/change + icon_state = "polywand" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/polymorph/zap_self(mob/living/user as mob) + ..() //because the user mob ceases to exists by the time wabbajack fully resolves + wabbajack(user) + charges-- + +/obj/item/weapon/gun/magic/wand/teleport + name = "wand of teleportation" + desc = "This wand will wrench targets through space and time to move them somewhere else." + ammo_type = /obj/item/ammo_casing/magic/teleport + icon_state = "telewand" + max_charges = 10 //10, 5, 5, 4 + +/obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user as mob) + do_teleport(user, user, 10) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(10, 0, user.loc) + smoke.start() + charges-- + ..() + +/obj/item/weapon/gun/magic/wand/door + name = "wand of door creation" + desc = "This particular wand can create doors in any wall for the unscrupulous wizard who shuns teleportation magics." + ammo_type = /obj/item/ammo_casing/magic/door + icon_state = "doorwand" + max_charges = 20 //20, 10, 10, 7 + +/obj/item/weapon/gun/magic/wand/door/zap_self() + return + +/obj/item/weapon/gun/magic/wand/fireball + name = "wand of fireball" + desc = "This wand shoots scorching balls of fire that explode into destructive flames." + ammo_type = /obj/item/ammo_casing/magic/fireball + icon_state = "firewand" + max_charges = 8 //8, 4, 4, 3 + +/obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user as mob) + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + charges-- ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index df7e2ff16d4..a5db8167cf4 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -1,248 +1,248 @@ -/obj/item/projectile/magic - name = "bolt of nothing" - icon_state = "energy" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" - -/obj/item/projectile/magic/death - name = "bolt of death" - icon_state = "pulse1_bl" - -/obj/item/projectile/magic/death/on_hit(var/target) - if(ismob(target)) - var/mob/M = target - M.death(0) - -/obj/item/projectile/magic/fireball - name = "bolt of fireball" - icon_state = "fireball" - damage = 25 //The spell fireball additionally does 20 burn, so the wand fireball is marginally less painful - damage_type = BRUTE - nodamage = 0 - flag = "magic" - -/obj/item/projectile/magic/fireball/on_hit(var/target) - var/turf/T = get_turf(target) - explosion(T, -1, 0, 2, 3, 0, flame_range = 2) - -/obj/item/projectile/magic/resurrection - name = "bolt of resurrection" - icon_state = "ion" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" - -/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) - - if(istype(target,/mob)) - var/old_stat = target.stat - target.revive() - target.suiciding = 0 - if(!target.ckey) - for(var/mob/dead/observer/ghost in player_list) - if(target.real_name == ghost.real_name) - ghost.reenter_corpse() - break - if(old_stat != DEAD) - target << "You feel great!" - else - target << "You rise with a start, you're alive!!!" - -/obj/item/projectile/magic/teleport - name = "bolt of teleportation" - icon_state = "bluespace" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" - var/inner_tele_radius = 0 - var/outer_tele_radius = 6 - -/obj/item/projectile/magic/teleport/on_hit(var/mob/target) - var/teleammount = 0 - var/teleloc = target - if(!isturf(target)) - teleloc = target.loc - for(var/atom/movable/stuff in teleloc) - if(!stuff.anchored && stuff.loc) - teleammount++ - do_teleport(stuff, stuff, 10) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() - smoke.set_up(max(round(10 - teleammount),1), 0, stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity - smoke.start() - -/obj/item/projectile/magic/door - name = "bolt of door creation" - icon_state = "energy" - damage = 0 - damage_type = OXY - nodamage = 1 - flag = "magic" - -/obj/item/projectile/magic/door/on_hit(var/atom/target) - var/atom/T = target.loc - if(isturf(target)) - if(target.density) - new /obj/structure/mineral_door/wood(target) - target:ChangeTurf(/turf/simulated/floor/plating) - else if (isturf(T)) - if(T.density) - new /obj/structure/mineral_door/wood(T) - T:ChangeTurf(/turf/simulated/floor/plating) - -/obj/item/projectile/magic/change - name = "bolt of change" - icon_state = "ice_1" - damage = 0 - damage_type = BURN - nodamage = 1 - flag = "magic" - -/obj/item/projectile/magic/change/on_hit(var/atom/change) - wabbajack(change) - -proc/wabbajack(mob/living/M) - if(istype(M)) - if(istype(M, /mob/living) && M.stat != DEAD) - if(M.notransform) return - M.notransform = 1 - M.canmove = 0 - M.icon = null - M.overlays.Cut() - M.invisibility = 101 - - if(istype(M, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) qdel(Robot.mmi) - else - for(var/obj/item/W in M) - if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - qdel(W) - continue - W.layer = initial(W.layer) - W.loc = M.loc - W.dropped(M) - - var/mob/living/new_mob - - var/randomize = pick("monkey","robot","slime","xeno","human","animal") - switch(randomize) - if("monkey") - new_mob = new /mob/living/carbon/monkey(M.loc) - new_mob.universal_speak = 1 - if("robot") - if(prob(30)) - new_mob = new /mob/living/silicon/robot/syndicate(M.loc) - else - new_mob = new /mob/living/silicon/robot(M.loc) - new_mob.gender = M.gender - new_mob.invisibility = 0 - new_mob.job = "Cyborg" - var/mob/living/silicon/robot/Robot = new_mob - Robot.mmi = new /obj/item/device/mmi(new_mob) - Robot.mmi.transfer_identity(M) //Does not transfer key/client. - if("slime") - new_mob = new /mob/living/carbon/slime(M.loc) - if(prob(50)) - var/mob/living/carbon/slime/Slime = new_mob - Slime.is_adult = 1 - new_mob.universal_speak = 1 - if("xeno") - if(prob(50)) - new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) - else - new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) - new_mob.universal_speak = 1 - - /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") - switch(alien_caste) - if("Hunter") new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) - if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) - if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) - else new_mob = new /mob/living/carbon/alien/larva(M.loc) - new_mob.universal_speak = 1*/ - if("animal") - if(prob(50)) - var/beast = pick("carp","bear","mushroom","statue") - switch(beast) - if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) - if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) - if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc) - if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc) - else - var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick") - switch(animal) - if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) - if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc) - if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) - if("pug") new_mob = new /mob/living/simple_animal/pug(M.loc) - if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc) - if("tomato") new_mob = new /mob/living/simple_animal/tomato(M.loc) - if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc) - if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc) - if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc) - if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) - else new_mob = new /mob/living/simple_animal/chick(M.loc) - new_mob.universal_speak = 1 - if("human") - new_mob = new /mob/living/carbon/human(M.loc) - - var/datum/preferences/A = new() //Randomize appearance for the human - A.copy_to(new_mob) - - var/mob/living/carbon/human/H = new_mob - ready_dna(H) - if(H.dna) - H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") - H.update_body() - else - return - - new_mob.attack_log = M.attack_log - M.attack_log += text("\[[time_stamp()]\] [M.real_name] ([M.ckey]) became [new_mob.real_name].") - - new_mob.a_intent = "harm" - if(M.mind) - M.mind.transfer_to(new_mob) - else - new_mob.key = M.key - - new_mob << "Your form morphs into that of a [randomize]." - - qdel(M) - return new_mob - -/obj/item/projectile/magic/animate - name = "bolt of animation" - icon_state = "red_1" - damage = 0 - damage_type = BURN - nodamage = 1 - flag = "magic" - -/obj/item/projectile/magic/animate/Bump(var/atom/change) - . = ..() - if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) - if(istype(change, /obj/structure/closet/statue)) - for(var/mob/living/carbon/human/H in change.contents) - var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc) - S.name = "statue of [H.name]" - S.faction = "\ref[firer]" - S.icon = change.icon - if(H.mind) - H.mind.transfer_to(S) - S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." - qdel(H) - qdel(change) - qdel(src) - return - else - var/obj/O = change - new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) - else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) - // Change our allegiance! - var/mob/living/simple_animal/hostile/mimic/copy/C = change +/obj/item/projectile/magic + name = "bolt of nothing" + icon_state = "energy" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/death + name = "bolt of death" + icon_state = "pulse1_bl" + +/obj/item/projectile/magic/death/on_hit(var/target) + if(ismob(target)) + var/mob/M = target + M.death(0) + +/obj/item/projectile/magic/fireball + name = "bolt of fireball" + icon_state = "fireball" + damage = 25 //The spell fireball additionally does 20 burn, so the wand fireball is marginally less painful + damage_type = BRUTE + nodamage = 0 + flag = "magic" + +/obj/item/projectile/magic/fireball/on_hit(var/target) + var/turf/T = get_turf(target) + explosion(T, -1, 0, 2, 3, 0, flame_range = 2) + +/obj/item/projectile/magic/resurrection + name = "bolt of resurrection" + icon_state = "ion" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/resurrection/on_hit(var/mob/living/carbon/target) + + if(istype(target,/mob)) + var/old_stat = target.stat + target.revive() + target.suiciding = 0 + if(!target.ckey) + for(var/mob/dead/observer/ghost in player_list) + if(target.real_name == ghost.real_name) + ghost.reenter_corpse() + break + if(old_stat != DEAD) + target << "You feel great!" + else + target << "You rise with a start, you're alive!!!" + +/obj/item/projectile/magic/teleport + name = "bolt of teleportation" + icon_state = "bluespace" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + var/inner_tele_radius = 0 + var/outer_tele_radius = 6 + +/obj/item/projectile/magic/teleport/on_hit(var/mob/target) + var/teleammount = 0 + var/teleloc = target + if(!isturf(target)) + teleloc = target.loc + for(var/atom/movable/stuff in teleloc) + if(!stuff.anchored && stuff.loc) + teleammount++ + do_teleport(stuff, stuff, 10) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + smoke.set_up(max(round(10 - teleammount),1), 0, stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity + smoke.start() + +/obj/item/projectile/magic/door + name = "bolt of door creation" + icon_state = "energy" + damage = 0 + damage_type = OXY + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/door/on_hit(var/atom/target) + var/atom/T = target.loc + if(isturf(target)) + if(target.density) + new /obj/structure/mineral_door/wood(target) + target:ChangeTurf(/turf/simulated/floor/plating) + else if (isturf(T)) + if(T.density) + new /obj/structure/mineral_door/wood(T) + T:ChangeTurf(/turf/simulated/floor/plating) + +/obj/item/projectile/magic/change + name = "bolt of change" + icon_state = "ice_1" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/change/on_hit(var/atom/change) + wabbajack(change) + +proc/wabbajack(mob/living/M) + if(istype(M)) + if(istype(M, /mob/living) && M.stat != DEAD) + if(M.notransform) return + M.notransform = 1 + M.canmove = 0 + M.icon = null + M.overlays.Cut() + M.invisibility = 101 + + if(istype(M, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/Robot = M + if(Robot.mmi) qdel(Robot.mmi) + else + for(var/obj/item/W in M) + if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something + qdel(W) + continue + W.layer = initial(W.layer) + W.loc = M.loc + W.dropped(M) + + var/mob/living/new_mob + + var/randomize = pick("monkey","robot","slime","xeno","human","animal") + switch(randomize) + if("monkey") + new_mob = new /mob/living/carbon/monkey(M.loc) + new_mob.universal_speak = 1 + if("robot") + if(prob(30)) + new_mob = new /mob/living/silicon/robot/syndicate(M.loc) + else + new_mob = new /mob/living/silicon/robot(M.loc) + new_mob.gender = M.gender + new_mob.invisibility = 0 + new_mob.job = "Cyborg" + var/mob/living/silicon/robot/Robot = new_mob + Robot.mmi = new /obj/item/device/mmi(new_mob) + Robot.mmi.transfer_identity(M) //Does not transfer key/client. + if("slime") + new_mob = new /mob/living/carbon/slime(M.loc) + if(prob(50)) + var/mob/living/carbon/slime/Slime = new_mob + Slime.is_adult = 1 + new_mob.universal_speak = 1 + if("xeno") + if(prob(50)) + new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + else + new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + new_mob.universal_speak = 1 + + /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") + switch(alien_caste) + if("Hunter") new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) + else new_mob = new /mob/living/carbon/alien/larva(M.loc) + new_mob.universal_speak = 1*/ + if("animal") + if(prob(50)) + var/beast = pick("carp","bear","mushroom","statue") + switch(beast) + if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) + if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) + if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc) + if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc) + else + var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick") + switch(animal) + if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) + if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc) + if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) + if("pug") new_mob = new /mob/living/simple_animal/pug(M.loc) + if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc) + if("tomato") new_mob = new /mob/living/simple_animal/tomato(M.loc) + if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc) + if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc) + if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc) + if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) + else new_mob = new /mob/living/simple_animal/chick(M.loc) + new_mob.universal_speak = 1 + if("human") + new_mob = new /mob/living/carbon/human(M.loc) + + var/datum/preferences/A = new() //Randomize appearance for the human + A.copy_to(new_mob) + + var/mob/living/carbon/human/H = new_mob + ready_dna(H) + if(H.dna) + H.dna.mutantrace = pick("lizard","golem","slime","plant","fly","shadow","adamantine","skeleton",8;"") + H.update_body() + else + return + + new_mob.attack_log = M.attack_log + M.attack_log += text("\[[time_stamp()]\] [M.real_name] ([M.ckey]) became [new_mob.real_name].") + + new_mob.a_intent = "harm" + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + + new_mob << "Your form morphs into that of a [randomize]." + + qdel(M) + return new_mob + +/obj/item/projectile/magic/animate + name = "bolt of animation" + icon_state = "red_1" + damage = 0 + damage_type = BURN + nodamage = 1 + flag = "magic" + +/obj/item/projectile/magic/animate/Bump(var/atom/change) + . = ..() + if(istype(change, /obj/item) || istype(change, /obj/structure) && !is_type_in_list(change, protected_objects)) + if(istype(change, /obj/structure/closet/statue)) + for(var/mob/living/carbon/human/H in change.contents) + var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(change.loc) + S.name = "statue of [H.name]" + S.faction = "\ref[firer]" + S.icon = change.icon + if(H.mind) + H.mind.transfer_to(S) + S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." + qdel(H) + qdel(change) + qdel(src) + return + else + var/obj/O = change + new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) + else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) + // Change our allegiance! + var/mob/living/simple_animal/hostile/mimic/copy/C = change C.ChangeOwner(firer) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 68a2db93b30..48fc1e39ff6 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -1,219 +1,219 @@ - -///////////////////////////////////////////////Condiments -//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all -// leave empty containers when used up and can be filled/re-filled with other items. Formatting for first section is identical -// to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code. - -//Food items that aren't eaten normally and leave an empty container behind. -/obj/item/weapon/reagent_containers/food/condiment - name = "Condiment Container" - desc = "Just your average condiment container." - icon = 'icons/obj/food.dmi' - icon_state = "emptycondiment" - flags = OPENCONTAINER - possible_transfer_amounts = list(1,5,10) - volume = 50 - //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. - var/list/possible_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) - -/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/condiment/attack_self(mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/condiment/attack(mob/M as mob, mob/user as mob, def_zone) - var/datum/reagents/R = src.reagents - - if(!R || !R.total_volume) - user << "None of [src] left, oh no!" - return 0 - - if(M == user) - M << "You swallow some of contents of the [src]." - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - - else if( istype(M, /mob/living/carbon/human) ) - for(var/mob/O in viewers(world.view, user)) - O.show_message("[user] attempts to feed [M] [src].", 1) - if(!do_mob(user, M)) return - for(var/mob/O in viewers(world.view, user)) - O.show_message("[user] feeds [M] [src].", 1) - - add_logs(user, M, "fed", object="[reagentlist(src)]") - - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) - - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - return 0 - -/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/I as obj, mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) - if(!proximity) return - if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - - if(!target.reagents.total_volume) - user << "[target] is empty." - return - - if(reagents.total_volume >= reagents.maximum_volume) - user << "[src] is full." - return - - var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) - user << "You fill [src] with [trans] units of the contents of [target]." - - //Something like a glass or a food item. Player probably wants to transfer TO it. - else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks)) - if(!reagents.total_volume) - user << "[src] is empty." - return - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "you can't add anymore to [target]." - return - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << "You transfer [trans] units of the condiment to [target]." - -/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() - if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") - return - if(reagents.reagent_list.len > 0) - var/main_reagent = reagents.get_master_reagent_id() - if(main_reagent in possible_states) - var/list/temp_list = possible_states[main_reagent] - icon_state = temp_list[1] - name = temp_list[2] - desc = temp_list[3] - - else - name = "misc Condiment Bottle" - main_reagent = reagents.get_master_reagent_name() - if (reagents.reagent_list.len==1) - desc = "Looks like it is [lowertext(main_reagent)], but you are not sure." - else - desc = "A mixture of various condiments. [lowertext(main_reagent)] is one of them." - icon_state = "mixedcondiments" - else - icon_state = "emptycondiment" - name = "condiment Bottle" - desc = "An empty condiment bottle." - return - -/obj/item/weapon/reagent_containers/food/condiment/enzyme - name = "Universal Enzyme" - desc = "Used in cooking various dishes." - icon_state = "enzyme" - - New() - ..() - reagents.add_reagent("enzyme", 50) - -/obj/item/weapon/reagent_containers/food/condiment/sugar - - New() - ..() - reagents.add_reagent("sugar", 50) - -/obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then - name = "Salt Shaker" // a large one. - desc = "Salt. From space oceans, presumably." - icon_state = "saltshakersmall" - possible_transfer_amounts = list(1,20) //for clown turning the lid off - amount_per_transfer_from_this = 1 - volume = 20 - - New() - ..() - reagents.add_reagent("sodiumchloride", 20) - -/obj/item/weapon/reagent_containers/food/condiment/peppermill - name = "Pepper Mill" - desc = "Often used to flavor food or make people sneeze." - icon_state = "peppermillsmall" - possible_transfer_amounts = list(1,20) //for clown turning the lid off - amount_per_transfer_from_this = 1 - volume = 20 - - New() - ..() - reagents.add_reagent("blackpepper", 20) - -//Food packs. To easily apply deadly toxi... delicious sauces to your food! -/obj/item/weapon/reagent_containers/food/condiment/pack - name = "condiment pack" - desc = "A small plastic pack with condiments to put on your food" - icon_state = "condi_empty" - volume = 10 - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(10) - possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) - var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. - -/obj/item/weapon/reagent_containers/food/condiment/pack/New() - ..() - pixel_x = rand(-7, 7) - pixel_y = rand(-7, 7) - -/obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. - return - -/obj/item/weapon/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) - if(!proximity) return - - //You can tear the bag open above food to put the condiments on it, obviously. - if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) - if(!reagents.total_volume) - user << "You tear open [src], but there's nothing in it." - qdel(src) - return - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. - qdel(src) - return - else - user << "You tear open [src] above [target] and the condiments drip onto it." - src.reagents.trans_to(target, amount_per_transfer_from_this) - qdel(src) - -/obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() - if(reagents.reagent_list.len > 0) - var/main_reagent = reagents.get_master_reagent_id() - if(main_reagent in possible_states) - var/list/temp_list = possible_states[main_reagent] - icon_state = temp_list[1] - desc = temp_list[3] - else - icon_state = "condi_mixed" - desc = "A small condiment pack. The label says it contains [originalname]" - else - icon_state = "condi_empty" - desc = "A small condiment pack. It is empty." - -//Ketchup -/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup - name = "ketchup pack" - originalname = "ketchup" - -/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup/New() - ..() - reagents.add_reagent("ketchup", 10) - -//Hot sauce -/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce - name = "hotsauce pack" - originalname = "hotsauce" - -/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce/New() - ..() - reagents.add_reagent("capsaicin", 10) + +///////////////////////////////////////////////Condiments +//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all +// leave empty containers when used up and can be filled/re-filled with other items. Formatting for first section is identical +// to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code. + +//Food items that aren't eaten normally and leave an empty container behind. +/obj/item/weapon/reagent_containers/food/condiment + name = "Condiment Container" + desc = "Just your average condiment container." + icon = 'icons/obj/food.dmi' + icon_state = "emptycondiment" + flags = OPENCONTAINER + possible_transfer_amounts = list(1,5,10) + volume = 50 + //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. + var/list/possible_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) + +/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/attack_self(mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/attack(mob/M as mob, mob/user as mob, def_zone) + var/datum/reagents/R = src.reagents + + if(!R || !R.total_volume) + user << "None of [src] left, oh no!" + return 0 + + if(M == user) + M << "You swallow some of contents of the [src]." + if(reagents.total_volume) + reagents.reaction(M, INGEST) + spawn(5) + reagents.trans_to(M, 10) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + return 1 + + else if( istype(M, /mob/living/carbon/human) ) + for(var/mob/O in viewers(world.view, user)) + O.show_message("[user] attempts to feed [M] [src].", 1) + if(!do_mob(user, M)) return + for(var/mob/O in viewers(world.view, user)) + O.show_message("[user] feeds [M] [src].", 1) + + add_logs(user, M, "fed", object="[reagentlist(src)]") + + if(reagents.total_volume) + reagents.reaction(M, INGEST) + spawn(5) + reagents.trans_to(M, 10) + + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + return 1 + return 0 + +/obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/I as obj, mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) + if(!proximity) return + if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + + if(!target.reagents.total_volume) + user << "[target] is empty." + return + + if(reagents.total_volume >= reagents.maximum_volume) + user << "[src] is full." + return + + var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) + user << "You fill [src] with [trans] units of the contents of [target]." + + //Something like a glass or a food item. Player probably wants to transfer TO it. + else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks)) + if(!reagents.total_volume) + user << "[src] is empty." + return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "you can't add anymore to [target]." + return + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + user << "You transfer [trans] units of the condiment to [target]." + +/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() + if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") + return + if(reagents.reagent_list.len > 0) + var/main_reagent = reagents.get_master_reagent_id() + if(main_reagent in possible_states) + var/list/temp_list = possible_states[main_reagent] + icon_state = temp_list[1] + name = temp_list[2] + desc = temp_list[3] + + else + name = "misc Condiment Bottle" + main_reagent = reagents.get_master_reagent_name() + if (reagents.reagent_list.len==1) + desc = "Looks like it is [lowertext(main_reagent)], but you are not sure." + else + desc = "A mixture of various condiments. [lowertext(main_reagent)] is one of them." + icon_state = "mixedcondiments" + else + icon_state = "emptycondiment" + name = "condiment Bottle" + desc = "An empty condiment bottle." + return + +/obj/item/weapon/reagent_containers/food/condiment/enzyme + name = "Universal Enzyme" + desc = "Used in cooking various dishes." + icon_state = "enzyme" + + New() + ..() + reagents.add_reagent("enzyme", 50) + +/obj/item/weapon/reagent_containers/food/condiment/sugar + + New() + ..() + reagents.add_reagent("sugar", 50) + +/obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then + name = "Salt Shaker" // a large one. + desc = "Salt. From space oceans, presumably." + icon_state = "saltshakersmall" + possible_transfer_amounts = list(1,20) //for clown turning the lid off + amount_per_transfer_from_this = 1 + volume = 20 + + New() + ..() + reagents.add_reagent("sodiumchloride", 20) + +/obj/item/weapon/reagent_containers/food/condiment/peppermill + name = "Pepper Mill" + desc = "Often used to flavor food or make people sneeze." + icon_state = "peppermillsmall" + possible_transfer_amounts = list(1,20) //for clown turning the lid off + amount_per_transfer_from_this = 1 + volume = 20 + + New() + ..() + reagents.add_reagent("blackpepper", 20) + +//Food packs. To easily apply deadly toxi... delicious sauces to your food! +/obj/item/weapon/reagent_containers/food/condiment/pack + name = "condiment pack" + desc = "A small plastic pack with condiments to put on your food" + icon_state = "condi_empty" + volume = 10 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(10) + possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) + var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. + +/obj/item/weapon/reagent_containers/food/condiment/pack/New() + ..() + pixel_x = rand(-7, 7) + pixel_y = rand(-7, 7) + +/obj/item/weapon/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. + return + +/obj/item/weapon/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) + if(!proximity) return + + //You can tear the bag open above food to put the condiments on it, obviously. + if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) + if(!reagents.total_volume) + user << "You tear open [src], but there's nothing in it." + qdel(src) + return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. + qdel(src) + return + else + user << "You tear open [src] above [target] and the condiments drip onto it." + src.reagents.trans_to(target, amount_per_transfer_from_this) + qdel(src) + +/obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() + if(reagents.reagent_list.len > 0) + var/main_reagent = reagents.get_master_reagent_id() + if(main_reagent in possible_states) + var/list/temp_list = possible_states[main_reagent] + icon_state = temp_list[1] + desc = temp_list[3] + else + icon_state = "condi_mixed" + desc = "A small condiment pack. The label says it contains [originalname]" + else + icon_state = "condi_empty" + desc = "A small condiment pack. It is empty." + +//Ketchup +/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup + name = "ketchup pack" + originalname = "ketchup" + +/obj/item/weapon/reagent_containers/food/condiment/pack/ketchup/New() + ..() + reagents.add_reagent("ketchup", 10) + +//Hot sauce +/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce + name = "hotsauce pack" + originalname = "hotsauce" + +/obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce/New() + ..() + reagents.add_reagent("capsaicin", 10) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index c8d94e4365c..16e51d6ccd5 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -1,274 +1,274 @@ -//////////////////////////////////////////////////////////////////////////////// -/// Syringes. -//////////////////////////////////////////////////////////////////////////////// -#define SYRINGE_DRAW 0 -#define SYRINGE_INJECT 1 - -/obj/item/weapon/reagent_containers/syringe - name = "syringe" - desc = "A syringe that can hold up to 15 units." - icon = 'icons/obj/syringe.dmi' - item_state = "syringe_0" - icon_state = "0" - amount_per_transfer_from_this = 5 - possible_transfer_amounts = null //list(5, 10, 15) - volume = 15 - var/mode = SYRINGE_DRAW - g_amt = 20 - m_amt = 10 - - on_reagent_change() - update_icon() - - pickup(mob/user) - ..() - update_icon() - - dropped(mob/user) - ..() - update_icon() - - attack_self(mob/user) - mode = !mode - update_icon() - - attack_hand() - ..() - update_icon() - - attack_paw() - return attack_hand() - - attackby(obj/item/I, mob/user) - return - - afterattack(obj/target, mob/user , proximity) - if(!proximity) return - if(!target.reagents) return - - if(isliving(target)) - var/mob/living/M = target - if(!M.can_inject(user, 1)) - return - - switch(mode) - if(SYRINGE_DRAW) - - if(reagents.total_volume >= reagents.maximum_volume) - user << "The syringe is full." - return - - if(ismob(target)) //Blood! - if(reagents.has_reagent("blood")) - user << "There is already a blood sample in this syringe." - return - if(istype(target, /mob/living/carbon)) //maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea. - var/amount = src.reagents.maximum_volume - src.reagents.total_volume - var/mob/living/carbon/T = target - var/datum/reagent/B = new /datum/reagent/blood - if(!check_dna_integrity(T)) - user << "You are unable to locate any blood." - return - if(NOCLONE in T.mutations) //target done been et, no more blood in him - user << "You are unable to locate any blood." - return - B.holder = src - B.volume = amount - //set reagent data - B.data["donor"] = T - - /* - if(T.virus && T.virus.spread_type != SPECIAL) - B.data["virus"] = new T.virus.type(0) - */ - - for(var/datum/disease/D in T.viruses) - if(!B.data["viruses"]) - B.data["viruses"] = list() - - B.data["viruses"] += new D.type(0, D, 1) - - B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0) - if(T.resistances&&T.resistances.len) - B.data["resistances"] = T.resistances.Copy() - if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation... - var/mob/living/carbon/human/HT = target - B.data["blood_type"] = copytext(HT.dna.blood_type,1,0) - var/list/temp_chem = list() - for(var/datum/reagent/R in target.reagents.reagent_list) - temp_chem += R.name - temp_chem[R.name] = R.volume - B.data["trace_chem"] = list2params(temp_chem) - - reagents.reagent_list += B - reagents.update_total() - on_reagent_change() - reagents.handle_reactions() - user.visible_message("[user] takes a blood sample from [target].") - - else //if not mob - if(!target.reagents.total_volume) - user << "[target] is empty." - return - - if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract)) - user << "You cannot directly remove reagents from [target]." - return - - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? - - user << "You fill [src] with [trans] units of the solution." - if (reagents.total_volume >= reagents.maximum_volume) - mode=!mode - update_icon() - - if(SYRINGE_INJECT) - if(!reagents.total_volume) - user << "[src] is empty." - return - if(istype(target, /obj/item/weapon/implantcase/chem)) - return - - if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) - user << "You cannot directly fill [target]." - return - if(target.reagents.total_volume >= target.reagents.maximum_volume) - user << "[target] is full." - return - - if(ismob(target) && target != user) - target.visible_message("[user] is trying to inject [target]!", \ - "[user] is trying to inject [target]!") - if(!do_mob(user, target)) return - target.visible_message("[user] injects [target] with the syringe!", \ - "[user] injects [target] with the syringe!") - //Attack log entries are produced here due to failure to produce elsewhere. Remove them here if you have doubles from normal syringes. - var/list/rinject = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - rinject += R.name - var/contained = english_list(rinject) - var/mob/M = target - add_logs(user, M, "injected", object="[src.name]", addition="which had [contained]") - reagents.reaction(target, INGEST) - if(ismob(target) && target == user) - //Attack log entries are produced here due to failure to produce elsewhere. Remove them here if you have doubles from normal syringes. - var/list/rinject = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - rinject += R.name - var/contained = english_list(rinject) - var/mob/M = target - log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") - M.attack_log += text("\[[time_stamp()]\] Injected themselves ([contained]) with [src.name].") - - reagents.reaction(target, INGEST) - spawn(5) - target.add_fingerprint(user) - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) - user << "You inject [trans] unit\s of the solution. [src] now contains [reagents.total_volume] unit\s." - if(reagents.total_volume <= 0 && mode == SYRINGE_INJECT) - mode = SYRINGE_DRAW - update_icon() - - - update_icon() - var/rounded_vol = round(reagents.total_volume,5) - overlays.Cut() - if(ismob(loc)) - var/injoverlay - switch(mode) - if (SYRINGE_DRAW) - injoverlay = "draw" - if (SYRINGE_INJECT) - injoverlay = "inject" - overlays += injoverlay - icon_state = "[rounded_vol]" - item_state = "syringe_[rounded_vol]" - - if(reagents.total_volume) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10") - - switch(rounded_vol) - if(5) filling.icon_state = "syringe5" - if(10) filling.icon_state = "syringe10" - if(15) filling.icon_state = "syringe15" - - filling.color = mix_color_from_reagents(reagents.reagent_list) - overlays += filling - - -/obj/item/weapon/reagent_containers/syringe/lethal - name = "lethal injection syringe" - desc = "A syringe used for lethal injections. It can hold up to 50 units." - amount_per_transfer_from_this = 50 - volume = 50 - -//////////////////////////////////////////////////////////////////////////////// -/// Syringes. END -//////////////////////////////////////////////////////////////////////////////// - - - -/obj/item/weapon/reagent_containers/syringe/inaprovaline - name = "syringe (inaprovaline)" - desc = "Contains inaprovaline - used to stabilize patients." - New() - ..() - reagents.add_reagent("inaprovaline", 15) - mode = SYRINGE_INJECT - update_icon() - -/obj/item/weapon/reagent_containers/syringe/antitoxin - name = "syringe (anti-toxin)" - desc = "Contains anti-toxins." - New() - ..() - reagents.add_reagent("anti_toxin", 15) - mode = SYRINGE_INJECT - update_icon() - -/obj/item/weapon/reagent_containers/syringe/antiviral - name = "syringe (spaceacillin)" - desc = "Contains antiviral agents." - New() - ..() - reagents.add_reagent("spaceacillin", 15) - mode = SYRINGE_INJECT - update_icon() - -/obj/item/weapon/reagent_containers/syringe/lethal/choral - New() - ..() - reagents.add_reagent("chloralhydrate", 50) - mode = SYRINGE_INJECT - update_icon() - - -//Robot syringes -//Not special in any way, code wise. They don't have added variables or procs. -/obj/item/weapon/reagent_containers/syringe/robot/antitoxin - name = "syringe (anti-toxin)" - desc = "Contains anti-toxins." - New() - ..() - reagents.add_reagent("anti_toxin", 15) - mode = SYRINGE_INJECT - update_icon() - -/obj/item/weapon/reagent_containers/syringe/robot/inoprovaline - name = "syringe (inoprovaline)" - desc = "Contains inaprovaline - used to stabilize patients." - New() - ..() - reagents.add_reagent("inaprovaline", 15) - mode = SYRINGE_INJECT - update_icon() - -/obj/item/weapon/reagent_containers/syringe/robot/mixed - name = "syringe (mixed)" - desc = "Contains inaprovaline & anti-toxins." - New() - ..() - reagents.add_reagent("inaprovaline", 7) - reagents.add_reagent("anti_toxin", 8) - mode = SYRINGE_INJECT - update_icon() +//////////////////////////////////////////////////////////////////////////////// +/// Syringes. +//////////////////////////////////////////////////////////////////////////////// +#define SYRINGE_DRAW 0 +#define SYRINGE_INJECT 1 + +/obj/item/weapon/reagent_containers/syringe + name = "syringe" + desc = "A syringe that can hold up to 15 units." + icon = 'icons/obj/syringe.dmi' + item_state = "syringe_0" + icon_state = "0" + amount_per_transfer_from_this = 5 + possible_transfer_amounts = null //list(5, 10, 15) + volume = 15 + var/mode = SYRINGE_DRAW + g_amt = 20 + m_amt = 10 + + on_reagent_change() + update_icon() + + pickup(mob/user) + ..() + update_icon() + + dropped(mob/user) + ..() + update_icon() + + attack_self(mob/user) + mode = !mode + update_icon() + + attack_hand() + ..() + update_icon() + + attack_paw() + return attack_hand() + + attackby(obj/item/I, mob/user) + return + + afterattack(obj/target, mob/user , proximity) + if(!proximity) return + if(!target.reagents) return + + if(isliving(target)) + var/mob/living/M = target + if(!M.can_inject(user, 1)) + return + + switch(mode) + if(SYRINGE_DRAW) + + if(reagents.total_volume >= reagents.maximum_volume) + user << "The syringe is full." + return + + if(ismob(target)) //Blood! + if(reagents.has_reagent("blood")) + user << "There is already a blood sample in this syringe." + return + if(istype(target, /mob/living/carbon)) //maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea. + var/amount = src.reagents.maximum_volume - src.reagents.total_volume + var/mob/living/carbon/T = target + var/datum/reagent/B = new /datum/reagent/blood + if(!check_dna_integrity(T)) + user << "You are unable to locate any blood." + return + if(NOCLONE in T.mutations) //target done been et, no more blood in him + user << "You are unable to locate any blood." + return + B.holder = src + B.volume = amount + //set reagent data + B.data["donor"] = T + + /* + if(T.virus && T.virus.spread_type != SPECIAL) + B.data["virus"] = new T.virus.type(0) + */ + + for(var/datum/disease/D in T.viruses) + if(!B.data["viruses"]) + B.data["viruses"] = list() + + B.data["viruses"] += new D.type(0, D, 1) + + B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0) + if(T.resistances&&T.resistances.len) + B.data["resistances"] = T.resistances.Copy() + if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation... + var/mob/living/carbon/human/HT = target + B.data["blood_type"] = copytext(HT.dna.blood_type,1,0) + var/list/temp_chem = list() + for(var/datum/reagent/R in target.reagents.reagent_list) + temp_chem += R.name + temp_chem[R.name] = R.volume + B.data["trace_chem"] = list2params(temp_chem) + + reagents.reagent_list += B + reagents.update_total() + on_reagent_change() + reagents.handle_reactions() + user.visible_message("[user] takes a blood sample from [target].") + + else //if not mob + if(!target.reagents.total_volume) + user << "[target] is empty." + return + + if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract)) + user << "You cannot directly remove reagents from [target]." + return + + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? + + user << "You fill [src] with [trans] units of the solution." + if (reagents.total_volume >= reagents.maximum_volume) + mode=!mode + update_icon() + + if(SYRINGE_INJECT) + if(!reagents.total_volume) + user << "[src] is empty." + return + if(istype(target, /obj/item/weapon/implantcase/chem)) + return + + if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) + user << "You cannot directly fill [target]." + return + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "[target] is full." + return + + if(ismob(target) && target != user) + target.visible_message("[user] is trying to inject [target]!", \ + "[user] is trying to inject [target]!") + if(!do_mob(user, target)) return + target.visible_message("[user] injects [target] with the syringe!", \ + "[user] injects [target] with the syringe!") + //Attack log entries are produced here due to failure to produce elsewhere. Remove them here if you have doubles from normal syringes. + var/list/rinject = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + rinject += R.name + var/contained = english_list(rinject) + var/mob/M = target + add_logs(user, M, "injected", object="[src.name]", addition="which had [contained]") + reagents.reaction(target, INGEST) + if(ismob(target) && target == user) + //Attack log entries are produced here due to failure to produce elsewhere. Remove them here if you have doubles from normal syringes. + var/list/rinject = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + rinject += R.name + var/contained = english_list(rinject) + var/mob/M = target + log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") + M.attack_log += text("\[[time_stamp()]\] Injected themselves ([contained]) with [src.name].") + + reagents.reaction(target, INGEST) + spawn(5) + target.add_fingerprint(user) + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + user << "You inject [trans] unit\s of the solution. [src] now contains [reagents.total_volume] unit\s." + if(reagents.total_volume <= 0 && mode == SYRINGE_INJECT) + mode = SYRINGE_DRAW + update_icon() + + + update_icon() + var/rounded_vol = round(reagents.total_volume,5) + overlays.Cut() + if(ismob(loc)) + var/injoverlay + switch(mode) + if (SYRINGE_DRAW) + injoverlay = "draw" + if (SYRINGE_INJECT) + injoverlay = "inject" + overlays += injoverlay + icon_state = "[rounded_vol]" + item_state = "syringe_[rounded_vol]" + + if(reagents.total_volume) + var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10") + + switch(rounded_vol) + if(5) filling.icon_state = "syringe5" + if(10) filling.icon_state = "syringe10" + if(15) filling.icon_state = "syringe15" + + filling.color = mix_color_from_reagents(reagents.reagent_list) + overlays += filling + + +/obj/item/weapon/reagent_containers/syringe/lethal + name = "lethal injection syringe" + desc = "A syringe used for lethal injections. It can hold up to 50 units." + amount_per_transfer_from_this = 50 + volume = 50 + +//////////////////////////////////////////////////////////////////////////////// +/// Syringes. END +//////////////////////////////////////////////////////////////////////////////// + + + +/obj/item/weapon/reagent_containers/syringe/inaprovaline + name = "syringe (inaprovaline)" + desc = "Contains inaprovaline - used to stabilize patients." + New() + ..() + reagents.add_reagent("inaprovaline", 15) + mode = SYRINGE_INJECT + update_icon() + +/obj/item/weapon/reagent_containers/syringe/antitoxin + name = "syringe (anti-toxin)" + desc = "Contains anti-toxins." + New() + ..() + reagents.add_reagent("anti_toxin", 15) + mode = SYRINGE_INJECT + update_icon() + +/obj/item/weapon/reagent_containers/syringe/antiviral + name = "syringe (spaceacillin)" + desc = "Contains antiviral agents." + New() + ..() + reagents.add_reagent("spaceacillin", 15) + mode = SYRINGE_INJECT + update_icon() + +/obj/item/weapon/reagent_containers/syringe/lethal/choral + New() + ..() + reagents.add_reagent("chloralhydrate", 50) + mode = SYRINGE_INJECT + update_icon() + + +//Robot syringes +//Not special in any way, code wise. They don't have added variables or procs. +/obj/item/weapon/reagent_containers/syringe/robot/antitoxin + name = "syringe (anti-toxin)" + desc = "Contains anti-toxins." + New() + ..() + reagents.add_reagent("anti_toxin", 15) + mode = SYRINGE_INJECT + update_icon() + +/obj/item/weapon/reagent_containers/syringe/robot/inoprovaline + name = "syringe (inoprovaline)" + desc = "Contains inaprovaline - used to stabilize patients." + New() + ..() + reagents.add_reagent("inaprovaline", 15) + mode = SYRINGE_INJECT + update_icon() + +/obj/item/weapon/reagent_containers/syringe/robot/mixed + name = "syringe (mixed)" + desc = "Contains inaprovaline & anti-toxins." + New() + ..() + reagents.add_reagent("inaprovaline", 7) + reagents.add_reagent("anti_toxin", 8) + mode = SYRINGE_INJECT + update_icon() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 4517456775e..6ac6489f4b4 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1,1341 +1,1341 @@ -// Disposal bin -// Holds items for disposal into pipe system -// Draws air from turf, gradually charges internal reservoir -// Once full (~1 atm), uses air resv to flush items into the pipes -// Automatically recharges air (unless off), will flush when ready if pre-set -// Can hold items and human size things, no other draggables -// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation -#define SEND_PRESSURE 0.05*ONE_ATMOSPHERE - -/obj/machinery/disposal - name = "disposal unit" - desc = "A pneumatic waste disposal unit." - icon = 'icons/obj/pipes/disposal.dmi' - icon_state = "disposal" - anchored = 1 - density = 1 - var/datum/gas_mixture/air_contents // internal reservoir - var/mode = 1 // item mode 0=off 1=charging 2=charged - var/flush = 0 // true if flush handle is pulled - var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk - var/flushing = 0 // true if flushing in progress - var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush - var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. - var/last_sound = 0 - - // create a new disposal - // find the attached trunk (if present) and init gas resvr. -/obj/machinery/disposal/New() - ..() - - trunk_check() - - air_contents = new/datum/gas_mixture() - //gas.volume = 1.05 * CELLSTANDARD - update() - -/obj/machinery/disposal/proc/trunk_check() - trunk = locate() in src.loc - if(!trunk) - mode = 0 - flush = 0 - else - mode = initial(mode) - flush = initial(flush) - trunk.linked = src // link the pipe trunk to self - -/obj/machinery/disposal/Destroy() - for(var/atom/movable/AM in contents) - AM.loc = src.loc - ..() - -/obj/machinery/disposal/initialize() - // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it - var/atom/L = loc - var/datum/gas_mixture/env = new - env.copy_from(L.return_air()) - var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) - air_contents.merge(removed) - trunk_check() - - // attack by item places it in to disposal -/obj/machinery/disposal/attackby(var/obj/item/I, var/mob/user) - if(stat & BROKEN || !I || !user || (I.flags & NODROP)) - return - - if(isrobot(user) && !istype(I, /obj/item/weapon/storage/bag/trash)) - return - src.add_fingerprint(user) - if(mode<=0) // It's off - if(istype(I, /obj/item/weapon/screwdriver)) - if(contents.len > 0) - user << "Eject the items first!" - return - if(mode==0) // It's off but still not unscrewed - mode=-1 // Set it to doubleoff l0l - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You remove the screws around the power connection." - return - else if(mode==-1) - mode=0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You attach the screws around the power connection." - return - else if(istype(I,/obj/item/weapon/weldingtool) && mode==-1) - if(contents.len > 0) - user << "Eject the items first!" - return - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the floorweld off \the [src]." - - if(do_after(user,20)) - if(!src || !W.isOn()) return - user << "You slice the floorweld off \the [src]." - var/obj/structure/disposalconstruct/C = new (src.loc) - src.transfer_fingerprints_to(C) - C.ptype = 6 // 6 = disposal unit - C.anchored = 1 - C.density = 1 - C.update() - qdel(src) - return - else - user << "You need more welding fuel to complete this task." - return - - if(istype(I, /obj/item/weapon/melee/energy/blade)) - user << "You can't place \the [I] into \the [src]." - return - - if(istype(I, /obj/item/weapon/storage/bag/trash)) - var/obj/item/weapon/storage/bag/trash/T = I - user << "\blue You empty the bag." - for(var/obj/item/O in T.contents) - T.remove_from_storage(O,src) - T.update_icon() - update() - return - - var/obj/item/weapon/grab/G = I - if(istype(G)) // handle grabbed mob - if(ismob(G.affecting)) - var/mob/GM = G.affecting - for (var/mob/V in viewers(usr)) - V.show_message("[usr] starts putting [GM.name] into \the [src].", 3) - if(do_after(usr, 20)) - if (GM.client) - GM.client.perspective = EYE_PERSPECTIVE - GM.client.eye = src - GM.loc = src - for (var/mob/C in viewers(src)) - C.show_message("\red [GM.name] has been placed in \the [src] by [user].", 3) - qdel(G) - return - - if(!I) return - - user.drop_item() - if(I) - I.loc = src - - user << "You place \the [I] into \the [src]." - for(var/mob/M in viewers(src)) - if(M == user) - continue - M.show_message("[user.name] places \the [I] into \the [src].", 3) - - update() - -// mouse drop another mob or self -// -/obj/machinery/disposal/MouseDrop_T(mob/target, mob/user) - if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) - return - src.add_fingerprint(user) - var/target_loc = target.loc - var/msg - for (var/mob/V in viewers(usr)) - if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - V.show_message("[usr] starts climbing into \the [src].", 3) - if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - if(target.anchored) return - if(!ishuman(user) && !ismonkey(user)) return - V.show_message("[usr] starts stuffing [target.name] into \the [src].", 3) - if(!do_after(usr, 20)) - return - if(target_loc != target.loc) - return - if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in - // must be awake, not stunned or whatever - msg = "[user.name] climbs into \the [src]." - user << "You climb into \the [src]." - else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - msg = "[user.name] stuffs [target.name] into \the [src]!" - user << "You stuff [target.name] into \the [src]!" - else - return - if (target.client) - target.client.perspective = EYE_PERSPECTIVE - target.client.eye = src - target.loc = src - - for (var/mob/C in viewers(src)) - if(C == user) - continue - C.show_message(msg, 3) - - update() - return - -// can breath normally in the disposal -/obj/machinery/disposal/alter_health() - return get_turf(src) - -/obj/machinery/disposal/relaymove(mob/user as mob) - attempt_escape(user) - -// resist to escape the bin -/obj/machinery/disposal/container_resist() - attempt_escape(usr) - -/obj/machinery/disposal/proc/attempt_escape(mob/user as mob) - if(src.flushing) - return - go_out(user) - return - -// leave the disposal -/obj/machinery/disposal/proc/go_out(mob/user) - - if (user.client) - user.client.eye = user.client.mob - user.client.perspective = MOB_PERSPECTIVE - user.loc = src.loc - update() - return - - -// monkeys can only pull the flush lever -/obj/machinery/disposal/attack_paw(mob/user as mob) - if(stat & BROKEN) - return - - flush = !flush - update() - return - -// ai as human but can't flush -/obj/machinery/disposal/attack_ai(mob/user as mob) - interact(user, 1) - -// human interact with machine -/obj/machinery/disposal/attack_hand(mob/user as mob) - if(user && user.loc == src) - usr << "\red You cannot reach the controls from inside." - return - /* - if(mode==-1) - usr << "\red The disposal units power is disabled." - return - */ - interact(user, 0) - -// hostile mob escape from disposals -/obj/machinery/disposal/attack_animal(var/mob/living/simple_animal/M) - if(M.environment_smash) - visible_message("[M.name] smashes \the [src] apart!") - qdel(src) - return - -// user interaction -/obj/machinery/disposal/interact(mob/user, var/ai=0) - - src.add_fingerprint(user) - if(stat & BROKEN) - user.unset_machine() - return - - var/dat = "Waste Disposal UnitWaste Disposal Unit
    " - - if(!ai) // AI can't pull flush handle - if(flush) - dat += "Disposal handle: Disengage Engaged" - else - dat += "Disposal handle: Disengaged Engage" - - dat += "

    Eject contents
    " - - if(mode <= 0) - dat += "Pump: Off On
    " - else if(mode == 1) - dat += "Pump: Off On (pressurizing)
    " - else - dat += "Pump: Off On (idle)
    " - - var/per = Clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100) - - dat += "Pressure: [round(per, 1)]%
    " - - - user.set_machine(src) - user << browse(dat, "window=disposal;size=360x170") - onclose(user, "disposal") - -// handle machine interaction - -/obj/machinery/disposal/Topic(href, href_list) - if(..()) - return - if(usr.loc == src) - usr << "\red You cannot reach the controls from inside." - return - - if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 - usr << "\red \The [src]'s power is disabled." - return - ..() - usr.set_machine(src) - - if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=disposal") - return - - if(href_list["pump"]) - if(text2num(href_list["pump"])) - mode = 1 - else - mode = 0 - update() - - if(href_list["handle"]) - flush = text2num(href_list["handle"]) - update() - - if(href_list["eject"]) - eject() - return - -// eject the contents of the disposal unit -/obj/machinery/disposal/proc/eject() - for(var/atom/movable/AM in src) - AM.loc = src.loc - AM.pipe_eject(0) - update() - -// update the icon & overlays to reflect mode & status -/obj/machinery/disposal/proc/update() - overlays.Cut() - if(stat & BROKEN) - icon_state = "disposal-broken" - mode = 0 - flush = 0 - return - - // flush handle - if(flush) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-handle") - - // only handle is shown if no power - if(stat & NOPOWER || mode == -1) - return - - // check for items in disposal - occupied light - if(contents.len > 0) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-full") - - // charging and ready light - if(mode == 1) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-charge") - else if(mode == 2) - overlays += image('icons/obj/pipes/disposal.dmi', "dispover-ready") - -// timed process -// charge the gas reservoir and perform flush if ready -/obj/machinery/disposal/process() - if(stat & BROKEN) // nothing can happen if broken - return - - flush_count++ - if( flush_count >= flush_every_ticks ) - if( contents.len ) - if(mode == 2) - spawn(0) - feedback_inc("disposal_auto_flush",1) - flush() - flush_count = 0 - - src.updateDialog() - - if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power - spawn(0) - flush() - - if(stat & NOPOWER) // won't charge if no power - return - - use_power(100) // base power usage - - if(mode != 1) // if off or ready, no need to charge - return - - // otherwise charge - use_power(500) // charging power usage - - var/atom/L = loc // recharging from loc turf - - var/datum/gas_mixture/env = L.return_air() - var/pressure_delta = (SEND_PRESSURE*1.01) - air_contents.return_pressure() - - if(env.temperature > 0) - var/transfer_moles = 0.1 * pressure_delta*air_contents.volume/(env.temperature * R_IDEAL_GAS_EQUATION) - - //Actually transfer the gas - var/datum/gas_mixture/removed = env.remove(transfer_moles) - air_contents.merge(removed) - air_update_turf() - - - // if full enough, switch to ready mode - if(air_contents.return_pressure() >= SEND_PRESSURE) - mode = 2 - update() - return - -// perform a flush -/obj/machinery/disposal/proc/flush() - - flushing = 1 - flick("[icon_state]-flush", src) - - var/wrapcheck = 0 - var/obj/structure/disposalholder/H = new() // virtual holder object which actually - // travels through the pipes. - for(var/obj/item/smallDelivery/O in src) - wrapcheck = 1 - - if(wrapcheck == 1) - H.tomail = 1 - - sleep(10) - if(last_sound < world.time + 1) - playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) - last_sound = world.time - sleep(5) // wait for animation to finish - - H.init(src) // copy the contents of disposer to holder - air_contents = new() // new empty gas resv. - - H.start(src) // start the holder processing movement - flushing = 0 - // now reset disposal state - flush = 0 - if(mode == 2) // if was ready, - mode = 1 // switch to charging - update() - return - - -// called when area power changes -/obj/machinery/disposal/power_change() - ..() // do default setting/reset of stat NOPOWER bit - update() // update icon - return - - -// called when holder is expelled from a disposal -// should usually only occur if the pipe network is modified -/obj/machinery/disposal/proc/expel(var/obj/structure/disposalholder/H) - - var/turf/target - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) // Somehow, someone managed to flush a window which broke mid-transit and caused the disposal to go in an infinite loop trying to expel null, hopefully this fixes it - for(var/atom/movable/AM in H) - target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5)) - - AM.loc = src.loc - AM.pipe_eject(0) - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) - - H.vent_gas(loc) - qdel(H) - -/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if (istype(mover,/obj/item) && mover.throwing) - var/obj/item/I = mover - if(istype(I, /obj/item/projectile)) - return - if(prob(75)) - I.loc = src - for(var/mob/M in viewers(src)) - M.show_message("\the [I] lands in \the [src].", 3) - else - for(var/mob/M in viewers(src)) - M.show_message("\the [I] bounces off of \the [src]'s rim!.", 3) - return 0 - else - return ..(mover, target, height, air_group) - -// virtual disposal object -// travels through pipes in lieu of actual items -// contents will be items flushed by the disposal -// this allows the gas flushed to be tracked - -/obj/structure/disposalholder - invisibility = 101 - var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point - var/active = 0 // true if the holder is moving, otherwise inactive - dir = 0 - var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops) - var/has_fat_guy = 0 // true if contains a fat person - var/destinationTag = 0 // changes if contains a delivery container - var/tomail = 0 //changes if contains wrapped package - var/hasmob = 0 //If it contains a mob - - - // initialize a holder from the contents of a disposal unit - proc/init(var/obj/machinery/disposal/D) - gas = D.air_contents// transfer gas resv. into holder object - - //Check for any living mobs trigger hasmob. - //hasmob effects whether the package goes to cargo or its tagged destination. - for(var/mob/living/M in D) - if(M && M.stat != 2) - hasmob = 1 - - //Checks 1 contents level deep. This means that players can be sent through disposals... - //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) - for(var/obj/O in D) - if(O.contents) - for(var/mob/living/M in O.contents) - if(M && M.stat != 2) - hasmob = 1 - - // now everything inside the disposal gets put into the holder - // note AM since can contain mobs or objs - for(var/atom/movable/AM in D) - AM.loc = src - if(istype(AM, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = AM - if(FAT in H.mutations) // is a human and fat? - has_fat_guy = 1 // set flag on holder - if(istype(AM, /obj/structure/bigDelivery) && !hasmob) - var/obj/structure/bigDelivery/T = AM - src.destinationTag = T.sortTag - if(istype(AM, /obj/item/smallDelivery) && !hasmob) - var/obj/item/smallDelivery/T = AM - src.destinationTag = T.sortTag - - - // start the movement process - // argument is the disposal unit the holder started in - proc/start(var/obj/machinery/disposal/D) - if(!D.trunk) - D.expel(src) // no trunk connected, so expel immediately - return - - loc = D.trunk - active = 1 - dir = DOWN - spawn(1) - move() // spawn off the movement process - - return - - // movement process, persists while holder is moving through pipes - proc/move() - var/obj/structure/disposalpipe/last - while(active) - if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy - active = 0 - // find the fat guys - for(var/mob/living/carbon/human/H in src) - - break - sleep(1) // was 1 - var/obj/structure/disposalpipe/curr = loc - last = curr - curr = curr.transfer(src) - if(!curr) - last.expel(src, loc, dir) - - // - if(!(count--)) - active = 0 - return - - - - // find the turf which should contain the next pipe - proc/nextloc() - return get_step(loc,dir) - - // find a matching pipe on a turf - proc/findpipe(var/turf/T) - - if(!T) - return null - - var/fdir = turn(dir, 180) // flip the movement direction - for(var/obj/structure/disposalpipe/P in T) - if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir - return P - // if no matching pipe, return null - return null - - // merge two holder objects - // used when a a holder meets a stuck holder - proc/merge(var/obj/structure/disposalholder/other) - for(var/atom/movable/AM in other) - AM.loc = src // move everything in other holder to this one - if(ismob(AM)) - var/mob/M = AM - if(M.client) // if a client mob, update eye to follow this holder - M.client.eye = src - - if(other.has_fat_guy) - has_fat_guy = 1 - qdel(other) - - - // called when player tries to move while in a pipe - relaymove(mob/user as mob) - if (user.stat) - return - if (src.loc) - for (var/mob/M in hearers(src.loc.loc)) - M << "CLONG, clong!" - - playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) - - // called to vent all gas in holder to a location - proc/vent_gas(var/atom/location) - location.assume_air(gas) // vent all gas to turf - return - -// Disposal pipes - -/obj/structure/disposalpipe - icon = 'icons/obj/pipes/disposal.dmi' - name = "disposal pipe" - desc = "An underfloor disposal pipe." - anchored = 1 - density = 0 - - level = 1 // underfloor only - var/dpdir = 0 // bitmask of pipe directions - dir = 0 // dir will contain dominant direction for junction pipes - var/health = 10 // health points 0-10 - layer = 2.3 // slightly lower than wires and other pipes - var/base_icon_state // initial icon state on map - - // new pipe, set the icon_state as on map - New() - ..() - base_icon_state = icon_state - return - - - // pipe is deleted - // ensure if holder is present, it is expelled - Destroy() - var/obj/structure/disposalholder/H = locate() in src - if(H) - // holder was present - H.active = 0 - var/turf/T = src.loc - if(T.density) - // deleting pipe is inside a dense turf (wall) - // this is unlikely, but just dump out everything into the turf in case - - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(0) - qdel(H) - ..() - return - - // otherwise, do normal expel from turf - if(H) - expel(H, T, 0) - ..() - - // returns the direction of the next pipe object, given the entrance dir - // by default, returns the bitmask of remaining directions - proc/nextdir(var/fromdir) - return dpdir & (~turn(fromdir, 180)) - - // transfer the holder through this pipe segment - // overriden for special behaviour - // - proc/transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - - // update the icon_state to reflect hidden status - proc/update() - var/turf/T = src.loc - hide(T.intact && !istype(T,/turf/space)) // space never hides pipes - - // hide called by levelupdate if turf intact status changes - // change visibility status and force update of icon - hide(var/intact) - invisibility = intact ? 101: 0 // hide if floor is intact - updateicon() - - // update actual icon_state depending on visibility - // if invisible, append "f" to icon_state to show faded version - // this will be revealed if a T-scanner is used - // if visible, use regular icon_state - proc/updateicon() - if(invisibility) - icon_state = "[base_icon_state]f" - else - icon_state = base_icon_state - return - - - // expel the held objects into a turf - // called when there is a break in the pipe - // - - proc/expel(var/obj/structure/disposalholder/H, var/turf/T, var/direction) - - var/turf/target - - if(istype(T, /turf/simulated/floor)) //intact floor, pop the tile - var/turf/simulated/floor/F = T - if(F.floor_tile) - F.floor_tile.loc = H //It took me a day to figure out this was the right way to do it. ¯\_(;_;)_/¯ - F.floor_tile = null //So it doesn't get deleted in make_plating() - F.make_plating() - - if(direction) // direction is specified - if(istype(T, /turf/space)) // if ended in space, then range is unlimited - target = get_edge_target_turf(T, direction) - else // otherwise limit to 10 tiles - target = get_ranged_target_turf(T, direction, 10) - - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(direction) - spawn(1) - if(AM) - AM.throw_at(target, 100, 1) - - else // no specified direction, so throw in random direction - - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) - for(var/atom/movable/AM in H) - target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5)) - - AM.loc = T - AM.pipe_eject(0) - spawn(1) - if(AM) - AM.throw_at(target, 5, 1) - H.vent_gas(T) - qdel(H) - return - - // call to break the pipe - // will expel any holder inside at the time - // then delete the pipe - // remains : set to leave broken pipe pieces in place - proc/broken(var/remains = 0) - if(remains) - for(var/D in cardinal) - if(D & dpdir) - var/obj/structure/disposalpipe/broken/P = new(src.loc) - P.dir = D - - src.invisibility = 101 // make invisible (since we won't delete the pipe immediately) - var/obj/structure/disposalholder/H = locate() in src - if(H) - // holder was present - H.active = 0 - var/turf/T = src.loc - if(T.density) - // broken pipe is inside a dense turf (wall) - // this is unlikely, but just dump out everything into the turf in case - - for(var/atom/movable/AM in H) - AM.loc = T - AM.pipe_eject(0) - qdel(H) - return - - // otherwise, do normal expel from turf - if(H) - expel(H, T, 0) - - spawn(2) // delete pipe after 2 ticks to ensure expel proc finished - qdel(src) - - - // pipe affected by explosion - ex_act(severity) - - switch(severity) - if(1.0) - broken(0) - return - if(2.0) - health -= rand(5,15) - healthcheck() - return - if(3.0) - health -= rand(0,15) - healthcheck() - return - - - // test health for brokenness - proc/healthcheck() - if(health < -2) - broken(0) - else if(health<1) - broken(1) - return - - //attack by item - //weldingtool: unfasten and convert to obj/disposalconstruct - - attackby(var/obj/item/I, var/mob/user) - - var/turf/T = src.loc - if(T.intact) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - // check if anything changed over 2 seconds - var/turf/uloc = user.loc - var/atom/wloc = W.loc - user << "Slicing the disposal pipe." - sleep(30) - if(!W.isOn()) return - if(user.loc == uloc && wloc == W.loc) - welded() - else - user << "You must stay still while welding the pipe." - else - user << "You need more welding fuel to cut the pipe." - return - - // called when pipe is cut with welder - proc/welded() - - var/obj/structure/disposalconstruct/C = new (src.loc) - switch(base_icon_state) - if("pipe-s") - C.ptype = 0 - if("pipe-c") - C.ptype = 1 - if("pipe-j1") - C.ptype = 2 - if("pipe-j2") - C.ptype = 3 - if("pipe-y") - C.ptype = 4 - if("pipe-t") - C.ptype = 5 - if("pipe-j1s") - C.ptype = 9 - if("pipe-j2s") - C.ptype = 10 - src.transfer_fingerprints_to(C) - C.dir = dir - C.density = 0 - C.anchored = 1 - C.update() - - qdel(src) - -// *** TEST verb -//client/verb/dispstop() -// for(var/obj/structure/disposalholder/H in world) -// H.active = 0 - -// a straight or bent segment -/obj/structure/disposalpipe/segment - icon_state = "pipe-s" - - New() - ..() - if(icon_state == "pipe-s") - dpdir = dir | turn(dir, 180) - else - dpdir = dir | turn(dir, -90) - - update() - return - - - - -//a three-way junction with dir being the dominant direction -/obj/structure/disposalpipe/junction - icon_state = "pipe-j1" - - New() - ..() - if(icon_state == "pipe-j1") - dpdir = dir | turn(dir, -90) | turn(dir,180) - else if(icon_state == "pipe-j2") - dpdir = dir | turn(dir, 90) | turn(dir,180) - else // pipe-y - dpdir = dir | turn(dir,90) | turn(dir, -90) - update() - return - - - // next direction to move - // if coming in from secondary dirs, then next is primary dir - // if coming in from primary dir, then next is equal chance of other dirs - - nextdir(var/fromdir) - var/flipdir = turn(fromdir, 180) - if(flipdir != dir) // came from secondary dir - return dir // so exit through primary - else // came from primary - // so need to choose either secondary exit - var/mask = ..(fromdir) - - // find a bit which is set - var/setbit = 0 - if(mask & NORTH) - setbit = NORTH - else if(mask & SOUTH) - setbit = SOUTH - else if(mask & EAST) - setbit = EAST - else - setbit = WEST - - if(prob(50)) // 50% chance to choose the found bit or the other one - return setbit - else - return mask & (~setbit) - -//a three-way junction that sorts objects -/obj/structure/disposalpipe/sortjunction - - icon_state = "pipe-j1s" - var/sortType = 0 //Look at the list called TAGGERLOCATIONS in setup.dm - var/posdir = 0 - var/negdir = 0 - var/sortdir = 0 - - proc/updatedesc() - desc = "An underfloor disposal pipe with a package sorting mechanism." - if(sortType>0) - var/tag = uppertext(TAGGERLOCATIONS[sortType]) - desc += "\nIt's tagged with [tag]" - - proc/updatedir() - posdir = dir - negdir = turn(posdir, 180) - - if(icon_state == "pipe-j1s") - sortdir = turn(posdir, -90) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) - - dpdir = sortdir | posdir | negdir - - New() - ..() - updatedir() - updatedesc() - update() - return - - attackby(var/obj/item/I, var/mob/user) - if(..()) - return - - if(istype(I, /obj/item/device/destTagger)) - var/obj/item/device/destTagger/O = I - - if(O.currTag > 0)// Tag set - sortType = O.currTag - playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) - var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) - user << "\blue Changed filter to [tag]" - updatedesc() - - - // next direction to move - // if coming in from negdir, then next is primary dir or sortdir - // if coming in from posdir, then flip around and go back to posdir - // if coming in from sortdir, go to posdir - - nextdir(var/fromdir, var/sortTag) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir - - if(src.sortType == sortTag) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction - return posdir - - transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.destinationTag) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - -//a three-way junction that sorts objects destined for the mail office mail table (tomail = 1) -/obj/structure/disposalpipe/wrapsortjunction - - desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects." - icon_state = "pipe-j1s" - var/posdir = 0 - var/negdir = 0 - var/sortdir = 0 - - New() - ..() - posdir = dir - if(icon_state == "pipe-j1s") - sortdir = turn(posdir, -90) - negdir = turn(posdir, 180) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) - negdir = turn(posdir, 180) - dpdir = sortdir | posdir | negdir - - update() - return - - // next direction to move - // if coming in from negdir, then next is primary dir or sortdir - // if coming in from posdir, then flip around and go back to posdir - // if coming in from sortdir, go to posdir - - nextdir(var/fromdir, var/istomail) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir - - if(istomail) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction - return posdir - - transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.tomail) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - - - - - -//a trunk joining to a disposal bin or outlet on the same turf -/obj/structure/disposalpipe/trunk - icon_state = "pipe-t" - var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet - -/obj/structure/disposalpipe/trunk/New() - ..() - dpdir = dir - spawn(1) - getlinked() - - update() - return - -/obj/structure/disposalpipe/trunk/proc/getlinked() - linked = null - var/obj/machinery/disposal/D = locate() in src.loc - if(D) - linked = D - if (!D.trunk) - D.trunk = src - - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O) - linked = O - - update() - return - - // Override attackby so we disallow trunkremoval when somethings ontop -/obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user) - - //Disposal bins or chutes - /* - These shouldn't be required - var/obj/machinery/disposal/D = locate() in src.loc - if(D && D.anchored) - return - - //Disposal outlet - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O && O.anchored) - return - */ - - //Disposal constructors - var/obj/structure/disposalconstruct/C = locate() in src.loc - if(C && C.anchored) - return - - var/turf/T = src.loc - if(T.intact) - return // prevent interaction with T-scanner revealed pipes - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/W = I - - if(linked) - user << "You need to deconstruct disposal machinery above this pipe." - return - - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - // check if anything changed over 2 seconds - var/turf/uloc = user.loc - var/atom/wloc = W.loc - user << "Slicing the disposal pipe." - sleep(30) - if(!W.isOn()) return - if(user.loc == uloc && wloc == W.loc) - welded() - else - user << "You must stay still while welding the pipe." - else - user << "You need more welding fuel to cut the pipe." - - return - - // would transfer to next pipe segment, but we are in a trunk - // if not entering from disposal bin, - // transfer to linked object (outlet or bin) - -/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H) - - if(H.dir == DOWN) // we just entered from a disposer - return ..() // so do base transfer proc - // otherwise, go to the linked object - if(linked) - var/obj/structure/disposaloutlet/O = linked - if(istype(O) && (H)) - O.expel(H) // expel at outlet - else - var/obj/machinery/disposal/D = linked - if(H) - D.expel(H) // expel at disposal - else - if(H) - src.expel(H, src.loc, 0) // expel at turf - return null - - // nextdir - -/obj/structure/disposalpipe/trunk/nextdir(var/fromdir) - if(fromdir == DOWN) - return dir - else - return 0 - -// a broken pipe -/obj/structure/disposalpipe/broken - icon_state = "pipe-b" - dpdir = 0 // broken pipes have dpdir=0 so they're not found as 'real' pipes - // i.e. will be treated as an empty turf - desc = "A broken piece of disposal pipe." - - New() - ..() - update() - return - - // called when welded - // for broken pipe, remove and turn into scrap - - welded() -// var/obj/item/scrap/S = new(src.loc) -// S.set_components(200,0,0) - qdel(src) - -// the disposal outlet machine - -/obj/structure/disposaloutlet - name = "disposal outlet" - desc = "An outlet for the pneumatic disposal system." - icon = 'icons/obj/pipes/disposal.dmi' - icon_state = "outlet" - density = 1 - anchored = 1 - var/active = 0 - var/turf/target // this will be where the output objects are 'thrown' to. - var/mode = 0 - var/start_eject = 0 - var/eject_range = 2 - - New() - ..() - - spawn(1) - target = get_ranged_target_turf(src, dir, 10) - - - var/obj/structure/disposalpipe/trunk/trunk = locate() in src.loc - if(trunk) - trunk.linked = src // link the pipe trunk to self - - // expel the contents of the holder object, then delete it - // called when the holder exits the outlet - proc/expel(var/obj/structure/disposalholder/H) - - flick("outlet-open", src) - if((start_eject + 30) < world.time) - start_eject = world.time - playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) - sleep(20) - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - else - sleep(20) - if(H) - for(var/atom/movable/AM in H) - AM.loc = src.loc - AM.pipe_eject(dir) - spawn(5) - if(AM) - AM.throw_at(target, eject_range, 1) - H.vent_gas(src.loc) - qdel(H) - return - - attackby(var/obj/item/I, var/mob/user) - if(!I || !user) - return - src.add_fingerprint(user) - if(istype(I, /obj/item/weapon/screwdriver)) - if(mode==0) - mode=1 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You remove the screws around the power connection." - return - else if(mode==1) - mode=0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You attach the screws around the power connection." - return - else if(istype(I,/obj/item/weapon/weldingtool) && mode==1) - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "You start slicing the floorweld off \the [src]." - if(do_after(user,20)) - if(!src || !W.isOn()) return - user << "You slice the floorweld off \the [src]." - var/obj/structure/disposalconstruct/C = new (src.loc) - src.transfer_fingerprints_to(C) - C.ptype = 7 // 7 = outlet - C.update() - C.anchored = 1 - C.density = 1 - qdel(src) - return - else - user << "You need more welding fuel to complete this task." - return - - - -// called when movable is expelled from a disposal pipe or outlet -// by default does nothing, override for special behaviour - -/atom/movable/proc/pipe_eject(var/direction) - return - -// check if mob has client, if so restore client view on eject -/mob/pipe_eject(var/direction) - if (src.client) - src.client.perspective = MOB_PERSPECTIVE - src.client.eye = src - - return - -/obj/effect/decal/cleanable/blood/gibs/pipe_eject(var/direction) - var/list/dirs - if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) - else - dirs = alldirs.Copy() - - src.streak(dirs) - -/obj/effect/decal/cleanable/robot_debris/gib/pipe_eject(var/direction) - var/list/dirs - if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) - else - dirs = alldirs.Copy() - - src.streak(dirs) +// Disposal bin +// Holds items for disposal into pipe system +// Draws air from turf, gradually charges internal reservoir +// Once full (~1 atm), uses air resv to flush items into the pipes +// Automatically recharges air (unless off), will flush when ready if pre-set +// Can hold items and human size things, no other draggables +// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation +#define SEND_PRESSURE 0.05*ONE_ATMOSPHERE + +/obj/machinery/disposal + name = "disposal unit" + desc = "A pneumatic waste disposal unit." + icon = 'icons/obj/pipes/disposal.dmi' + icon_state = "disposal" + anchored = 1 + density = 1 + var/datum/gas_mixture/air_contents // internal reservoir + var/mode = 1 // item mode 0=off 1=charging 2=charged + var/flush = 0 // true if flush handle is pulled + var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk + var/flushing = 0 // true if flushing in progress + var/flush_every_ticks = 30 //Every 30 ticks it will look whether it is ready to flush + var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush. + var/last_sound = 0 + + // create a new disposal + // find the attached trunk (if present) and init gas resvr. +/obj/machinery/disposal/New() + ..() + + trunk_check() + + air_contents = new/datum/gas_mixture() + //gas.volume = 1.05 * CELLSTANDARD + update() + +/obj/machinery/disposal/proc/trunk_check() + trunk = locate() in src.loc + if(!trunk) + mode = 0 + flush = 0 + else + mode = initial(mode) + flush = initial(flush) + trunk.linked = src // link the pipe trunk to self + +/obj/machinery/disposal/Destroy() + for(var/atom/movable/AM in contents) + AM.loc = src.loc + ..() + +/obj/machinery/disposal/initialize() + // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it + var/atom/L = loc + var/datum/gas_mixture/env = new + env.copy_from(L.return_air()) + var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) + air_contents.merge(removed) + trunk_check() + + // attack by item places it in to disposal +/obj/machinery/disposal/attackby(var/obj/item/I, var/mob/user) + if(stat & BROKEN || !I || !user || (I.flags & NODROP)) + return + + if(isrobot(user) && !istype(I, /obj/item/weapon/storage/bag/trash)) + return + src.add_fingerprint(user) + if(mode<=0) // It's off + if(istype(I, /obj/item/weapon/screwdriver)) + if(contents.len > 0) + user << "Eject the items first!" + return + if(mode==0) // It's off but still not unscrewed + mode=-1 // Set it to doubleoff l0l + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You remove the screws around the power connection." + return + else if(mode==-1) + mode=0 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You attach the screws around the power connection." + return + else if(istype(I,/obj/item/weapon/weldingtool) && mode==-1) + if(contents.len > 0) + user << "Eject the items first!" + return + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the floorweld off \the [src]." + + if(do_after(user,20)) + if(!src || !W.isOn()) return + user << "You slice the floorweld off \the [src]." + var/obj/structure/disposalconstruct/C = new (src.loc) + src.transfer_fingerprints_to(C) + C.ptype = 6 // 6 = disposal unit + C.anchored = 1 + C.density = 1 + C.update() + qdel(src) + return + else + user << "You need more welding fuel to complete this task." + return + + if(istype(I, /obj/item/weapon/melee/energy/blade)) + user << "You can't place \the [I] into \the [src]." + return + + if(istype(I, /obj/item/weapon/storage/bag/trash)) + var/obj/item/weapon/storage/bag/trash/T = I + user << "\blue You empty the bag." + for(var/obj/item/O in T.contents) + T.remove_from_storage(O,src) + T.update_icon() + update() + return + + var/obj/item/weapon/grab/G = I + if(istype(G)) // handle grabbed mob + if(ismob(G.affecting)) + var/mob/GM = G.affecting + for (var/mob/V in viewers(usr)) + V.show_message("[usr] starts putting [GM.name] into \the [src].", 3) + if(do_after(usr, 20)) + if (GM.client) + GM.client.perspective = EYE_PERSPECTIVE + GM.client.eye = src + GM.loc = src + for (var/mob/C in viewers(src)) + C.show_message("\red [GM.name] has been placed in \the [src] by [user].", 3) + qdel(G) + return + + if(!I) return + + user.drop_item() + if(I) + I.loc = src + + user << "You place \the [I] into \the [src]." + for(var/mob/M in viewers(src)) + if(M == user) + continue + M.show_message("[user.name] places \the [I] into \the [src].", 3) + + update() + +// mouse drop another mob or self +// +/obj/machinery/disposal/MouseDrop_T(mob/target, mob/user) + if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) + return + src.add_fingerprint(user) + var/target_loc = target.loc + var/msg + for (var/mob/V in viewers(usr)) + if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + V.show_message("[usr] starts climbing into \the [src].", 3) + if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.anchored) return + if(!ishuman(user) && !ismonkey(user)) return + V.show_message("[usr] starts stuffing [target.name] into \the [src].", 3) + if(!do_after(usr, 20)) + return + if(target_loc != target.loc) + return + if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in + // must be awake, not stunned or whatever + msg = "[user.name] climbs into \the [src]." + user << "You climb into \the [src]." + else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + msg = "[user.name] stuffs [target.name] into \the [src]!" + user << "You stuff [target.name] into \the [src]!" + else + return + if (target.client) + target.client.perspective = EYE_PERSPECTIVE + target.client.eye = src + target.loc = src + + for (var/mob/C in viewers(src)) + if(C == user) + continue + C.show_message(msg, 3) + + update() + return + +// can breath normally in the disposal +/obj/machinery/disposal/alter_health() + return get_turf(src) + +/obj/machinery/disposal/relaymove(mob/user as mob) + attempt_escape(user) + +// resist to escape the bin +/obj/machinery/disposal/container_resist() + attempt_escape(usr) + +/obj/machinery/disposal/proc/attempt_escape(mob/user as mob) + if(src.flushing) + return + go_out(user) + return + +// leave the disposal +/obj/machinery/disposal/proc/go_out(mob/user) + + if (user.client) + user.client.eye = user.client.mob + user.client.perspective = MOB_PERSPECTIVE + user.loc = src.loc + update() + return + + +// monkeys can only pull the flush lever +/obj/machinery/disposal/attack_paw(mob/user as mob) + if(stat & BROKEN) + return + + flush = !flush + update() + return + +// ai as human but can't flush +/obj/machinery/disposal/attack_ai(mob/user as mob) + interact(user, 1) + +// human interact with machine +/obj/machinery/disposal/attack_hand(mob/user as mob) + if(user && user.loc == src) + usr << "\red You cannot reach the controls from inside." + return + /* + if(mode==-1) + usr << "\red The disposal units power is disabled." + return + */ + interact(user, 0) + +// hostile mob escape from disposals +/obj/machinery/disposal/attack_animal(var/mob/living/simple_animal/M) + if(M.environment_smash) + visible_message("[M.name] smashes \the [src] apart!") + qdel(src) + return + +// user interaction +/obj/machinery/disposal/interact(mob/user, var/ai=0) + + src.add_fingerprint(user) + if(stat & BROKEN) + user.unset_machine() + return + + var/dat = "Waste Disposal UnitWaste Disposal Unit
    " + + if(!ai) // AI can't pull flush handle + if(flush) + dat += "Disposal handle: Disengage Engaged" + else + dat += "Disposal handle: Disengaged Engage" + + dat += "

    Eject contents
    " + + if(mode <= 0) + dat += "Pump: Off On
    " + else if(mode == 1) + dat += "Pump: Off On (pressurizing)
    " + else + dat += "Pump: Off On (idle)
    " + + var/per = Clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100) + + dat += "Pressure: [round(per, 1)]%
    " + + + user.set_machine(src) + user << browse(dat, "window=disposal;size=360x170") + onclose(user, "disposal") + +// handle machine interaction + +/obj/machinery/disposal/Topic(href, href_list) + if(..()) + return + if(usr.loc == src) + usr << "\red You cannot reach the controls from inside." + return + + if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 + usr << "\red \The [src]'s power is disabled." + return + ..() + usr.set_machine(src) + + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=disposal") + return + + if(href_list["pump"]) + if(text2num(href_list["pump"])) + mode = 1 + else + mode = 0 + update() + + if(href_list["handle"]) + flush = text2num(href_list["handle"]) + update() + + if(href_list["eject"]) + eject() + return + +// eject the contents of the disposal unit +/obj/machinery/disposal/proc/eject() + for(var/atom/movable/AM in src) + AM.loc = src.loc + AM.pipe_eject(0) + update() + +// update the icon & overlays to reflect mode & status +/obj/machinery/disposal/proc/update() + overlays.Cut() + if(stat & BROKEN) + icon_state = "disposal-broken" + mode = 0 + flush = 0 + return + + // flush handle + if(flush) + overlays += image('icons/obj/pipes/disposal.dmi', "dispover-handle") + + // only handle is shown if no power + if(stat & NOPOWER || mode == -1) + return + + // check for items in disposal - occupied light + if(contents.len > 0) + overlays += image('icons/obj/pipes/disposal.dmi', "dispover-full") + + // charging and ready light + if(mode == 1) + overlays += image('icons/obj/pipes/disposal.dmi', "dispover-charge") + else if(mode == 2) + overlays += image('icons/obj/pipes/disposal.dmi', "dispover-ready") + +// timed process +// charge the gas reservoir and perform flush if ready +/obj/machinery/disposal/process() + if(stat & BROKEN) // nothing can happen if broken + return + + flush_count++ + if( flush_count >= flush_every_ticks ) + if( contents.len ) + if(mode == 2) + spawn(0) + feedback_inc("disposal_auto_flush",1) + flush() + flush_count = 0 + + src.updateDialog() + + if(flush && air_contents.return_pressure() >= SEND_PRESSURE ) // flush can happen even without power + spawn(0) + flush() + + if(stat & NOPOWER) // won't charge if no power + return + + use_power(100) // base power usage + + if(mode != 1) // if off or ready, no need to charge + return + + // otherwise charge + use_power(500) // charging power usage + + var/atom/L = loc // recharging from loc turf + + var/datum/gas_mixture/env = L.return_air() + var/pressure_delta = (SEND_PRESSURE*1.01) - air_contents.return_pressure() + + if(env.temperature > 0) + var/transfer_moles = 0.1 * pressure_delta*air_contents.volume/(env.temperature * R_IDEAL_GAS_EQUATION) + + //Actually transfer the gas + var/datum/gas_mixture/removed = env.remove(transfer_moles) + air_contents.merge(removed) + air_update_turf() + + + // if full enough, switch to ready mode + if(air_contents.return_pressure() >= SEND_PRESSURE) + mode = 2 + update() + return + +// perform a flush +/obj/machinery/disposal/proc/flush() + + flushing = 1 + flick("[icon_state]-flush", src) + + var/wrapcheck = 0 + var/obj/structure/disposalholder/H = new() // virtual holder object which actually + // travels through the pipes. + for(var/obj/item/smallDelivery/O in src) + wrapcheck = 1 + + if(wrapcheck == 1) + H.tomail = 1 + + sleep(10) + if(last_sound < world.time + 1) + playsound(src, 'sound/machines/disposalflush.ogg', 50, 0, 0) + last_sound = world.time + sleep(5) // wait for animation to finish + + H.init(src) // copy the contents of disposer to holder + air_contents = new() // new empty gas resv. + + H.start(src) // start the holder processing movement + flushing = 0 + // now reset disposal state + flush = 0 + if(mode == 2) // if was ready, + mode = 1 // switch to charging + update() + return + + +// called when area power changes +/obj/machinery/disposal/power_change() + ..() // do default setting/reset of stat NOPOWER bit + update() // update icon + return + + +// called when holder is expelled from a disposal +// should usually only occur if the pipe network is modified +/obj/machinery/disposal/proc/expel(var/obj/structure/disposalholder/H) + + var/turf/target + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) // Somehow, someone managed to flush a window which broke mid-transit and caused the disposal to go in an infinite loop trying to expel null, hopefully this fixes it + for(var/atom/movable/AM in H) + target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5)) + + AM.loc = src.loc + AM.pipe_eject(0) + spawn(1) + if(AM) + AM.throw_at(target, 5, 1) + + H.vent_gas(loc) + qdel(H) + +/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if (istype(mover,/obj/item) && mover.throwing) + var/obj/item/I = mover + if(istype(I, /obj/item/projectile)) + return + if(prob(75)) + I.loc = src + for(var/mob/M in viewers(src)) + M.show_message("\the [I] lands in \the [src].", 3) + else + for(var/mob/M in viewers(src)) + M.show_message("\the [I] bounces off of \the [src]'s rim!.", 3) + return 0 + else + return ..(mover, target, height, air_group) + +// virtual disposal object +// travels through pipes in lieu of actual items +// contents will be items flushed by the disposal +// this allows the gas flushed to be tracked + +/obj/structure/disposalholder + invisibility = 101 + var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point + var/active = 0 // true if the holder is moving, otherwise inactive + dir = 0 + var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops) + var/has_fat_guy = 0 // true if contains a fat person + var/destinationTag = 0 // changes if contains a delivery container + var/tomail = 0 //changes if contains wrapped package + var/hasmob = 0 //If it contains a mob + + + // initialize a holder from the contents of a disposal unit + proc/init(var/obj/machinery/disposal/D) + gas = D.air_contents// transfer gas resv. into holder object + + //Check for any living mobs trigger hasmob. + //hasmob effects whether the package goes to cargo or its tagged destination. + for(var/mob/living/M in D) + if(M && M.stat != 2) + hasmob = 1 + + //Checks 1 contents level deep. This means that players can be sent through disposals... + //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) + for(var/obj/O in D) + if(O.contents) + for(var/mob/living/M in O.contents) + if(M && M.stat != 2) + hasmob = 1 + + // now everything inside the disposal gets put into the holder + // note AM since can contain mobs or objs + for(var/atom/movable/AM in D) + AM.loc = src + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = AM + if(FAT in H.mutations) // is a human and fat? + has_fat_guy = 1 // set flag on holder + if(istype(AM, /obj/structure/bigDelivery) && !hasmob) + var/obj/structure/bigDelivery/T = AM + src.destinationTag = T.sortTag + if(istype(AM, /obj/item/smallDelivery) && !hasmob) + var/obj/item/smallDelivery/T = AM + src.destinationTag = T.sortTag + + + // start the movement process + // argument is the disposal unit the holder started in + proc/start(var/obj/machinery/disposal/D) + if(!D.trunk) + D.expel(src) // no trunk connected, so expel immediately + return + + loc = D.trunk + active = 1 + dir = DOWN + spawn(1) + move() // spawn off the movement process + + return + + // movement process, persists while holder is moving through pipes + proc/move() + var/obj/structure/disposalpipe/last + while(active) + if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy + active = 0 + // find the fat guys + for(var/mob/living/carbon/human/H in src) + + break + sleep(1) // was 1 + var/obj/structure/disposalpipe/curr = loc + last = curr + curr = curr.transfer(src) + if(!curr) + last.expel(src, loc, dir) + + // + if(!(count--)) + active = 0 + return + + + + // find the turf which should contain the next pipe + proc/nextloc() + return get_step(loc,dir) + + // find a matching pipe on a turf + proc/findpipe(var/turf/T) + + if(!T) + return null + + var/fdir = turn(dir, 180) // flip the movement direction + for(var/obj/structure/disposalpipe/P in T) + if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir + return P + // if no matching pipe, return null + return null + + // merge two holder objects + // used when a a holder meets a stuck holder + proc/merge(var/obj/structure/disposalholder/other) + for(var/atom/movable/AM in other) + AM.loc = src // move everything in other holder to this one + if(ismob(AM)) + var/mob/M = AM + if(M.client) // if a client mob, update eye to follow this holder + M.client.eye = src + + if(other.has_fat_guy) + has_fat_guy = 1 + qdel(other) + + + // called when player tries to move while in a pipe + relaymove(mob/user as mob) + if (user.stat) + return + if (src.loc) + for (var/mob/M in hearers(src.loc.loc)) + M << "CLONG, clong!" + + playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) + + // called to vent all gas in holder to a location + proc/vent_gas(var/atom/location) + location.assume_air(gas) // vent all gas to turf + return + +// Disposal pipes + +/obj/structure/disposalpipe + icon = 'icons/obj/pipes/disposal.dmi' + name = "disposal pipe" + desc = "An underfloor disposal pipe." + anchored = 1 + density = 0 + + level = 1 // underfloor only + var/dpdir = 0 // bitmask of pipe directions + dir = 0 // dir will contain dominant direction for junction pipes + var/health = 10 // health points 0-10 + layer = 2.3 // slightly lower than wires and other pipes + var/base_icon_state // initial icon state on map + + // new pipe, set the icon_state as on map + New() + ..() + base_icon_state = icon_state + return + + + // pipe is deleted + // ensure if holder is present, it is expelled + Destroy() + var/obj/structure/disposalholder/H = locate() in src + if(H) + // holder was present + H.active = 0 + var/turf/T = src.loc + if(T.density) + // deleting pipe is inside a dense turf (wall) + // this is unlikely, but just dump out everything into the turf in case + + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(0) + qdel(H) + ..() + return + + // otherwise, do normal expel from turf + if(H) + expel(H, T, 0) + ..() + + // returns the direction of the next pipe object, given the entrance dir + // by default, returns the bitmask of remaining directions + proc/nextdir(var/fromdir) + return dpdir & (~turn(fromdir, 180)) + + // transfer the holder through this pipe segment + // overriden for special behaviour + // + proc/transfer(var/obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + + // update the icon_state to reflect hidden status + proc/update() + var/turf/T = src.loc + hide(T.intact && !istype(T,/turf/space)) // space never hides pipes + + // hide called by levelupdate if turf intact status changes + // change visibility status and force update of icon + hide(var/intact) + invisibility = intact ? 101: 0 // hide if floor is intact + updateicon() + + // update actual icon_state depending on visibility + // if invisible, append "f" to icon_state to show faded version + // this will be revealed if a T-scanner is used + // if visible, use regular icon_state + proc/updateicon() + if(invisibility) + icon_state = "[base_icon_state]f" + else + icon_state = base_icon_state + return + + + // expel the held objects into a turf + // called when there is a break in the pipe + // + + proc/expel(var/obj/structure/disposalholder/H, var/turf/T, var/direction) + + var/turf/target + + if(istype(T, /turf/simulated/floor)) //intact floor, pop the tile + var/turf/simulated/floor/F = T + if(F.floor_tile) + F.floor_tile.loc = H //It took me a day to figure out this was the right way to do it. ¯\_(;_;)_/¯ + F.floor_tile = null //So it doesn't get deleted in make_plating() + F.make_plating() + + if(direction) // direction is specified + if(istype(T, /turf/space)) // if ended in space, then range is unlimited + target = get_edge_target_turf(T, direction) + else // otherwise limit to 10 tiles + target = get_ranged_target_turf(T, direction, 10) + + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(direction) + spawn(1) + if(AM) + AM.throw_at(target, 100, 1) + + else // no specified direction, so throw in random direction + + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + if(H) + for(var/atom/movable/AM in H) + target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5)) + + AM.loc = T + AM.pipe_eject(0) + spawn(1) + if(AM) + AM.throw_at(target, 5, 1) + H.vent_gas(T) + qdel(H) + return + + // call to break the pipe + // will expel any holder inside at the time + // then delete the pipe + // remains : set to leave broken pipe pieces in place + proc/broken(var/remains = 0) + if(remains) + for(var/D in cardinal) + if(D & dpdir) + var/obj/structure/disposalpipe/broken/P = new(src.loc) + P.dir = D + + src.invisibility = 101 // make invisible (since we won't delete the pipe immediately) + var/obj/structure/disposalholder/H = locate() in src + if(H) + // holder was present + H.active = 0 + var/turf/T = src.loc + if(T.density) + // broken pipe is inside a dense turf (wall) + // this is unlikely, but just dump out everything into the turf in case + + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(0) + qdel(H) + return + + // otherwise, do normal expel from turf + if(H) + expel(H, T, 0) + + spawn(2) // delete pipe after 2 ticks to ensure expel proc finished + qdel(src) + + + // pipe affected by explosion + ex_act(severity) + + switch(severity) + if(1.0) + broken(0) + return + if(2.0) + health -= rand(5,15) + healthcheck() + return + if(3.0) + health -= rand(0,15) + healthcheck() + return + + + // test health for brokenness + proc/healthcheck() + if(health < -2) + broken(0) + else if(health<1) + broken(1) + return + + //attack by item + //weldingtool: unfasten and convert to obj/disposalconstruct + + attackby(var/obj/item/I, var/mob/user) + + var/turf/T = src.loc + if(T.intact) + return // prevent interaction with T-scanner revealed pipes + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = I + + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + // check if anything changed over 2 seconds + var/turf/uloc = user.loc + var/atom/wloc = W.loc + user << "Slicing the disposal pipe." + sleep(30) + if(!W.isOn()) return + if(user.loc == uloc && wloc == W.loc) + welded() + else + user << "You must stay still while welding the pipe." + else + user << "You need more welding fuel to cut the pipe." + return + + // called when pipe is cut with welder + proc/welded() + + var/obj/structure/disposalconstruct/C = new (src.loc) + switch(base_icon_state) + if("pipe-s") + C.ptype = 0 + if("pipe-c") + C.ptype = 1 + if("pipe-j1") + C.ptype = 2 + if("pipe-j2") + C.ptype = 3 + if("pipe-y") + C.ptype = 4 + if("pipe-t") + C.ptype = 5 + if("pipe-j1s") + C.ptype = 9 + if("pipe-j2s") + C.ptype = 10 + src.transfer_fingerprints_to(C) + C.dir = dir + C.density = 0 + C.anchored = 1 + C.update() + + qdel(src) + +// *** TEST verb +//client/verb/dispstop() +// for(var/obj/structure/disposalholder/H in world) +// H.active = 0 + +// a straight or bent segment +/obj/structure/disposalpipe/segment + icon_state = "pipe-s" + + New() + ..() + if(icon_state == "pipe-s") + dpdir = dir | turn(dir, 180) + else + dpdir = dir | turn(dir, -90) + + update() + return + + + + +//a three-way junction with dir being the dominant direction +/obj/structure/disposalpipe/junction + icon_state = "pipe-j1" + + New() + ..() + if(icon_state == "pipe-j1") + dpdir = dir | turn(dir, -90) | turn(dir,180) + else if(icon_state == "pipe-j2") + dpdir = dir | turn(dir, 90) | turn(dir,180) + else // pipe-y + dpdir = dir | turn(dir,90) | turn(dir, -90) + update() + return + + + // next direction to move + // if coming in from secondary dirs, then next is primary dir + // if coming in from primary dir, then next is equal chance of other dirs + + nextdir(var/fromdir) + var/flipdir = turn(fromdir, 180) + if(flipdir != dir) // came from secondary dir + return dir // so exit through primary + else // came from primary + // so need to choose either secondary exit + var/mask = ..(fromdir) + + // find a bit which is set + var/setbit = 0 + if(mask & NORTH) + setbit = NORTH + else if(mask & SOUTH) + setbit = SOUTH + else if(mask & EAST) + setbit = EAST + else + setbit = WEST + + if(prob(50)) // 50% chance to choose the found bit or the other one + return setbit + else + return mask & (~setbit) + +//a three-way junction that sorts objects +/obj/structure/disposalpipe/sortjunction + + icon_state = "pipe-j1s" + var/sortType = 0 //Look at the list called TAGGERLOCATIONS in setup.dm + var/posdir = 0 + var/negdir = 0 + var/sortdir = 0 + + proc/updatedesc() + desc = "An underfloor disposal pipe with a package sorting mechanism." + if(sortType>0) + var/tag = uppertext(TAGGERLOCATIONS[sortType]) + desc += "\nIt's tagged with [tag]" + + proc/updatedir() + posdir = dir + negdir = turn(posdir, 180) + + if(icon_state == "pipe-j1s") + sortdir = turn(posdir, -90) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) + + dpdir = sortdir | posdir | negdir + + New() + ..() + updatedir() + updatedesc() + update() + return + + attackby(var/obj/item/I, var/mob/user) + if(..()) + return + + if(istype(I, /obj/item/device/destTagger)) + var/obj/item/device/destTagger/O = I + + if(O.currTag > 0)// Tag set + sortType = O.currTag + playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) + var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) + user << "\blue Changed filter to [tag]" + updatedesc() + + + // next direction to move + // if coming in from negdir, then next is primary dir or sortdir + // if coming in from posdir, then flip around and go back to posdir + // if coming in from sortdir, go to posdir + + nextdir(var/fromdir, var/sortTag) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir + + if(src.sortType == sortTag) //if destination matches filtered type... + return sortdir // exit through sortdirection + else + return posdir + else // came from sortdir + // so go with the flow to positive direction + return posdir + + transfer(var/obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.destinationTag) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + +//a three-way junction that sorts objects destined for the mail office mail table (tomail = 1) +/obj/structure/disposalpipe/wrapsortjunction + + desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects." + icon_state = "pipe-j1s" + var/posdir = 0 + var/negdir = 0 + var/sortdir = 0 + + New() + ..() + posdir = dir + if(icon_state == "pipe-j1s") + sortdir = turn(posdir, -90) + negdir = turn(posdir, 180) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) + negdir = turn(posdir, 180) + dpdir = sortdir | posdir | negdir + + update() + return + + // next direction to move + // if coming in from negdir, then next is primary dir or sortdir + // if coming in from posdir, then flip around and go back to posdir + // if coming in from sortdir, go to posdir + + nextdir(var/fromdir, var/istomail) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir + + if(istomail) //if destination matches filtered type... + return sortdir // exit through sortdirection + else + return posdir + else // came from sortdir + // so go with the flow to positive direction + return posdir + + transfer(var/obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.tomail) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + + return P + + + + + +//a trunk joining to a disposal bin or outlet on the same turf +/obj/structure/disposalpipe/trunk + icon_state = "pipe-t" + var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet + +/obj/structure/disposalpipe/trunk/New() + ..() + dpdir = dir + spawn(1) + getlinked() + + update() + return + +/obj/structure/disposalpipe/trunk/proc/getlinked() + linked = null + var/obj/machinery/disposal/D = locate() in src.loc + if(D) + linked = D + if (!D.trunk) + D.trunk = src + + var/obj/structure/disposaloutlet/O = locate() in src.loc + if(O) + linked = O + + update() + return + + // Override attackby so we disallow trunkremoval when somethings ontop +/obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user) + + //Disposal bins or chutes + /* + These shouldn't be required + var/obj/machinery/disposal/D = locate() in src.loc + if(D && D.anchored) + return + + //Disposal outlet + var/obj/structure/disposaloutlet/O = locate() in src.loc + if(O && O.anchored) + return + */ + + //Disposal constructors + var/obj/structure/disposalconstruct/C = locate() in src.loc + if(C && C.anchored) + return + + var/turf/T = src.loc + if(T.intact) + return // prevent interaction with T-scanner revealed pipes + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/W = I + + if(linked) + user << "You need to deconstruct disposal machinery above this pipe." + return + + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + // check if anything changed over 2 seconds + var/turf/uloc = user.loc + var/atom/wloc = W.loc + user << "Slicing the disposal pipe." + sleep(30) + if(!W.isOn()) return + if(user.loc == uloc && wloc == W.loc) + welded() + else + user << "You must stay still while welding the pipe." + else + user << "You need more welding fuel to cut the pipe." + + return + + // would transfer to next pipe segment, but we are in a trunk + // if not entering from disposal bin, + // transfer to linked object (outlet or bin) + +/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H) + + if(H.dir == DOWN) // we just entered from a disposer + return ..() // so do base transfer proc + // otherwise, go to the linked object + if(linked) + var/obj/structure/disposaloutlet/O = linked + if(istype(O) && (H)) + O.expel(H) // expel at outlet + else + var/obj/machinery/disposal/D = linked + if(H) + D.expel(H) // expel at disposal + else + if(H) + src.expel(H, src.loc, 0) // expel at turf + return null + + // nextdir + +/obj/structure/disposalpipe/trunk/nextdir(var/fromdir) + if(fromdir == DOWN) + return dir + else + return 0 + +// a broken pipe +/obj/structure/disposalpipe/broken + icon_state = "pipe-b" + dpdir = 0 // broken pipes have dpdir=0 so they're not found as 'real' pipes + // i.e. will be treated as an empty turf + desc = "A broken piece of disposal pipe." + + New() + ..() + update() + return + + // called when welded + // for broken pipe, remove and turn into scrap + + welded() +// var/obj/item/scrap/S = new(src.loc) +// S.set_components(200,0,0) + qdel(src) + +// the disposal outlet machine + +/obj/structure/disposaloutlet + name = "disposal outlet" + desc = "An outlet for the pneumatic disposal system." + icon = 'icons/obj/pipes/disposal.dmi' + icon_state = "outlet" + density = 1 + anchored = 1 + var/active = 0 + var/turf/target // this will be where the output objects are 'thrown' to. + var/mode = 0 + var/start_eject = 0 + var/eject_range = 2 + + New() + ..() + + spawn(1) + target = get_ranged_target_turf(src, dir, 10) + + + var/obj/structure/disposalpipe/trunk/trunk = locate() in src.loc + if(trunk) + trunk.linked = src // link the pipe trunk to self + + // expel the contents of the holder object, then delete it + // called when the holder exits the outlet + proc/expel(var/obj/structure/disposalholder/H) + + flick("outlet-open", src) + if((start_eject + 30) < world.time) + start_eject = world.time + playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) + sleep(20) + playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) + else + sleep(20) + if(H) + for(var/atom/movable/AM in H) + AM.loc = src.loc + AM.pipe_eject(dir) + spawn(5) + if(AM) + AM.throw_at(target, eject_range, 1) + H.vent_gas(src.loc) + qdel(H) + return + + attackby(var/obj/item/I, var/mob/user) + if(!I || !user) + return + src.add_fingerprint(user) + if(istype(I, /obj/item/weapon/screwdriver)) + if(mode==0) + mode=1 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You remove the screws around the power connection." + return + else if(mode==1) + mode=0 + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You attach the screws around the power connection." + return + else if(istype(I,/obj/item/weapon/weldingtool) && mode==1) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "You start slicing the floorweld off \the [src]." + if(do_after(user,20)) + if(!src || !W.isOn()) return + user << "You slice the floorweld off \the [src]." + var/obj/structure/disposalconstruct/C = new (src.loc) + src.transfer_fingerprints_to(C) + C.ptype = 7 // 7 = outlet + C.update() + C.anchored = 1 + C.density = 1 + qdel(src) + return + else + user << "You need more welding fuel to complete this task." + return + + + +// called when movable is expelled from a disposal pipe or outlet +// by default does nothing, override for special behaviour + +/atom/movable/proc/pipe_eject(var/direction) + return + +// check if mob has client, if so restore client view on eject +/mob/pipe_eject(var/direction) + if (src.client) + src.client.perspective = MOB_PERSPECTIVE + src.client.eye = src + + return + +/obj/effect/decal/cleanable/blood/gibs/pipe_eject(var/direction) + var/list/dirs + if(direction) + dirs = list( direction, turn(direction, -45), turn(direction, 45)) + else + dirs = alldirs.Copy() + + src.streak(dirs) + +/obj/effect/decal/cleanable/robot_debris/gib/pipe_eject(var/direction) + var/list/dirs + if(direction) + dirs = list( direction, turn(direction, -45), turn(direction, 45)) + else + dirs = alldirs.Copy() + + src.streak(dirs) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 9ff29c42127..a451e5b39e6 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1866,4 +1866,4 @@ datum/design/night_vision_goggles req_tech = list("magnets" = 4) build_type = PROTOLATHE materials = list("$metal" = 100, "$glass" = 100, "$uranium" = 1000) - build_path = /obj/item/clothing/glasses/night + build_path = /obj/item/clothing/glasses/night diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index c5ecc05ef1e..ef765b17f9e 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -1,269 +1,269 @@ -/* -General Explination: -The research datum is the "folder" where all the research information is stored in a R&D console. It's also a holder for all the -various procs used to manipulate it. It has four variables and seven procs: - -Variables: -- possible_tech is a list of all the /datum/tech that can potentially be researched by the player. The RefreshResearch() proc -(explained later) only goes through those when refreshing what you know. Generally, possible_tech contains ALL of the existing tech -but it is possible to add tech to the game that DON'T start in it (example: Xeno tech). Generally speaking, you don't want to mess -with these since they should be the default version of the datums. They're actually stored in a list rather then using typesof to -refer to them since it makes it a bit easier to search through them for specific information. -- know_tech is the companion list to possible_tech. It's the tech you can actually research and improve. Until it's added to this -list, it can't be improved. All the tech in this list are visible to the player. -- possible_designs is functionally identical to possbile_tech except it's for /datum/design. -- known_designs is functionally identical to known_tech except it's for /datum/design - -Procs: -- TechHasReqs: Used by other procs (specifically RefreshResearch) to see whether all of a tech's requirements are currently in -known_tech and at a high enough level. -- DesignHasReqs: Same as TechHasReqs but for /datum/design and known_design. -- AddTech2Known: Adds a /datum/tech to known_tech. It checks to see whether it already has that tech (if so, it just replaces it). If -it doesn't have it, it adds it. Note: It does NOT check possible_tech at all. So if you want to add something strange to it (like -a player made tech?) you can. -- AddDesign2Known: Same as AddTech2Known except for /datum/design and known_designs. -- RefreshResearch: This is the workhorse of the R&D system. It updates the /datum/research holder and adds any unlocked tech paths -and designs you have reached the requirements for. It only checks through possible_tech and possible_designs, however, so it won't -accidentally add "secret" tech to it. -- UpdateTech is used as part of the actual researching process. It takes an ID and finds techs with that same ID in known_tech. When -it finds it, it checks to see whether it can improve it at all. If the known_tech's level is less then or equal to -the inputted level, it increases the known tech's level to the inputted level -1 or know tech's level +1 (whichever is higher). - -The tech datums are the actual "tech trees" that you improve through researching. Each one has five variables: -- Name: Pretty obvious. This is often viewable to the players. -- Desc: Pretty obvious. Also player viewable. -- ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it. -- Level: This is the current level of the tech. All techs start at 1 and have a max of 20. Devices and some techs require a certain -level in specific techs before you can produce them. -- Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the -research holder datum. - -*/ -/*************************************************************** -** Master Types ** -** Includes all the helper procs and basic tech processing. ** -***************************************************************/ - -/datum/research //Holder for all the existing, archived, and known tech. Individual to console. - - //Datum/tech go here. - var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events). - var/list/known_tech = list() //List of locally known tech. - var/list/possible_designs = list() //List of all designs (at base reliability). - var/list/known_designs = list() //List of available designs (at base reliability). - -/datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated. - for(var/T in typesof(/datum/tech) - /datum/tech) - possible_tech += new T(src) - for(var/D in typesof(/datum/design) - /datum/design) - possible_designs += new D(src) - RefreshResearch() - - - -//Checks to see if tech has all the required pre-reqs. -//Input: datum/tech; Output: 0/1 (false/true) -/datum/research/proc/TechHasReqs(var/datum/tech/T) - if(T.req_tech.len == 0) - return 1 - var/matches = 0 - for(var/req in T.req_tech) - for(var/datum/tech/known in known_tech) - if((req == known.id) && (known.level >= T.req_tech[req])) - matches++ - break - if(matches == T.req_tech.len) - return 1 - else - return 0 - -//Checks to see if design has all the required pre-reqs. -//Input: datum/design; Output: 0/1 (false/true) -/datum/research/proc/DesignHasReqs(var/datum/design/D)//Heavily optimized -Sieve - if(D.req_tech.len == 0) - return 1 - for(var/datum/tech/T in known_tech) - if((D.req_tech[T.id]) && (T.level < D.req_tech[T.id])) - return 0 - return 1 - -/* -//Checks to see if design has all the required pre-reqs. -//Input: datum/design; Output: 0/1 (false/true) -/datum/research/proc/DesignHasReqs(var/datum/design/D) - if(D.req_tech.len == 0) - return 1 - var/matches = 0 - for(var/req in D.req_tech) - for(var/datum/tech/known in known_tech) - if((req == known.id) && (known.level >= D.req_tech[req])) - matches++ - break - if(matches == D.req_tech.len) - return 1 - else - return 0 -*/ -//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed. -//Input: datum/tech; Output: Null -/datum/research/proc/AddTech2Known(var/datum/tech/T) - for(var/datum/tech/known in known_tech) - if(T.id == known.id) - if(T.level > known.level) - known.level = T.level - return - known_tech += T - return - -/datum/research/proc/AddDesign2Known(var/datum/design/D) - for(var/datum/design/known in known_designs) - if(D.id == known.id) - if(D.reliability > known.reliability) - known.reliability = D.reliability - return - known_designs += D - return - -//Refreshes known_tech and known_designs list. Then updates the reliability vars of the designs in the known_designs list. -//Input/Output: n/a -/datum/research/proc/RefreshResearch() - for(var/datum/tech/PT in possible_tech) - if(TechHasReqs(PT)) - AddTech2Known(PT) - for(var/datum/design/PD in possible_designs) - if(DesignHasReqs(PD)) - AddDesign2Known(PD) - for(var/datum/tech/T in known_tech) - T = Clamp(T.level, 1, 20) - for(var/datum/design/D in known_designs) - D.CalcReliability(known_tech) - return - -//Refreshes the levels of a given tech. -//Input: Tech's ID and Level; Output: null -/datum/research/proc/UpdateTech(var/ID, var/level) - for(var/datum/tech/KT in known_tech) - if(KT.id == ID) - if(KT.level <= level) - KT.level = max((KT.level + 1), (level - 1)) - return - -/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) - for(var/T in temp_tech) - if(temp_tech[T] - 1 >= known_tech[T]) - for(var/datum/design/D in known_designs) - if(D.req_tech[T]) - D.reliability = min(100, D.reliability + 1) - if(D.build_path == I.type) - D.reliability = min(100, D.reliability + rand(1,3)) - if(I.crit_fail) - D.reliability = min(100, D.reliability + rand(3, 5)) - - -/*************************************************************** -** Technology Datums ** -** Includes all the various technoliges and what they make. ** -***************************************************************/ - -datum/tech //Datum of individual technologies. - var/name = "name" //Name of the technology. - var/desc = "description" //General description of what it does and what it makes. - var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols. - var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech. - var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = # - - -//Trunk Technologies (don't require any other techs and you start knowning them). - -datum/tech/materials - name = "Materials Research" - desc = "Development of new and improved materials." - id = "materials" - -datum/tech/engineering - name = "Engineering Research" - desc = "Development of new and improved engineering parts and." - id = "engineering" - -datum/tech/plasmatech - name = "Plasma Research" - desc = "Research into the mysterious substance colloqually known as 'plasma'." - id = "plasmatech" - -datum/tech/powerstorage - name = "Power Manipulation Technology" - desc = "The various technologies behind the storage and generation of electicity." - id = "powerstorage" - -datum/tech/bluespace - name = "'Blue-space' Research" - desc = "Research into the sub-reality known as 'blue-space'" - id = "bluespace" - -datum/tech/biotech - name = "Biological Technology" - desc = "Research into the deeper mysteries of life and organic substances." - id = "biotech" - -datum/tech/combat - name = "Combat Systems Research" - desc = "The development of offensive and defensive systems." - id = "combat" - -datum/tech/magnets - name = "Electromagnetic Spectrum Research" - desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." - id = "magnets" - -datum/tech/programming - name = "Data Theory Research" - desc = "The development of new computer and artificial intelligence and data storage systems." - id = "programming" - -datum/tech/syndicate - name = "Illegal Technologies Research" - desc = "The study of technologies that violate Nanotrassen regulations." - id = "syndicate" - -/* -datum/tech/arcane - name = "Arcane Research" - desc = "Research into the occult and arcane field for use in practical science" - id = "arcane" - level = 0 //It didn't become "secret" as advertised. - -//Branch Techs -datum/tech/explosives - name = "Explosives Research" - desc = "The creation and application of explosive materials." - id = "explosives" - req_tech = list("materials" = 3) - -datum/tech/generators - name = "Power Generation Technology" - desc = "Research into more powerful and more reliable sources." - id = "generators" - req_tech = list("powerstorage" = 2) - -datum/tech/robotics - name = "Robotics Technology" - desc = "The development of advanced automated, autonomous machines." - id = "robotics" - req_tech = list("materials" = 3, "programming" = 3) -*/ - - -/obj/item/weapon/disk/tech_disk - name = "Technology Disk" - desc = "A disk for storing technology data for further research." - icon = 'icons/obj/cloning.dmi' - icon_state = "datadisk2" - item_state = "card-id" - w_class = 1.0 - m_amt = 30 - g_amt = 10 - var/datum/tech/stored - -/obj/item/weapon/disk/tech_disk/New() - src.pixel_x = rand(-5.0, 5) +/* +General Explination: +The research datum is the "folder" where all the research information is stored in a R&D console. It's also a holder for all the +various procs used to manipulate it. It has four variables and seven procs: + +Variables: +- possible_tech is a list of all the /datum/tech that can potentially be researched by the player. The RefreshResearch() proc +(explained later) only goes through those when refreshing what you know. Generally, possible_tech contains ALL of the existing tech +but it is possible to add tech to the game that DON'T start in it (example: Xeno tech). Generally speaking, you don't want to mess +with these since they should be the default version of the datums. They're actually stored in a list rather then using typesof to +refer to them since it makes it a bit easier to search through them for specific information. +- know_tech is the companion list to possible_tech. It's the tech you can actually research and improve. Until it's added to this +list, it can't be improved. All the tech in this list are visible to the player. +- possible_designs is functionally identical to possbile_tech except it's for /datum/design. +- known_designs is functionally identical to known_tech except it's for /datum/design + +Procs: +- TechHasReqs: Used by other procs (specifically RefreshResearch) to see whether all of a tech's requirements are currently in +known_tech and at a high enough level. +- DesignHasReqs: Same as TechHasReqs but for /datum/design and known_design. +- AddTech2Known: Adds a /datum/tech to known_tech. It checks to see whether it already has that tech (if so, it just replaces it). If +it doesn't have it, it adds it. Note: It does NOT check possible_tech at all. So if you want to add something strange to it (like +a player made tech?) you can. +- AddDesign2Known: Same as AddTech2Known except for /datum/design and known_designs. +- RefreshResearch: This is the workhorse of the R&D system. It updates the /datum/research holder and adds any unlocked tech paths +and designs you have reached the requirements for. It only checks through possible_tech and possible_designs, however, so it won't +accidentally add "secret" tech to it. +- UpdateTech is used as part of the actual researching process. It takes an ID and finds techs with that same ID in known_tech. When +it finds it, it checks to see whether it can improve it at all. If the known_tech's level is less then or equal to +the inputted level, it increases the known tech's level to the inputted level -1 or know tech's level +1 (whichever is higher). + +The tech datums are the actual "tech trees" that you improve through researching. Each one has five variables: +- Name: Pretty obvious. This is often viewable to the players. +- Desc: Pretty obvious. Also player viewable. +- ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it. +- Level: This is the current level of the tech. All techs start at 1 and have a max of 20. Devices and some techs require a certain +level in specific techs before you can produce them. +- Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the +research holder datum. + +*/ +/*************************************************************** +** Master Types ** +** Includes all the helper procs and basic tech processing. ** +***************************************************************/ + +/datum/research //Holder for all the existing, archived, and known tech. Individual to console. + + //Datum/tech go here. + var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events). + var/list/known_tech = list() //List of locally known tech. + var/list/possible_designs = list() //List of all designs (at base reliability). + var/list/known_designs = list() //List of available designs (at base reliability). + +/datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated. + for(var/T in typesof(/datum/tech) - /datum/tech) + possible_tech += new T(src) + for(var/D in typesof(/datum/design) - /datum/design) + possible_designs += new D(src) + RefreshResearch() + + + +//Checks to see if tech has all the required pre-reqs. +//Input: datum/tech; Output: 0/1 (false/true) +/datum/research/proc/TechHasReqs(var/datum/tech/T) + if(T.req_tech.len == 0) + return 1 + var/matches = 0 + for(var/req in T.req_tech) + for(var/datum/tech/known in known_tech) + if((req == known.id) && (known.level >= T.req_tech[req])) + matches++ + break + if(matches == T.req_tech.len) + return 1 + else + return 0 + +//Checks to see if design has all the required pre-reqs. +//Input: datum/design; Output: 0/1 (false/true) +/datum/research/proc/DesignHasReqs(var/datum/design/D)//Heavily optimized -Sieve + if(D.req_tech.len == 0) + return 1 + for(var/datum/tech/T in known_tech) + if((D.req_tech[T.id]) && (T.level < D.req_tech[T.id])) + return 0 + return 1 + +/* +//Checks to see if design has all the required pre-reqs. +//Input: datum/design; Output: 0/1 (false/true) +/datum/research/proc/DesignHasReqs(var/datum/design/D) + if(D.req_tech.len == 0) + return 1 + var/matches = 0 + for(var/req in D.req_tech) + for(var/datum/tech/known in known_tech) + if((req == known.id) && (known.level >= D.req_tech[req])) + matches++ + break + if(matches == D.req_tech.len) + return 1 + else + return 0 +*/ +//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed. +//Input: datum/tech; Output: Null +/datum/research/proc/AddTech2Known(var/datum/tech/T) + for(var/datum/tech/known in known_tech) + if(T.id == known.id) + if(T.level > known.level) + known.level = T.level + return + known_tech += T + return + +/datum/research/proc/AddDesign2Known(var/datum/design/D) + for(var/datum/design/known in known_designs) + if(D.id == known.id) + if(D.reliability > known.reliability) + known.reliability = D.reliability + return + known_designs += D + return + +//Refreshes known_tech and known_designs list. Then updates the reliability vars of the designs in the known_designs list. +//Input/Output: n/a +/datum/research/proc/RefreshResearch() + for(var/datum/tech/PT in possible_tech) + if(TechHasReqs(PT)) + AddTech2Known(PT) + for(var/datum/design/PD in possible_designs) + if(DesignHasReqs(PD)) + AddDesign2Known(PD) + for(var/datum/tech/T in known_tech) + T = Clamp(T.level, 1, 20) + for(var/datum/design/D in known_designs) + D.CalcReliability(known_tech) + return + +//Refreshes the levels of a given tech. +//Input: Tech's ID and Level; Output: null +/datum/research/proc/UpdateTech(var/ID, var/level) + for(var/datum/tech/KT in known_tech) + if(KT.id == ID) + if(KT.level <= level) + KT.level = max((KT.level + 1), (level - 1)) + return + +/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech) + for(var/T in temp_tech) + if(temp_tech[T] - 1 >= known_tech[T]) + for(var/datum/design/D in known_designs) + if(D.req_tech[T]) + D.reliability = min(100, D.reliability + 1) + if(D.build_path == I.type) + D.reliability = min(100, D.reliability + rand(1,3)) + if(I.crit_fail) + D.reliability = min(100, D.reliability + rand(3, 5)) + + +/*************************************************************** +** Technology Datums ** +** Includes all the various technoliges and what they make. ** +***************************************************************/ + +datum/tech //Datum of individual technologies. + var/name = "name" //Name of the technology. + var/desc = "description" //General description of what it does and what it makes. + var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols. + var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech. + var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = # + + +//Trunk Technologies (don't require any other techs and you start knowning them). + +datum/tech/materials + name = "Materials Research" + desc = "Development of new and improved materials." + id = "materials" + +datum/tech/engineering + name = "Engineering Research" + desc = "Development of new and improved engineering parts and." + id = "engineering" + +datum/tech/plasmatech + name = "Plasma Research" + desc = "Research into the mysterious substance colloqually known as 'plasma'." + id = "plasmatech" + +datum/tech/powerstorage + name = "Power Manipulation Technology" + desc = "The various technologies behind the storage and generation of electicity." + id = "powerstorage" + +datum/tech/bluespace + name = "'Blue-space' Research" + desc = "Research into the sub-reality known as 'blue-space'" + id = "bluespace" + +datum/tech/biotech + name = "Biological Technology" + desc = "Research into the deeper mysteries of life and organic substances." + id = "biotech" + +datum/tech/combat + name = "Combat Systems Research" + desc = "The development of offensive and defensive systems." + id = "combat" + +datum/tech/magnets + name = "Electromagnetic Spectrum Research" + desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." + id = "magnets" + +datum/tech/programming + name = "Data Theory Research" + desc = "The development of new computer and artificial intelligence and data storage systems." + id = "programming" + +datum/tech/syndicate + name = "Illegal Technologies Research" + desc = "The study of technologies that violate Nanotrassen regulations." + id = "syndicate" + +/* +datum/tech/arcane + name = "Arcane Research" + desc = "Research into the occult and arcane field for use in practical science" + id = "arcane" + level = 0 //It didn't become "secret" as advertised. + +//Branch Techs +datum/tech/explosives + name = "Explosives Research" + desc = "The creation and application of explosive materials." + id = "explosives" + req_tech = list("materials" = 3) + +datum/tech/generators + name = "Power Generation Technology" + desc = "Research into more powerful and more reliable sources." + id = "generators" + req_tech = list("powerstorage" = 2) + +datum/tech/robotics + name = "Robotics Technology" + desc = "The development of advanced automated, autonomous machines." + id = "robotics" + req_tech = list("materials" = 3, "programming" = 3) +*/ + + +/obj/item/weapon/disk/tech_disk + name = "Technology Disk" + desc = "A disk for storing technology data for further research." + icon = 'icons/obj/cloning.dmi' + icon_state = "datadisk2" + item_state = "card-id" + w_class = 1.0 + m_amt = 30 + g_amt = 10 + var/datum/tech/stored + +/obj/item/weapon/disk/tech_disk/New() + src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) \ No newline at end of file diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 3e82b8fb98f..bf53508cb38 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -1,344 +1,344 @@ -/obj/machinery/r_n_d/server - name = "R&D Server" - icon = 'icons/obj/machines/research.dmi' - icon_state = "server" - var/datum/research/files - var/health = 100 - var/list/id_with_upload = list() //List of R&D consoles with upload to server access. - var/list/id_with_download = list() //List of R&D consoles with download from server access. - var/id_with_upload_string = "" //String versions for easy editing in map editor. - var/id_with_download_string = "" - var/server_id = 0 - var/heat_gen = 100 - var/heating_power = 40000 - var/delay = 10 - req_access = list(access_rd) //Only the R&D can change server settings. - -/obj/machinery/r_n_d/server/New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/rdserver(null) - component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) - component_parts += new /obj/item/stack/cable_coil(null, 1) - component_parts += new /obj/item/stack/cable_coil(null, 1) - RefreshParts() - src.initialize(); //Agouri - -/obj/machinery/r_n_d/server/Destroy() - griefProtection() - ..() - -/obj/machinery/r_n_d/server/RefreshParts() - var/tot_rating = 0 - for(var/obj/item/weapon/stock_parts/SP in src) - tot_rating += SP.rating - heat_gen /= max(1, tot_rating) - -/obj/machinery/r_n_d/server/initialize() - if(!files) files = new /datum/research(src) - var/list/temp_list - if(!id_with_upload.len) - temp_list = list() - temp_list = text2list(id_with_upload_string, ";") - for(var/N in temp_list) - id_with_upload += text2num(N) - if(!id_with_download.len) - temp_list = list() - temp_list = text2list(id_with_download_string, ";") - for(var/N in temp_list) - id_with_download += text2num(N) - -/obj/machinery/r_n_d/server/process() - var/datum/gas_mixture/environment = loc.return_air() - switch(environment.temperature) - if(0 to T0C) - health = min(100, health + 1) - if(T0C to (T20C + 20)) - health = Clamp(health, 0, 100) - if((T20C + 20) to (T0C + 70)) - health = max(0, health - 1) - if(health <= 0) - /*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay. - refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */ - var/updateRD = 0 - files.known_designs = list() - for(var/datum/tech/T in files.known_tech) - if(prob(1)) - updateRD++ - T.level-- - if(updateRD) - files.RefreshResearch() - if(delay) - delay-- - else - produce_heat(heat_gen) - delay = initial(delay) - -/obj/machinery/r_n_d/server/meteorhit(var/obj/O as obj) - griefProtection() - ..() - - -/obj/machinery/r_n_d/server/emp_act(severity) - griefProtection() - ..() - - -/obj/machinery/r_n_d/server/ex_act(severity) - griefProtection() - ..() - - -/obj/machinery/r_n_d/server/blob_act() - griefProtection() - ..() - - - -//Backup files to centcom to help admins recover data after greifer attacks -/obj/machinery/r_n_d/server/proc/griefProtection() - for(var/obj/machinery/r_n_d/server/centcom/C in world) - for(var/datum/tech/T in files.known_tech) - C.files.AddTech2Known(T) - for(var/datum/design/D in files.known_designs) - C.files.AddDesign2Known(D) - C.files.RefreshResearch() - -/obj/machinery/r_n_d/server/proc/produce_heat(heat_amt) - if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater. - var/turf/simulated/L = loc - if(istype(L)) - var/datum/gas_mixture/env = L.return_air() - if(env.temperature < (heat_amt+T0C)) - - var/transfer_moles = 0.25 * env.total_moles() - - var/datum/gas_mixture/removed = env.remove(transfer_moles) - - if(removed) - - var/heat_capacity = removed.heat_capacity() - if(heat_capacity == 0 || heat_capacity == null) - heat_capacity = 1 - removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000) - - env.merge(removed) - air_update_turf() - -/obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob) - if (disabled) - return - if (shocked) - shock(user,50) - if (default_deconstruction_screwdriver(user, "server_o", "server", O)) - return - if(exchange_parts(user, O)) - return - if (panel_open) - if(istype(O, /obj/item/weapon/crowbar)) - griefProtection() - default_deconstruction_crowbar(O) - return 1 - -/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves. - if (disabled) - return - if (shocked) - shock(user,50) - return - -/obj/machinery/r_n_d/server/centcom - name = "Centcom Central R&D Database" - server_id = -1 - -/obj/machinery/r_n_d/server/centcom/initialize() - ..() - var/list/no_id_servers = list() - var/list/server_ids = list() - for(var/obj/machinery/r_n_d/server/S in world) - switch(S.server_id) - if(-1) - continue - if(0) - no_id_servers += S - else - server_ids += S.server_id - - for(var/obj/machinery/r_n_d/server/S in no_id_servers) - var/num = 1 - while(!S.server_id) - if(num in server_ids) - num++ - else - S.server_id = num - server_ids += num - no_id_servers -= S - -/obj/machinery/r_n_d/server/centcom/process() - return PROCESS_KILL //don't need process() - - -/obj/machinery/computer/rdservercontrol - name = "R&D Server Controller" - icon_state = "rdcomp" - var/screen = 0 - var/obj/machinery/r_n_d/server/temp_server - var/list/servers = list() - var/list/consoles = list() - var/badmin = 0 - circuit = /obj/item/weapon/circuitboard/rdservercontrol - -/obj/machinery/computer/rdservercontrol/Topic(href, href_list) - if(..()) - return - - add_fingerprint(usr) - usr.set_machine(src) - if(!src.allowed(usr) && !emagged) - usr << "\red You do not have the required access level" - return - - if(href_list["main"]) - screen = 0 - - else if(href_list["access"] || href_list["data"] || href_list["transfer"]) - temp_server = null - consoles = list() - servers = list() - for(var/obj/machinery/r_n_d/server/S in world) - if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"])) - temp_server = S - break - if(href_list["access"]) - screen = 1 - for(var/obj/machinery/computer/rdconsole/C in world) - if(C.sync) - consoles += C - else if(href_list["data"]) - screen = 2 - else if(href_list["transfer"]) - screen = 3 - for(var/obj/machinery/r_n_d/server/S in world) - if(S == src) - continue - servers += S - - else if(href_list["upload_toggle"]) - var/num = text2num(href_list["upload_toggle"]) - if(num in temp_server.id_with_upload) - temp_server.id_with_upload -= num - else - temp_server.id_with_upload += num - - else if(href_list["download_toggle"]) - var/num = text2num(href_list["download_toggle"]) - if(num in temp_server.id_with_download) - temp_server.id_with_download -= num - else - temp_server.id_with_download += num - - else if(href_list["reset_tech"]) - var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel") - if(choice == "Continue") - for(var/datum/tech/T in temp_server.files.known_tech) - if(T.id == href_list["reset_tech"]) - T.level = 1 - break - temp_server.files.RefreshResearch() - - else if(href_list["reset_design"]) - var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel") - if(choice == "Continue") - for(var/datum/design/D in temp_server.files.known_designs) - if(D.id == href_list["reset_design"]) - temp_server.files.known_designs -= D - break - temp_server.files.RefreshResearch() - - updateUsrDialog() - return - -/obj/machinery/computer/rdservercontrol/attack_hand(mob/user as mob) - if(..()) - return - user.set_machine(src) - var/dat = "" - - switch(screen) - if(0) //Main Menu - dat += "Connected Servers:

    " - - for(var/obj/machinery/r_n_d/server/S in world) - if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) - continue - dat += "[S.name] || " - dat += " Access Rights | " - dat += "Data Management" - if(badmin) dat += " | Server-to-Server Transfer" - dat += "
    " - - if(1) //Access rights menu - dat += "[temp_server.name] Access Rights

    " - dat += "Consoles with Upload Access
    " - for(var/obj/machinery/computer/rdconsole/C in consoles) - var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. - if(C.id in temp_server.id_with_upload) - dat += " (Remove)
    " - else - dat += " (Add)
    " - dat += "Consoles with Download Access
    " - for(var/obj/machinery/computer/rdconsole/C in consoles) - var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" - if(C.id in temp_server.id_with_download) - dat += " (Remove)
    " - else - dat += " (Add)
    " - dat += "
    Main Menu" - - if(2) //Data Management menu - dat += "[temp_server.name] Data ManagementP

    " - dat += "Known Technologies
    " - for(var/datum/tech/T in temp_server.files.known_tech) - dat += "* [T.name] " - dat += "(Reset)
    " //FYI, these are all strings. - dat += "Known Designs
    " - for(var/datum/design/D in temp_server.files.known_designs) - dat += "* [D.name] " - dat += "(Delete)
    " - dat += "
    Main Menu" - - if(3) //Server Data Transfer - dat += "[temp_server.name] Server to Server Transfer

    " - dat += "Send Data to what server?
    " - for(var/obj/machinery/r_n_d/server/S in servers) - dat += "[S.name] (Transfer)
    " - dat += "
    Main Menu" - user << browse("R&D Server Control
    [dat]", "window=server_control;size=575x400") - onclose(user, "server_control") - return - -/obj/machinery/computer/rdservercontrol/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob) - if(istype(D, /obj/item/weapon/card/emag) && !emagged) - playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) - emagged = 1 - user << "\blue You you disable the security protocols" - else - ..() - src.updateUsrDialog() - return - - -/obj/machinery/r_n_d/server/robotics - name = "Robotics R&D Server" - id_with_upload_string = "1;2" - id_with_download_string = "1;2" - server_id = 2 - - -/obj/machinery/r_n_d/server/core - name = "Core R&D Server" - id_with_upload_string = "1" - id_with_download_string = "1" - server_id = 1 +/obj/machinery/r_n_d/server + name = "R&D Server" + icon = 'icons/obj/machines/research.dmi' + icon_state = "server" + var/datum/research/files + var/health = 100 + var/list/id_with_upload = list() //List of R&D consoles with upload to server access. + var/list/id_with_download = list() //List of R&D consoles with download from server access. + var/id_with_upload_string = "" //String versions for easy editing in map editor. + var/id_with_download_string = "" + var/server_id = 0 + var/heat_gen = 100 + var/heating_power = 40000 + var/delay = 10 + req_access = list(access_rd) //Only the R&D can change server settings. + +/obj/machinery/r_n_d/server/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/rdserver(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/stack/cable_coil(null, 1) + component_parts += new /obj/item/stack/cable_coil(null, 1) + RefreshParts() + src.initialize(); //Agouri + +/obj/machinery/r_n_d/server/Destroy() + griefProtection() + ..() + +/obj/machinery/r_n_d/server/RefreshParts() + var/tot_rating = 0 + for(var/obj/item/weapon/stock_parts/SP in src) + tot_rating += SP.rating + heat_gen /= max(1, tot_rating) + +/obj/machinery/r_n_d/server/initialize() + if(!files) files = new /datum/research(src) + var/list/temp_list + if(!id_with_upload.len) + temp_list = list() + temp_list = text2list(id_with_upload_string, ";") + for(var/N in temp_list) + id_with_upload += text2num(N) + if(!id_with_download.len) + temp_list = list() + temp_list = text2list(id_with_download_string, ";") + for(var/N in temp_list) + id_with_download += text2num(N) + +/obj/machinery/r_n_d/server/process() + var/datum/gas_mixture/environment = loc.return_air() + switch(environment.temperature) + if(0 to T0C) + health = min(100, health + 1) + if(T0C to (T20C + 20)) + health = Clamp(health, 0, 100) + if((T20C + 20) to (T0C + 70)) + health = max(0, health - 1) + if(health <= 0) + /*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay. + refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */ + var/updateRD = 0 + files.known_designs = list() + for(var/datum/tech/T in files.known_tech) + if(prob(1)) + updateRD++ + T.level-- + if(updateRD) + files.RefreshResearch() + if(delay) + delay-- + else + produce_heat(heat_gen) + delay = initial(delay) + +/obj/machinery/r_n_d/server/meteorhit(var/obj/O as obj) + griefProtection() + ..() + + +/obj/machinery/r_n_d/server/emp_act(severity) + griefProtection() + ..() + + +/obj/machinery/r_n_d/server/ex_act(severity) + griefProtection() + ..() + + +/obj/machinery/r_n_d/server/blob_act() + griefProtection() + ..() + + + +//Backup files to centcom to help admins recover data after greifer attacks +/obj/machinery/r_n_d/server/proc/griefProtection() + for(var/obj/machinery/r_n_d/server/centcom/C in world) + for(var/datum/tech/T in files.known_tech) + C.files.AddTech2Known(T) + for(var/datum/design/D in files.known_designs) + C.files.AddDesign2Known(D) + C.files.RefreshResearch() + +/obj/machinery/r_n_d/server/proc/produce_heat(heat_amt) + if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater. + var/turf/simulated/L = loc + if(istype(L)) + var/datum/gas_mixture/env = L.return_air() + if(env.temperature < (heat_amt+T0C)) + + var/transfer_moles = 0.25 * env.total_moles() + + var/datum/gas_mixture/removed = env.remove(transfer_moles) + + if(removed) + + var/heat_capacity = removed.heat_capacity() + if(heat_capacity == 0 || heat_capacity == null) + heat_capacity = 1 + removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000) + + env.merge(removed) + air_update_turf() + +/obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (disabled) + return + if (shocked) + shock(user,50) + if (default_deconstruction_screwdriver(user, "server_o", "server", O)) + return + if(exchange_parts(user, O)) + return + if (panel_open) + if(istype(O, /obj/item/weapon/crowbar)) + griefProtection() + default_deconstruction_crowbar(O) + return 1 + +/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves. + if (disabled) + return + if (shocked) + shock(user,50) + return + +/obj/machinery/r_n_d/server/centcom + name = "Centcom Central R&D Database" + server_id = -1 + +/obj/machinery/r_n_d/server/centcom/initialize() + ..() + var/list/no_id_servers = list() + var/list/server_ids = list() + for(var/obj/machinery/r_n_d/server/S in world) + switch(S.server_id) + if(-1) + continue + if(0) + no_id_servers += S + else + server_ids += S.server_id + + for(var/obj/machinery/r_n_d/server/S in no_id_servers) + var/num = 1 + while(!S.server_id) + if(num in server_ids) + num++ + else + S.server_id = num + server_ids += num + no_id_servers -= S + +/obj/machinery/r_n_d/server/centcom/process() + return PROCESS_KILL //don't need process() + + +/obj/machinery/computer/rdservercontrol + name = "R&D Server Controller" + icon_state = "rdcomp" + var/screen = 0 + var/obj/machinery/r_n_d/server/temp_server + var/list/servers = list() + var/list/consoles = list() + var/badmin = 0 + circuit = /obj/item/weapon/circuitboard/rdservercontrol + +/obj/machinery/computer/rdservercontrol/Topic(href, href_list) + if(..()) + return + + add_fingerprint(usr) + usr.set_machine(src) + if(!src.allowed(usr) && !emagged) + usr << "\red You do not have the required access level" + return + + if(href_list["main"]) + screen = 0 + + else if(href_list["access"] || href_list["data"] || href_list["transfer"]) + temp_server = null + consoles = list() + servers = list() + for(var/obj/machinery/r_n_d/server/S in world) + if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"])) + temp_server = S + break + if(href_list["access"]) + screen = 1 + for(var/obj/machinery/computer/rdconsole/C in world) + if(C.sync) + consoles += C + else if(href_list["data"]) + screen = 2 + else if(href_list["transfer"]) + screen = 3 + for(var/obj/machinery/r_n_d/server/S in world) + if(S == src) + continue + servers += S + + else if(href_list["upload_toggle"]) + var/num = text2num(href_list["upload_toggle"]) + if(num in temp_server.id_with_upload) + temp_server.id_with_upload -= num + else + temp_server.id_with_upload += num + + else if(href_list["download_toggle"]) + var/num = text2num(href_list["download_toggle"]) + if(num in temp_server.id_with_download) + temp_server.id_with_download -= num + else + temp_server.id_with_download += num + + else if(href_list["reset_tech"]) + var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel") + if(choice == "Continue") + for(var/datum/tech/T in temp_server.files.known_tech) + if(T.id == href_list["reset_tech"]) + T.level = 1 + break + temp_server.files.RefreshResearch() + + else if(href_list["reset_design"]) + var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel") + if(choice == "Continue") + for(var/datum/design/D in temp_server.files.known_designs) + if(D.id == href_list["reset_design"]) + temp_server.files.known_designs -= D + break + temp_server.files.RefreshResearch() + + updateUsrDialog() + return + +/obj/machinery/computer/rdservercontrol/attack_hand(mob/user as mob) + if(..()) + return + user.set_machine(src) + var/dat = "" + + switch(screen) + if(0) //Main Menu + dat += "Connected Servers:

    " + + for(var/obj/machinery/r_n_d/server/S in world) + if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) + continue + dat += "[S.name] || " + dat += " Access Rights | " + dat += "Data Management" + if(badmin) dat += " | Server-to-Server Transfer" + dat += "
    " + + if(1) //Access rights menu + dat += "[temp_server.name] Access Rights

    " + dat += "Consoles with Upload Access
    " + for(var/obj/machinery/computer/rdconsole/C in consoles) + var/turf/console_turf = get_turf(C) + dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. + if(C.id in temp_server.id_with_upload) + dat += " (Remove)
    " + else + dat += " (Add)
    " + dat += "Consoles with Download Access
    " + for(var/obj/machinery/computer/rdconsole/C in consoles) + var/turf/console_turf = get_turf(C) + dat += "* [console_turf.loc]" + if(C.id in temp_server.id_with_download) + dat += " (Remove)
    " + else + dat += " (Add)
    " + dat += "
    Main Menu" + + if(2) //Data Management menu + dat += "[temp_server.name] Data ManagementP

    " + dat += "Known Technologies
    " + for(var/datum/tech/T in temp_server.files.known_tech) + dat += "* [T.name] " + dat += "(Reset)
    " //FYI, these are all strings. + dat += "Known Designs
    " + for(var/datum/design/D in temp_server.files.known_designs) + dat += "* [D.name] " + dat += "(Delete)
    " + dat += "
    Main Menu" + + if(3) //Server Data Transfer + dat += "[temp_server.name] Server to Server Transfer

    " + dat += "Send Data to what server?
    " + for(var/obj/machinery/r_n_d/server/S in servers) + dat += "[S.name] (Transfer)
    " + dat += "
    Main Menu" + user << browse("R&D Server Control
    [dat]", "window=server_control;size=575x400") + onclose(user, "server_control") + return + +/obj/machinery/computer/rdservercontrol/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob) + if(istype(D, /obj/item/weapon/card/emag) && !emagged) + playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) + emagged = 1 + user << "\blue You you disable the security protocols" + else + ..() + src.updateUsrDialog() + return + + +/obj/machinery/r_n_d/server/robotics + name = "Robotics R&D Server" + id_with_upload_string = "1;2" + id_with_download_string = "1;2" + server_id = 2 + + +/obj/machinery/r_n_d/server/core + name = "Core R&D Server" + id_with_upload_string = "1" + id_with_download_string = "1" + server_id = 1 diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index d5252cf5330..8fadd57ba3f 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -1,126 +1,126 @@ -var/obj/list/shuttles = list(("escape" = new /datum/shuttle_manager(/area/shuttle/escape/centcom, 0)), ("pod1" = new /datum/shuttle_manager(/area/shuttle/escape_pod1/station, 0)), ("pod2" = new /datum/shuttle_manager(/area/shuttle/escape_pod2/station, 0)), ("pod3" = new /datum/shuttle_manager(/area/shuttle/escape_pod3/station, 0)), ("pod4" = new /datum/shuttle_manager(/area/shuttle/escape_pod4/station, 0)), ("mining" = new /datum/shuttle_manager(/area/shuttle/mining/station, 10)), ("laborcamp" = new /datum/shuttle_manager(/area/shuttle/laborcamp/station, 10)), ("ferry" = new /datum/shuttle_manager(/area/shuttle/transport1/centcom, 0))) - //Pre-made shuttles should have non-number keys, so that buildable shuttles can use numbered keys without allowing 'I build a shuttle console with the escape number as its ID.' -datum/shuttle_manager - var/tickstomove = 10 //How long does it take to move the shuttle? - var/moving = 0 //Is it moving? - var/area/shuttle/location //The current location of the actual shuttle - -datum/shuttle_manager/New(var/area, var/delay) //Create a new shuttle manager for the shuttle starting area, "area" and with a movement delay of tickstomove - location = area - tickstomove = delay - var/area/A = locate(location) - A.has_gravity = 1 - - -datum/shuttle_manager/proc/move_shuttle(var/override_delay) - if(moving) return 0 - moving = 1 - spawn(override_delay == null ? tickstomove*10 : override_delay) - var/area/shuttle/fromArea - var/area/shuttle/toArea - fromArea = locate(location) //the location of the shuttle - toArea = locate(fromArea.destination) - - var/list/dstturfs = list() - var/throwy = world.maxy - - for(var/turf/T in toArea) - dstturfs += T - if(T.y < throwy) - throwy = T.y - - // hey you, get out of the way! - for(var/turf/T in dstturfs) - // find the turf to move things to - var/turf/D = locate(T.x, throwy - 1, 1) - //var/turf/E = get_step(D, SOUTH) - for(var/atom/movable/AM as mob|obj in T) - AM.Move(D) - // NOTE: Commenting this out to avoid recreating mass driver glitch - /* - spawn(0) - AM.throw_at(E, 1, 1) - return - */ - - if(istype(T, /turf/simulated)) - del(T) - - for(var/mob/living/carbon/bug in toArea) // If someone somehow is still in the shuttle's docking area... - bug.gib() - - fromArea.move_contents_to(toArea) - location = toArea.type - - fromArea.has_gravity = 0 - toArea.has_gravity = 1 - - for(var/obj/machinery/door/D in toArea) //Close any doors on the shuttle - spawn(0) - D.close() - - for(var/mob/M in toArea) - if(M.client) - spawn(0) - if(M.buckled) - shake_camera(M, 2, 1) // turn it down a bit come on - else - shake_camera(M, 7, 1) - if(istype(M, /mob/living/carbon)) - if(!M.buckled) - M.Weaken(3) - - moving = 0 - return 1 - - - - -/obj/machinery/computer/shuttle - name = "Shuttle Console" - icon = 'icons/obj/computer.dmi' - icon_state = "shuttle" - req_access = list( ) - circuit = /obj/item/weapon/circuitboard/shuttle - var/id - -/obj/machinery/computer/shuttle/attack_hand(user as mob) - if(..(user)) - return - src.add_fingerprint(usr) - var/dat - dat = text("
    Send Shuttle
    ") - //user << browse("[dat]", "window=miningshuttle;size=200x100") - var/datum/browser/popup = new(user, "miningshuttle", name, 200, 140) - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - -/obj/machinery/computer/shuttle/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(!allowed(usr)) - usr << "\red Access denied." - return - if(href_list["move"]) - if(id in shuttles) - var/datum/shuttle_manager/s = shuttles[id] - if (s.move_shuttle()) - usr << "\blue Shuttle recieved message and will be sent shortly." - else - usr << "\blue Shuttle is already moving." - else - usr << "\red Invalid shuttle requested." - - -/obj/machinery/computer/shuttle/attackby(I as obj, user as mob) - - if (istype(I, /obj/item/weapon/card/emag)) - src.req_access = list() - emagged = 1 - usr << "You fried the consoles ID checking system. It's now available to everyone!" - else - ..() +var/obj/list/shuttles = list(("escape" = new /datum/shuttle_manager(/area/shuttle/escape/centcom, 0)), ("pod1" = new /datum/shuttle_manager(/area/shuttle/escape_pod1/station, 0)), ("pod2" = new /datum/shuttle_manager(/area/shuttle/escape_pod2/station, 0)), ("pod3" = new /datum/shuttle_manager(/area/shuttle/escape_pod3/station, 0)), ("pod4" = new /datum/shuttle_manager(/area/shuttle/escape_pod4/station, 0)), ("mining" = new /datum/shuttle_manager(/area/shuttle/mining/station, 10)), ("laborcamp" = new /datum/shuttle_manager(/area/shuttle/laborcamp/station, 10)), ("ferry" = new /datum/shuttle_manager(/area/shuttle/transport1/centcom, 0))) + //Pre-made shuttles should have non-number keys, so that buildable shuttles can use numbered keys without allowing 'I build a shuttle console with the escape number as its ID.' +datum/shuttle_manager + var/tickstomove = 10 //How long does it take to move the shuttle? + var/moving = 0 //Is it moving? + var/area/shuttle/location //The current location of the actual shuttle + +datum/shuttle_manager/New(var/area, var/delay) //Create a new shuttle manager for the shuttle starting area, "area" and with a movement delay of tickstomove + location = area + tickstomove = delay + var/area/A = locate(location) + A.has_gravity = 1 + + +datum/shuttle_manager/proc/move_shuttle(var/override_delay) + if(moving) return 0 + moving = 1 + spawn(override_delay == null ? tickstomove*10 : override_delay) + var/area/shuttle/fromArea + var/area/shuttle/toArea + fromArea = locate(location) //the location of the shuttle + toArea = locate(fromArea.destination) + + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in toArea) + dstturfs += T + if(T.y < throwy) + throwy = T.y + + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, 1) + //var/turf/E = get_step(D, SOUTH) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + // NOTE: Commenting this out to avoid recreating mass driver glitch + /* + spawn(0) + AM.throw_at(E, 1, 1) + return + */ + + if(istype(T, /turf/simulated)) + del(T) + + for(var/mob/living/carbon/bug in toArea) // If someone somehow is still in the shuttle's docking area... + bug.gib() + + fromArea.move_contents_to(toArea) + location = toArea.type + + fromArea.has_gravity = 0 + toArea.has_gravity = 1 + + for(var/obj/machinery/door/D in toArea) //Close any doors on the shuttle + spawn(0) + D.close() + + for(var/mob/M in toArea) + if(M.client) + spawn(0) + if(M.buckled) + shake_camera(M, 2, 1) // turn it down a bit come on + else + shake_camera(M, 7, 1) + if(istype(M, /mob/living/carbon)) + if(!M.buckled) + M.Weaken(3) + + moving = 0 + return 1 + + + + +/obj/machinery/computer/shuttle + name = "Shuttle Console" + icon = 'icons/obj/computer.dmi' + icon_state = "shuttle" + req_access = list( ) + circuit = /obj/item/weapon/circuitboard/shuttle + var/id + +/obj/machinery/computer/shuttle/attack_hand(user as mob) + if(..(user)) + return + src.add_fingerprint(usr) + var/dat + dat = text("
    Send Shuttle
    ") + //user << browse("[dat]", "window=miningshuttle;size=200x100") + var/datum/browser/popup = new(user, "miningshuttle", name, 200, 140) + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + +/obj/machinery/computer/shuttle/Topic(href, href_list) + if(..()) + return + usr.set_machine(src) + src.add_fingerprint(usr) + if(!allowed(usr)) + usr << "\red Access denied." + return + if(href_list["move"]) + if(id in shuttles) + var/datum/shuttle_manager/s = shuttles[id] + if (s.move_shuttle()) + usr << "\blue Shuttle recieved message and will be sent shortly." + else + usr << "\blue Shuttle is already moving." + else + usr << "\red Invalid shuttle requested." + + +/obj/machinery/computer/shuttle/attackby(I as obj, user as mob) + + if (istype(I, /obj/item/weapon/card/emag)) + src.req_access = list() + emagged = 1 + usr << "You fried the consoles ID checking system. It's now available to everyone!" + else + ..() return \ No newline at end of file diff --git a/code/modules/surgery/generic_steps.dm b/code/modules/surgery/generic_steps.dm index ea066277ed3..700d2b87e59 100644 --- a/code/modules/surgery/generic_steps.dm +++ b/code/modules/surgery/generic_steps.dm @@ -1,68 +1,68 @@ - -//make incision -/datum/surgery_step/incise - implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45) - time = 24 - -/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to make an incision in [target]'s [parse_zone(target_zone)].") - - - -//clamp bleeders -/datum/surgery_step/clamp_bleeders - implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/wirecutters = 60, /obj/item/stack/cable_coil = 15) - time = 48 - -/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].") - - -//retract skin -/datum/surgery_step/retract_skin - implements = list(/obj/item/weapon/retractor = 100, /obj/item/weapon/screwdriver = 45, /obj/item/weapon/wirecutters = 35) - time = 32 - -/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].") - - - -//close incision -/datum/surgery_step/close - implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20) - time = 32 - -/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].") - - -/datum/surgery_step/close/tool_check(mob/user, obj/item/tool) - if(istype(tool, /obj/item/weapon/cautery)) - return 1 - - if(istype(tool, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = tool - if(WT.isOn()) return 1 - - else if(istype(tool, /obj/item/weapon/lighter)) - var/obj/item/weapon/lighter/L = tool - if(L.lit) return 1 - - else if(istype(tool, /obj/item/weapon/match)) - var/obj/item/weapon/match/M = tool - if(M.lit) return 1 - - return 0 - - -//saw bone -/datum/surgery_step/saw - implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/hatchet = 35, /obj/item/weapon/butch = 25) - time = 64 - -/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].") - - - + +//make incision +/datum/surgery_step/incise + implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45) + time = 24 + +/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to make an incision in [target]'s [parse_zone(target_zone)].") + + + +//clamp bleeders +/datum/surgery_step/clamp_bleeders + implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/wirecutters = 60, /obj/item/stack/cable_coil = 15) + time = 48 + +/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].") + + +//retract skin +/datum/surgery_step/retract_skin + implements = list(/obj/item/weapon/retractor = 100, /obj/item/weapon/screwdriver = 45, /obj/item/weapon/wirecutters = 35) + time = 32 + +/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].") + + + +//close incision +/datum/surgery_step/close + implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20) + time = 32 + +/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].") + + +/datum/surgery_step/close/tool_check(mob/user, obj/item/tool) + if(istype(tool, /obj/item/weapon/cautery)) + return 1 + + if(istype(tool, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = tool + if(WT.isOn()) return 1 + + else if(istype(tool, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = tool + if(L.lit) return 1 + + else if(istype(tool, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = tool + if(M.lit) return 1 + + return 0 + + +//saw bone +/datum/surgery_step/saw + implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/hatchet = 35, /obj/item/weapon/butch = 25) + time = 64 + +/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].") + + + diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index ae2cd5caebd..2fc12830566 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -1,76 +1,76 @@ - -/////AUGMENTATION SURGERIES////// - - -//SURGERY STEPS - -/datum/surgery_step/replace - implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55) - time = 32 - - -/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - user.visible_message("[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!") - - -/datum/surgery_step/add_limb - implements = list(/obj/item/robot_parts = 100) - time = 32 - var/obj/item/organ/limb/L = null // L because "limb" - allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head") - - - -/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - L = new_organ - if(L) - user.visible_message("[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].") - else - user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].") - - - -//ACTUAL SURGERIES - -/datum/surgery/augmentation - name = "augmentation" - steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb) - species = list(/mob/living/carbon/human) - location = "anywhere" //Check attempt_initate_surgery() (in code/modules/surgery/helpers) to see what this does if you can't tell - has_multi_loc = 1 //Multi location stuff, See multiple_location_example.dm - - -//SURGERY STEP SUCCESSES - -/datum/surgery_step/add_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(L) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - user.visible_message("[user] successfully augments [target]'s [parse_zone(user.zone_sel.selecting)]!") - L.loc = get_turf(target) - H.organs -= L - switch(user.zone_sel.selecting) //for the surgery to progress this MUST still be the original "location" so it's safe to do this. - if("r_leg") - H.organs += new /obj/item/organ/limb/robot/r_leg(src) - if("l_leg") - H.organs += new /obj/item/organ/limb/robot/l_leg(src) - if("r_arm") - H.organs += new /obj/item/organ/limb/robot/r_arm(src) - if("l_arm") - H.organs += new /obj/item/organ/limb/robot/l_arm(src) - if("head") - H.organs += new /obj/item/organ/limb/robot/head(src) - if("chest") - var/datum/surgery_step/xenomorph_removal/xeno_removal = new - xeno_removal.remove_xeno(user, target) // remove an alien if there is one - H.organs += new /obj/item/organ/limb/robot/chest(src) - for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it - A.cure(1) - user.drop_item() - qdel(tool) - H.update_damage_overlays(0) - H.update_augments() //Gives them the Cyber limb overlay - add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]") - else - user.visible_message("[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!") - return 1 + +/////AUGMENTATION SURGERIES////// + + +//SURGERY STEPS + +/datum/surgery_step/replace + implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55) + time = 32 + + +/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!") + + +/datum/surgery_step/add_limb + implements = list(/obj/item/robot_parts = 100) + time = 32 + var/obj/item/organ/limb/L = null // L because "limb" + allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head") + + + +/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = new_organ + if(L) + user.visible_message("[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].") + else + user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].") + + + +//ACTUAL SURGERIES + +/datum/surgery/augmentation + name = "augmentation" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb) + species = list(/mob/living/carbon/human) + location = "anywhere" //Check attempt_initate_surgery() (in code/modules/surgery/helpers) to see what this does if you can't tell + has_multi_loc = 1 //Multi location stuff, See multiple_location_example.dm + + +//SURGERY STEP SUCCESSES + +/datum/surgery_step/add_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(L) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + user.visible_message("[user] successfully augments [target]'s [parse_zone(user.zone_sel.selecting)]!") + L.loc = get_turf(target) + H.organs -= L + switch(user.zone_sel.selecting) //for the surgery to progress this MUST still be the original "location" so it's safe to do this. + if("r_leg") + H.organs += new /obj/item/organ/limb/robot/r_leg(src) + if("l_leg") + H.organs += new /obj/item/organ/limb/robot/l_leg(src) + if("r_arm") + H.organs += new /obj/item/organ/limb/robot/r_arm(src) + if("l_arm") + H.organs += new /obj/item/organ/limb/robot/l_arm(src) + if("head") + H.organs += new /obj/item/organ/limb/robot/head(src) + if("chest") + var/datum/surgery_step/xenomorph_removal/xeno_removal = new + xeno_removal.remove_xeno(user, target) // remove an alien if there is one + H.organs += new /obj/item/organ/limb/robot/chest(src) + for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it + A.cure(1) + user.drop_item() + qdel(tool) + H.update_damage_overlays(0) + H.update_augments() //Gives them the Cyber limb overlay + add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]") + else + user.visible_message("[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!") + return 1 diff --git a/code/modules/surgery/multiple_location_example.dm b/code/modules/surgery/multiple_location_example.dm index 7a7dba5eaee..e5e331843e5 100644 --- a/code/modules/surgery/multiple_location_example.dm +++ b/code/modules/surgery/multiple_location_example.dm @@ -1,54 +1,54 @@ -/* -//CONTENTS// -Multiple location example surgery - - - -//THE SURGERY// -it is very similar to a normal surgery. -Location = "anywhere" is the unique difference. - -/datum/surgery/multiLocExample - name = "Multiple Location Surgery Example" - steps = list(/datum/surgery_step/multiLocExampleStep) - species = list(/mob/living/carbon) - location = "anywhere" //A Location "Anywhere" is handled in /code/modules/surgery/helpers attempt_initiate_surgery(), it is converted into a User.zone_sel.selecting. - has_multi_loc = 1 //Needed to handle Multilocation - -//THE STEPS// -The block of "If's" is necessary, add or remove so you have just the areas you want, and set them to convert L(or your subsitute) to what you want it to be -EG: a zone on a mob (where user is targetting) to the limb thats actually there. - - -/datum/surgery_step/multiLocExampleStep - implements = list() - time = 9001 - allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head", "etc") - // allowed_organs is a list of organs this operation works with, it is defined in the earliest instance of the surgery_step (Eg, datum/surgery_step/multiLocExampleStep) - // allowed_organs is handled in Handle_Multi_Loc() in surgery_step.dm - - -/datum/surgery_step/multiLocExampleStep/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - L = new_organ //new_organ is a variable in /datum/surgery_step, it is null by default, and is given a value in Handle_Multi_Loc() - //Although Handle_Multi_Loc() is /datum/surgery_step/SURGERYNAME/Handle_Multi_Loc() you do not need to rewrite it in the surgery - if(L) - user.visible_message("Generic Statement.") - else - user.visible_message("Generic Statement 2.") - - -/datum/surgery_step/multiLocExampleStep/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) -You can use whatever you substituted "L" for here for useful things, swapping limbs for other limbs, etc. -if the surgery is intended to be MultiLoc but should only be performable once per limb, add this -"surgery.invalid_locations += user.zone_sel.selecting" -Just after you have swapped limbs around, see limb augmentation for an example of this - -*/ - -//This file is commented out as to avoid: -// a snowflakey removal of it 100% of the time -// it's an example, it doesn't work perfectly due to just being the multiple locations section. -// It is also not set to compile, due to being Empty (according to the compiler) - -//Enjoy making Multi-location operations! (if you understood my Rambling) +/* +//CONTENTS// +Multiple location example surgery + + + +//THE SURGERY// +it is very similar to a normal surgery. +Location = "anywhere" is the unique difference. + +/datum/surgery/multiLocExample + name = "Multiple Location Surgery Example" + steps = list(/datum/surgery_step/multiLocExampleStep) + species = list(/mob/living/carbon) + location = "anywhere" //A Location "Anywhere" is handled in /code/modules/surgery/helpers attempt_initiate_surgery(), it is converted into a User.zone_sel.selecting. + has_multi_loc = 1 //Needed to handle Multilocation + +//THE STEPS// +The block of "If's" is necessary, add or remove so you have just the areas you want, and set them to convert L(or your subsitute) to what you want it to be +EG: a zone on a mob (where user is targetting) to the limb thats actually there. + + +/datum/surgery_step/multiLocExampleStep + implements = list() + time = 9001 + allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head", "etc") + // allowed_organs is a list of organs this operation works with, it is defined in the earliest instance of the surgery_step (Eg, datum/surgery_step/multiLocExampleStep) + // allowed_organs is handled in Handle_Multi_Loc() in surgery_step.dm + + +/datum/surgery_step/multiLocExampleStep/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + L = new_organ //new_organ is a variable in /datum/surgery_step, it is null by default, and is given a value in Handle_Multi_Loc() + //Although Handle_Multi_Loc() is /datum/surgery_step/SURGERYNAME/Handle_Multi_Loc() you do not need to rewrite it in the surgery + if(L) + user.visible_message("Generic Statement.") + else + user.visible_message("Generic Statement 2.") + + +/datum/surgery_step/multiLocExampleStep/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) +You can use whatever you substituted "L" for here for useful things, swapping limbs for other limbs, etc. +if the surgery is intended to be MultiLoc but should only be performable once per limb, add this +"surgery.invalid_locations += user.zone_sel.selecting" +Just after you have swapped limbs around, see limb augmentation for an example of this + +*/ + +//This file is commented out as to avoid: +// a snowflakey removal of it 100% of the time +// it's an example, it doesn't work perfectly due to just being the multiple locations section. +// It is also not set to compile, due to being Empty (according to the compiler) + +//Enjoy making Multi-location operations! (if you understood my Rambling) //If you didn't understand this, Ask for RobRichards in Coderbus \ No newline at end of file diff --git a/code/modules/surgery/organs/augments.dm b/code/modules/surgery/organs/augments.dm index d3acb5135d9..263315aba1b 100644 --- a/code/modules/surgery/organs/augments.dm +++ b/code/modules/surgery/organs/augments.dm @@ -1,51 +1,51 @@ -/////AUGMENTATION\\\\\ -//See code/modules/surgery/organs/organ.dm for the parent "limb" - - -/obj/item/organ/limb/robot - name = "cyberlimb" - desc = "You should never be seeing this!" - status = ORGAN_ROBOTIC - -/obj/item/organ/limb/robot/chest - name = "chest" - desc = "A Robotic chest" - icon_state = "chest" - max_damage = 200 - body_part = CHEST - -/obj/item/organ/limb/robot/head - name = "head" - desc = "A Robotic head" - icon_state = "head" - max_damage = 200 - body_part = HEAD - -/obj/item/organ/limb/robot/l_arm - name = "l_arm" - desc = "A Robotic arm" - icon_state = "l_arm" - max_damage = 75 - body_part = ARM_LEFT - -/obj/item/organ/limb/robot/l_leg - name = "l_leg" - desc = "A Robotic leg" - icon_state = "l_leg" - max_damage = 75 - body_part = LEG_LEFT - -/obj/item/organ/limb/robot/r_arm - name = "r_arm" - desc = "A Robotic arm" - icon_state = "r_arm" - max_damage = 75 - body_part = ARM_RIGHT - -/obj/item/organ/limb/robot/r_leg - name = "r_leg" - desc = "A Robotic leg" - icon_state = "r_leg" - max_damage = 75 - body_part = LEG_RIGHT - +/////AUGMENTATION\\\\\ +//See code/modules/surgery/organs/organ.dm for the parent "limb" + + +/obj/item/organ/limb/robot + name = "cyberlimb" + desc = "You should never be seeing this!" + status = ORGAN_ROBOTIC + +/obj/item/organ/limb/robot/chest + name = "chest" + desc = "A Robotic chest" + icon_state = "chest" + max_damage = 200 + body_part = CHEST + +/obj/item/organ/limb/robot/head + name = "head" + desc = "A Robotic head" + icon_state = "head" + max_damage = 200 + body_part = HEAD + +/obj/item/organ/limb/robot/l_arm + name = "l_arm" + desc = "A Robotic arm" + icon_state = "l_arm" + max_damage = 75 + body_part = ARM_LEFT + +/obj/item/organ/limb/robot/l_leg + name = "l_leg" + desc = "A Robotic leg" + icon_state = "l_leg" + max_damage = 75 + body_part = LEG_LEFT + +/obj/item/organ/limb/robot/r_arm + name = "r_arm" + desc = "A Robotic arm" + icon_state = "r_arm" + max_damage = 75 + body_part = ARM_RIGHT + +/obj/item/organ/limb/robot/r_leg + name = "r_leg" + desc = "A Robotic leg" + icon_state = "r_leg" + max_damage = 75 + body_part = LEG_RIGHT + diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index ac7e565a099..4cbb4573dc5 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -1,38 +1,38 @@ -// Bluespace crystals, used in telescience and when crushed it will blink you to a random turf. - -/obj/item/bluespace_crystal - name = "bluespace crystal" - desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate." - icon = 'icons/obj/telescience.dmi' - icon_state = "bluespace_crystal" - w_class = 1 - origin_tech = "bluespace=4;materials=3" - var/blink_range = 8 // The teleport range when crushed/thrown at someone. - -/obj/item/bluespace_crystal/New() - ..() - pixel_x = rand(-5, 5) - pixel_y = rand(-5, 5) - -/obj/item/bluespace_crystal/attack_self(var/mob/user) - blink_mob(user) - user.drop_item() - user.visible_message("[user] crushes the [src]!") - qdel(src) - -/obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L) - do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') - -/obj/item/bluespace_crystal/throw_impact(atom/hit_atom) - ..() - if(isliving(hit_atom)) - blink_mob(hit_atom) - qdel(src) - -// Artifical bluespace crystal, doesn't give you much research. - -/obj/item/bluespace_crystal/artificial - name = "artificial bluespace crystal" - desc = "An artificially made bluespace crystal, it looks delicate." - origin_tech = "bluespace=2" +// Bluespace crystals, used in telescience and when crushed it will blink you to a random turf. + +/obj/item/bluespace_crystal + name = "bluespace crystal" + desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate." + icon = 'icons/obj/telescience.dmi' + icon_state = "bluespace_crystal" + w_class = 1 + origin_tech = "bluespace=4;materials=3" + var/blink_range = 8 // The teleport range when crushed/thrown at someone. + +/obj/item/bluespace_crystal/New() + ..() + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) + +/obj/item/bluespace_crystal/attack_self(var/mob/user) + blink_mob(user) + user.drop_item() + user.visible_message("[user] crushes the [src]!") + qdel(src) + +/obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L) + do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') + +/obj/item/bluespace_crystal/throw_impact(atom/hit_atom) + ..() + if(isliving(hit_atom)) + blink_mob(hit_atom) + qdel(src) + +// Artifical bluespace crystal, doesn't give you much research. + +/obj/item/bluespace_crystal/artificial + name = "artificial bluespace crystal" + desc = "An artificially made bluespace crystal, it looks delicate." + origin_tech = "bluespace=2" blink_range = 4 // Not as good as the organic stuff! \ No newline at end of file diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 25c5bb154e6..883a6fc01cd 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -1,81 +1,81 @@ -var/list/GPS_list = list() -/obj/item/device/gps - name = "global positioning system" - desc = "Helping lost spacemen find their way through the planets since 2016." - icon = 'icons/obj/telescience.dmi' - icon_state = "gps-c" - w_class = 2.0 - slot_flags = SLOT_BELT - origin_tech = "programming=2;engineering=2" - var/gpstag = "COM0" - var/emped = 0 - var/turf/locked_location - -/obj/item/device/gps/New() - ..() - GPS_list.Add(src) - name = "global positioning system ([gpstag])" - overlays += "working" - -/obj/item/device/gps/Destroy() - GPS_list.Remove(src) - ..() - -/obj/item/device/gps/emp_act(severity) - emped = 1 - overlays -= "working" - overlays += "emp" - spawn(300) - emped = 0 - overlays -= "emp" - overlays += "working" - -/obj/item/device/gps/attack_self(mob/user as mob) - - var/obj/item/device/gps/t = "" - var/gps_window_height = 110 + GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show - if(emped) - t += "ERROR" - else - t += "
    Set Tag " - t += "
    Tag: [gpstag]" - if(locked_location && locked_location.loc) - t += "
    Bluespace coordinates saved: [locked_location.loc]" - gps_window_height += 20 - - for(var/obj/item/device/gps/G in GPS_list) - var/turf/pos = get_turf(G) - var/area/gps_area = get_area(G) - var/tracked_gpstag = G.gpstag - if(G.emped == 1) - t += "
    [tracked_gpstag]: ERROR" - else - t += "
    [tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])" - - var/datum/browser/popup = new(user, "GPS", name, 360, min(gps_window_height, 800)) - popup.set_content(t) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - -/obj/item/device/gps/Topic(href, href_list) - ..() - if(href_list["tag"] ) - var/a = input("Please enter desired tag.", name, gpstag) as text - a = uppertext(copytext(sanitize(a), 1, 5)) - if(src.loc == usr) - gpstag = a - name = "global positioning system ([gpstag])" - attack_self(usr) - -/obj/item/device/gps/science - icon_state = "gps-s" - gpstag = "SCI0" - -/obj/item/device/gps/engineering - icon_state = "gps-e" - gpstag = "ENG0" - -/obj/item/device/gps/mining - icon_state = "gps-m" - gpstag = "MINE0" - desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." +var/list/GPS_list = list() +/obj/item/device/gps + name = "global positioning system" + desc = "Helping lost spacemen find their way through the planets since 2016." + icon = 'icons/obj/telescience.dmi' + icon_state = "gps-c" + w_class = 2.0 + slot_flags = SLOT_BELT + origin_tech = "programming=2;engineering=2" + var/gpstag = "COM0" + var/emped = 0 + var/turf/locked_location + +/obj/item/device/gps/New() + ..() + GPS_list.Add(src) + name = "global positioning system ([gpstag])" + overlays += "working" + +/obj/item/device/gps/Destroy() + GPS_list.Remove(src) + ..() + +/obj/item/device/gps/emp_act(severity) + emped = 1 + overlays -= "working" + overlays += "emp" + spawn(300) + emped = 0 + overlays -= "emp" + overlays += "working" + +/obj/item/device/gps/attack_self(mob/user as mob) + + var/obj/item/device/gps/t = "" + var/gps_window_height = 110 + GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show + if(emped) + t += "ERROR" + else + t += "
    Set Tag " + t += "
    Tag: [gpstag]" + if(locked_location && locked_location.loc) + t += "
    Bluespace coordinates saved: [locked_location.loc]" + gps_window_height += 20 + + for(var/obj/item/device/gps/G in GPS_list) + var/turf/pos = get_turf(G) + var/area/gps_area = get_area(G) + var/tracked_gpstag = G.gpstag + if(G.emped == 1) + t += "
    [tracked_gpstag]: ERROR" + else + t += "
    [tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])" + + var/datum/browser/popup = new(user, "GPS", name, 360, min(gps_window_height, 800)) + popup.set_content(t) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + +/obj/item/device/gps/Topic(href, href_list) + ..() + if(href_list["tag"] ) + var/a = input("Please enter desired tag.", name, gpstag) as text + a = uppertext(copytext(sanitize(a), 1, 5)) + if(src.loc == usr) + gpstag = a + name = "global positioning system ([gpstag])" + attack_self(usr) + +/obj/item/device/gps/science + icon_state = "gps-s" + gpstag = "SCI0" + +/obj/item/device/gps/engineering + icon_state = "gps-e" + gpstag = "ENG0" + +/obj/item/device/gps/mining + icon_state = "gps-m" + gpstag = "MINE0" + desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index b491373968c..e9873c7c732 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -1,157 +1,157 @@ -///SCI TELEPAD/// -/obj/machinery/telepad - name = "telepad" - desc = "A bluespace telepad used for teleporting objects to and from a location." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 200 - active_power_usage = 5000 - var/efficiency - -/obj/machinery/telepad/New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/bluespace_crystal/artificial(null) - component_parts += new /obj/item/weapon/stock_parts/capacitor(null) - component_parts += new /obj/item/weapon/stock_parts/console_screen(null) - component_parts += new /obj/item/stack/cable_coil(null, 1) - RefreshParts() - -/obj/machinery/telepad/RefreshParts() - var/E - for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) - E += C.rating - efficiency = E - -/obj/machinery/telepad/attackby(obj/item/I, mob/user) - if(default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I)) - return - - if(panel_open) - if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I - M.buffer = src - user << "You save the data in the [I.name]'s buffer." - - if(exchange_parts(user, I)) - return - - default_deconstruction_crowbar(I) - - -//CARGO TELEPAD// -/obj/machinery/telepad_cargo - name = "cargo telepad" - desc = "A telepad used by the Rapid Crate Sender." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 20 - active_power_usage = 500 - var/stage = 0 -/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench)) - anchored = 0 - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - user << " The [src] can now be moved." - else if(!anchored) - anchored = 1 - user << " The [src] is now secured." - if(istype(W, /obj/item/weapon/screwdriver)) - if(stage == 0) - playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) - user << " You unscrew the telepad's tracking beacon." - stage = 1 - else if(stage == 1) - playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) - user << " You screw in the telepad's tracking beacon." - stage = 0 - if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) - playsound(src, 'sound/items/Welder.ogg', 50, 1) - user << " You disassemble the telepad." - new /obj/item/stack/sheet/metal(get_turf(src)) - new /obj/item/stack/sheet/glass(get_turf(src)) - qdel(src) - -///TELEPAD CALLER/// -/obj/item/device/telepad_beacon - name = "telepad beacon" - desc = "Use to warp in a cargo telepad." - icon = 'icons/obj/radio.dmi' - icon_state = "beacon" - item_state = "signaler" - origin_tech = "bluespace=3" - -/obj/item/device/telepad_beacon/attack_self(mob/user as mob) - if(user) - user << " Locked In" - new /obj/machinery/telepad_cargo(user.loc) - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - qdel(src) - return - -///HANDHELD TELEPAD USER/// -/obj/item/weapon/rcs - name = "rapid-crate-sender (RCS)" - desc = "Use this to send crates and closets to cargo telepads." - icon = 'icons/obj/telescience.dmi' - icon_state = "rcs" - flags = CONDUCT - force = 10.0 - throwforce = 10.0 - throw_speed = 2 - throw_range = 5 - var/rcharges = 10 - var/obj/machinery/pad = null - var/last_charge = 30 - var/mode = 0 - var/rand_x = 0 - var/rand_y = 0 - var/emagged = 0 - var/teleporting = 0 - -/obj/item/weapon/rcs/New() - ..() - processing_objects.Add(src) -/obj/item/weapon/rcs/examine() - desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left." - ..() - -/obj/item/weapon/rcs/Destroy() - processing_objects.Remove(src) - ..() -/obj/item/weapon/rcs/process() - if(rcharges > 10) - rcharges = 10 - if(last_charge == 0) - rcharges++ - last_charge = 30 - else - last_charge-- - -/obj/item/weapon/rcs/attack_self(mob/user) - if(emagged) - if(mode == 0) - mode = 1 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - user << " The telepad locator has become uncalibrated." - else - mode = 0 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - user << " You calibrate the telepad locator." - -/obj/item/weapon/rcs/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/card/emag) && emagged == 0) - emagged = 1 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - user << " You emag the RCS. Click on it to toggle between modes." +///SCI TELEPAD/// +/obj/machinery/telepad + name = "telepad" + desc = "A bluespace telepad used for teleporting objects to and from a location." + icon = 'icons/obj/telescience.dmi' + icon_state = "pad-idle" + anchored = 1 + use_power = 1 + idle_power_usage = 200 + active_power_usage = 5000 + var/efficiency + +/obj/machinery/telepad/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null) + component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/stack/cable_coil(null, 1) + RefreshParts() + +/obj/machinery/telepad/RefreshParts() + var/E + for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) + E += C.rating + efficiency = E + +/obj/machinery/telepad/attackby(obj/item/I, mob/user) + if(default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I)) + return + + if(panel_open) + if(istype(I, /obj/item/device/multitool)) + var/obj/item/device/multitool/M = I + M.buffer = src + user << "You save the data in the [I.name]'s buffer." + + if(exchange_parts(user, I)) + return + + default_deconstruction_crowbar(I) + + +//CARGO TELEPAD// +/obj/machinery/telepad_cargo + name = "cargo telepad" + desc = "A telepad used by the Rapid Crate Sender." + icon = 'icons/obj/telescience.dmi' + icon_state = "pad-idle" + anchored = 1 + use_power = 1 + idle_power_usage = 20 + active_power_usage = 500 + var/stage = 0 +/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + anchored = 0 + playsound(src, 'sound/items/Ratchet.ogg', 50, 1) + if(anchored) + anchored = 0 + user << " The [src] can now be moved." + else if(!anchored) + anchored = 1 + user << " The [src] is now secured." + if(istype(W, /obj/item/weapon/screwdriver)) + if(stage == 0) + playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) + user << " You unscrew the telepad's tracking beacon." + stage = 1 + else if(stage == 1) + playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) + user << " You screw in the telepad's tracking beacon." + stage = 0 + if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) + playsound(src, 'sound/items/Welder.ogg', 50, 1) + user << " You disassemble the telepad." + new /obj/item/stack/sheet/metal(get_turf(src)) + new /obj/item/stack/sheet/glass(get_turf(src)) + qdel(src) + +///TELEPAD CALLER/// +/obj/item/device/telepad_beacon + name = "telepad beacon" + desc = "Use to warp in a cargo telepad." + icon = 'icons/obj/radio.dmi' + icon_state = "beacon" + item_state = "signaler" + origin_tech = "bluespace=3" + +/obj/item/device/telepad_beacon/attack_self(mob/user as mob) + if(user) + user << " Locked In" + new /obj/machinery/telepad_cargo(user.loc) + playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) + qdel(src) + return + +///HANDHELD TELEPAD USER/// +/obj/item/weapon/rcs + name = "rapid-crate-sender (RCS)" + desc = "Use this to send crates and closets to cargo telepads." + icon = 'icons/obj/telescience.dmi' + icon_state = "rcs" + flags = CONDUCT + force = 10.0 + throwforce = 10.0 + throw_speed = 2 + throw_range = 5 + var/rcharges = 10 + var/obj/machinery/pad = null + var/last_charge = 30 + var/mode = 0 + var/rand_x = 0 + var/rand_y = 0 + var/emagged = 0 + var/teleporting = 0 + +/obj/item/weapon/rcs/New() + ..() + processing_objects.Add(src) +/obj/item/weapon/rcs/examine() + desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left." + ..() + +/obj/item/weapon/rcs/Destroy() + processing_objects.Remove(src) + ..() +/obj/item/weapon/rcs/process() + if(rcharges > 10) + rcharges = 10 + if(last_charge == 0) + rcharges++ + last_charge = 30 + else + last_charge-- + +/obj/item/weapon/rcs/attack_self(mob/user) + if(emagged) + if(mode == 0) + mode = 1 + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + user << " The telepad locator has become uncalibrated." + else + mode = 0 + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + user << " You calibrate the telepad locator." + +/obj/item/weapon/rcs/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/card/emag) && emagged == 0) + emagged = 1 + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + user << " You emag the RCS. Click on it to toggle between modes." return \ No newline at end of file diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index bc216500556..edb9916eb06 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -1,381 +1,381 @@ -/obj/machinery/computer/telescience - name = "\improper Telepad Control Console" - desc = "Used to teleport objects to and from the telescience telepad." - icon_state = "teleport" - circuit = /obj/item/weapon/circuitboard/telesci_console - var/sending = 1 - var/obj/machinery/telepad/telepad = null - var/temp_msg = "Telescience control console initialized.
    Welcome." - - // VARIABLES // - var/teles_left // How many teleports left until it becomes uncalibrated - var/datum/projectile_data/last_tele_data = null - var/z_co = 1 - var/power_off - var/rotation_off - //var/angle_off - var/last_target - - var/rotation = 0 - var/angle = 45 - var/power = 5 - - // Based on the power used - var/teleport_cooldown = 0 // every index requires a bluespace crystal - var/list/power_options = list(5, 10, 20, 25, 30, 40, 50, 80, 100) - var/teleporting = 0 - var/starting_crystals = 3 - var/max_crystals = 4 - var/list/crystals = list() - var/obj/item/device/gps/inserted_gps - -/obj/machinery/computer/telescience/New() - ..() - recalibrate() - -/obj/machinery/computer/telescience/Destroy() - eject() - if(inserted_gps) - inserted_gps.loc = loc - inserted_gps = null - ..() - -/obj/machinery/computer/telescience/examine() - ..() - usr << "There are [crystals.len ? crystals.len : "no"] bluespace crystals in the crystal slots." - -/obj/machinery/computer/telescience/initialize() - ..() - for(var/i = 1; i <= starting_crystals; i++) - crystals += new /obj/item/bluespace_crystal/artificial(null) // starting crystals - -/obj/machinery/computer/telescience/update_icon() - if(stat & BROKEN) - icon_state = "telescib" - else - if(stat & NOPOWER) - src.icon_state = "teleport0" - stat |= NOPOWER - else - icon_state = initial(icon_state) - stat &= ~NOPOWER - -/obj/machinery/computer/telescience/attack_paw(mob/user) - user << "You are too primitive to use this computer." - return - -/obj/machinery/computer/telescience/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/bluespace_crystal)) - if(crystals.len >= max_crystals) - user << "There are not enough crystal slots." - return - user.drop_item() - crystals += W - W.loc = null - user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.") - updateDialog() - else if(istype(W, /obj/item/device/gps)) - if(!inserted_gps) - inserted_gps = W - user.unEquip(W) - W.loc = src - user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.") - else if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = W - if(M.buffer && istype(M.buffer, /obj/machinery/telepad)) - telepad = M.buffer - M.buffer = null - user << "You upload the data from the [W.name]'s buffer." - else - ..() - -/obj/machinery/computer/telescience/attack_ai(mob/user) - src.attack_hand(user) - -/obj/machinery/computer/telescience/attack_hand(mob/user) - if(..()) - return - interact(user) - -/obj/machinery/computer/telescience/interact(mob/user) - var/t - if(!telepad) - in_use = 0 //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console - t += "
    No telepad located.
    Please add telepad data.

    " - else - if(inserted_gps) - t += "Eject GPS" - t += "Set GPS memory" - else - t += "Eject GPS" - t += "Set GPS memory" - t += "
    [temp_msg]

    " - t += "Set Bearing" - t += "
    [rotation]°
    " - t += "Set Elevation" - t += "
    [angle]°
    " - t += "Set Power" - t += "
    " - - for(var/i = 1; i <= power_options.len; i++) - if(crystals.len + telepad.efficiency < i) - t += "[power_options[i]]" - continue - if(power == power_options[i]) - t += "[power_options[i]]" - continue - t += "[power_options[i]]" - t += "
    " - - t += "Set Sector" - t += "
    [z_co ? z_co : "NULL"]
    " - - t += "
    Send" - t += " Receive" - t += "
    Recalibrate Crystals Eject Crystals" - - // Information about the last teleport - t += "
    " - if(!last_tele_data) - t += "No teleport data found." - else - t += "Source Location: ([last_tele_data.src_x], [last_tele_data.src_y])
    " - //t += "Distance: [round(last_tele_data.distance, 0.1)]m
    " - t += "Time: [round(last_tele_data.time, 0.1)] secs
    " - t += "
    " - - var/datum/browser/popup = new(user, "telesci", name, 300, 500) - popup.set_content(t) - popup.open() - return - -/obj/machinery/computer/telescience/proc/sparks() - if(telepad) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, get_turf(telepad)) - s.start() - else - return - -/obj/machinery/computer/telescience/proc/telefail() - sparks() - visible_message("The telepad weakly fizzles.") - return - -/obj/machinery/computer/telescience/proc/doteleport(mob/user) - - if(teleport_cooldown > world.time) - temp_msg = "Telepad is recharging power.
    Please wait [round((teleport_cooldown - world.time) / 10)] seconds." - return - - if(teleporting) - temp_msg = "Telepad is in use.
    Please wait." - return - - if(telepad) - - var/truePower = Clamp(power + power_off, 1, 1000) - var/trueRotation = rotation + rotation_off - var/trueAngle = Clamp(angle, 1, 90) - - var/datum/projectile_data/proj_data = projectile_trajectory(telepad.x, telepad.y, trueRotation, trueAngle, truePower) - last_tele_data = proj_data - - var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) - var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) - var/spawn_time = round(proj_data.time) * 10 - - var/turf/target = locate(trueX, trueY, z_co) - last_target = target - var/area/A = get_area(target) - flick("pad-beam", telepad) - - if(spawn_time > 15) // 1.5 seconds - playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) - // Wait depending on the time the projectile took to get there - teleporting = 1 - temp_msg = "Powering up bluespace crystals.
    Please wait." - - - spawn(round(proj_data.time) * 10) // in seconds - if(!telepad) - return - if(telepad.stat & NOPOWER) - return - teleporting = 0 - teleport_cooldown = world.time + (power * 2) - teles_left -= 1 - - // use a lot of power - use_power(power * 10) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, get_turf(telepad)) - s.start() - - temp_msg = "Teleport successful.
    " - if(teles_left < 10) - temp_msg += "
    Calibration required soon." - else - temp_msg += "Data printed below." - - var/sparks = get_turf(target) - var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread - y.set_up(5, 1, sparks) - y.start() - - var/turf/source = target - var/turf/dest = get_turf(telepad) - var/log_msg = "" - log_msg += ": [key_name(user)] has teleported " - - if(sending) - source = dest - dest = target - - flick("pad-beam", telepad) - playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - for(var/atom/movable/ROI in source) - // if is anchored, don't let through - if(ROI.anchored) - if(isliving(ROI)) - var/mob/living/L = ROI - if(L.buckled) - // TP people on office chairs - if(L.buckled.anchored) - continue - - log_msg += "[key_name(L)] (on a chair), " - else - continue - else if(!isobserver(ROI)) - continue - if(ismob(ROI)) - var/mob/T = ROI - log_msg += "[key_name(T)], " - else - log_msg += "[ROI.name]" - if (istype(ROI, /obj/structure/closet)) - var/obj/structure/closet/C = ROI - log_msg += " (" - for(var/atom/movable/Q as mob|obj in C) - if(ismob(Q)) - log_msg += "[key_name(Q)], " - else - log_msg += "[Q.name], " - if (dd_hassuffix(log_msg, "(")) - log_msg += "empty)" - else - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - log_msg += ")" - log_msg += ", " - do_teleport(ROI, dest) - - if (dd_hassuffix(log_msg, ", ")) - log_msg = dd_limittext(log_msg, length(log_msg) - 2) - else - log_msg += "nothing" - log_msg += " [sending ? "to" : "from"] [trueX], [trueY], [z_co] ([A ? A.name : "null area"])" - investigate_log(log_msg, "telesci") - updateDialog() - -/obj/machinery/computer/telescience/proc/teleport(mob/user) - if(rotation == null || angle == null || z_co == null) - temp_msg = "ERROR!
    Set a angle, rotation and sector." - return - if(power <= 0) - telefail() - temp_msg = "ERROR!
    No power selected!" - return - if(angle < 1 || angle > 90) - telefail() - temp_msg = "ERROR!
    Elevation is less than 1 or greater than 90." - return - if(z_co == 2 || z_co < 1 || z_co > 6) - telefail() - temp_msg = "ERROR! Sector is less than 1,
    greater than 6, or equal to 2." - return - if(teles_left > 0) - doteleport(user) - else - telefail() - temp_msg = "ERROR!
    Calibration required." - return - return - -/obj/machinery/computer/telescience/proc/eject() - for(var/obj/item/I in crystals) - I.loc = src.loc - crystals -= I - power = 0 - -/obj/machinery/computer/telescience/Topic(href, href_list) - if(..()) - return - if(!telepad) - updateDialog() - return - if(telepad.panel_open) - temp_msg = "Telepad undergoing physical maintenance operations." - - if(href_list["setrotation"]) - var/new_rot = input("Please input desired bearing in degrees.", name, rotation) as num - if(..()) // Check after we input a value, as they could've moved after they entered something - return - rotation = Clamp(new_rot, -900, 900) - rotation = round(rotation, 0.01) - - if(href_list["setangle"]) - var/new_angle = input("Please input desired elevation in degrees.", name, angle) as num - if(..()) - return - angle = Clamp(round(new_angle, 0.1), 1, 9999) - - if(href_list["setpower"]) - var/index = href_list["setpower"] - index = text2num(index) - if(index != null && power_options[index]) - if(crystals.len + telepad.efficiency >= index) - power = power_options[index] - - if(href_list["setz"]) - var/new_z = input("Please input desired sector.", name, z_co) as num - if(..()) - return - z_co = Clamp(round(new_z), 1, 10) - - if(href_list["ejectGPS"]) - inserted_gps.loc = loc - inserted_gps = null - - if(href_list["setMemory"]) - if(last_target) - inserted_gps.locked_location = last_target - temp_msg = "Location saved." - else - temp_msg = "ERROR!
    No data stored." - - if(href_list["send"]) - sending = 1 - teleport(usr) - - if(href_list["receive"]) - sending = 0 - teleport(usr) - - if(href_list["recal"]) - recalibrate() - sparks() - temp_msg = "NOTICE:
    Calibration successful." - - if(href_list["eject"]) - eject() - temp_msg = "NOTICE:
    Bluespace crystals ejected." - - updateDialog() - -/obj/machinery/computer/telescience/proc/recalibrate() - teles_left = rand(30, 40) - //angle_off = rand(-25, 25) - power_off = rand(-4, 0) +/obj/machinery/computer/telescience + name = "\improper Telepad Control Console" + desc = "Used to teleport objects to and from the telescience telepad." + icon_state = "teleport" + circuit = /obj/item/weapon/circuitboard/telesci_console + var/sending = 1 + var/obj/machinery/telepad/telepad = null + var/temp_msg = "Telescience control console initialized.
    Welcome." + + // VARIABLES // + var/teles_left // How many teleports left until it becomes uncalibrated + var/datum/projectile_data/last_tele_data = null + var/z_co = 1 + var/power_off + var/rotation_off + //var/angle_off + var/last_target + + var/rotation = 0 + var/angle = 45 + var/power = 5 + + // Based on the power used + var/teleport_cooldown = 0 // every index requires a bluespace crystal + var/list/power_options = list(5, 10, 20, 25, 30, 40, 50, 80, 100) + var/teleporting = 0 + var/starting_crystals = 3 + var/max_crystals = 4 + var/list/crystals = list() + var/obj/item/device/gps/inserted_gps + +/obj/machinery/computer/telescience/New() + ..() + recalibrate() + +/obj/machinery/computer/telescience/Destroy() + eject() + if(inserted_gps) + inserted_gps.loc = loc + inserted_gps = null + ..() + +/obj/machinery/computer/telescience/examine() + ..() + usr << "There are [crystals.len ? crystals.len : "no"] bluespace crystals in the crystal slots." + +/obj/machinery/computer/telescience/initialize() + ..() + for(var/i = 1; i <= starting_crystals; i++) + crystals += new /obj/item/bluespace_crystal/artificial(null) // starting crystals + +/obj/machinery/computer/telescience/update_icon() + if(stat & BROKEN) + icon_state = "telescib" + else + if(stat & NOPOWER) + src.icon_state = "teleport0" + stat |= NOPOWER + else + icon_state = initial(icon_state) + stat &= ~NOPOWER + +/obj/machinery/computer/telescience/attack_paw(mob/user) + user << "You are too primitive to use this computer." + return + +/obj/machinery/computer/telescience/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/bluespace_crystal)) + if(crystals.len >= max_crystals) + user << "There are not enough crystal slots." + return + user.drop_item() + crystals += W + W.loc = null + user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.") + updateDialog() + else if(istype(W, /obj/item/device/gps)) + if(!inserted_gps) + inserted_gps = W + user.unEquip(W) + W.loc = src + user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.") + else if(istype(W, /obj/item/device/multitool)) + var/obj/item/device/multitool/M = W + if(M.buffer && istype(M.buffer, /obj/machinery/telepad)) + telepad = M.buffer + M.buffer = null + user << "You upload the data from the [W.name]'s buffer." + else + ..() + +/obj/machinery/computer/telescience/attack_ai(mob/user) + src.attack_hand(user) + +/obj/machinery/computer/telescience/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/computer/telescience/interact(mob/user) + var/t + if(!telepad) + in_use = 0 //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console + t += "
    No telepad located.
    Please add telepad data.

    " + else + if(inserted_gps) + t += "Eject GPS" + t += "Set GPS memory" + else + t += "Eject GPS" + t += "Set GPS memory" + t += "
    [temp_msg]

    " + t += "Set Bearing" + t += "
    [rotation]°
    " + t += "Set Elevation" + t += "
    [angle]°
    " + t += "Set Power" + t += "
    " + + for(var/i = 1; i <= power_options.len; i++) + if(crystals.len + telepad.efficiency < i) + t += "[power_options[i]]" + continue + if(power == power_options[i]) + t += "[power_options[i]]" + continue + t += "[power_options[i]]" + t += "
    " + + t += "Set Sector" + t += "
    [z_co ? z_co : "NULL"]
    " + + t += "
    Send" + t += " Receive" + t += "
    Recalibrate Crystals Eject Crystals" + + // Information about the last teleport + t += "
    " + if(!last_tele_data) + t += "No teleport data found." + else + t += "Source Location: ([last_tele_data.src_x], [last_tele_data.src_y])
    " + //t += "Distance: [round(last_tele_data.distance, 0.1)]m
    " + t += "Time: [round(last_tele_data.time, 0.1)] secs
    " + t += "
    " + + var/datum/browser/popup = new(user, "telesci", name, 300, 500) + popup.set_content(t) + popup.open() + return + +/obj/machinery/computer/telescience/proc/sparks() + if(telepad) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, get_turf(telepad)) + s.start() + else + return + +/obj/machinery/computer/telescience/proc/telefail() + sparks() + visible_message("The telepad weakly fizzles.") + return + +/obj/machinery/computer/telescience/proc/doteleport(mob/user) + + if(teleport_cooldown > world.time) + temp_msg = "Telepad is recharging power.
    Please wait [round((teleport_cooldown - world.time) / 10)] seconds." + return + + if(teleporting) + temp_msg = "Telepad is in use.
    Please wait." + return + + if(telepad) + + var/truePower = Clamp(power + power_off, 1, 1000) + var/trueRotation = rotation + rotation_off + var/trueAngle = Clamp(angle, 1, 90) + + var/datum/projectile_data/proj_data = projectile_trajectory(telepad.x, telepad.y, trueRotation, trueAngle, truePower) + last_tele_data = proj_data + + var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) + var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) + var/spawn_time = round(proj_data.time) * 10 + + var/turf/target = locate(trueX, trueY, z_co) + last_target = target + var/area/A = get_area(target) + flick("pad-beam", telepad) + + if(spawn_time > 15) // 1.5 seconds + playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) + // Wait depending on the time the projectile took to get there + teleporting = 1 + temp_msg = "Powering up bluespace crystals.
    Please wait." + + + spawn(round(proj_data.time) * 10) // in seconds + if(!telepad) + return + if(telepad.stat & NOPOWER) + return + teleporting = 0 + teleport_cooldown = world.time + (power * 2) + teles_left -= 1 + + // use a lot of power + use_power(power * 10) + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, get_turf(telepad)) + s.start() + + temp_msg = "Teleport successful.
    " + if(teles_left < 10) + temp_msg += "
    Calibration required soon." + else + temp_msg += "Data printed below." + + var/sparks = get_turf(target) + var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread + y.set_up(5, 1, sparks) + y.start() + + var/turf/source = target + var/turf/dest = get_turf(telepad) + var/log_msg = "" + log_msg += ": [key_name(user)] has teleported " + + if(sending) + source = dest + dest = target + + flick("pad-beam", telepad) + playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + for(var/atom/movable/ROI in source) + // if is anchored, don't let through + if(ROI.anchored) + if(isliving(ROI)) + var/mob/living/L = ROI + if(L.buckled) + // TP people on office chairs + if(L.buckled.anchored) + continue + + log_msg += "[key_name(L)] (on a chair), " + else + continue + else if(!isobserver(ROI)) + continue + if(ismob(ROI)) + var/mob/T = ROI + log_msg += "[key_name(T)], " + else + log_msg += "[ROI.name]" + if (istype(ROI, /obj/structure/closet)) + var/obj/structure/closet/C = ROI + log_msg += " (" + for(var/atom/movable/Q as mob|obj in C) + if(ismob(Q)) + log_msg += "[key_name(Q)], " + else + log_msg += "[Q.name], " + if (dd_hassuffix(log_msg, "(")) + log_msg += "empty)" + else + log_msg = dd_limittext(log_msg, length(log_msg) - 2) + log_msg += ")" + log_msg += ", " + do_teleport(ROI, dest) + + if (dd_hassuffix(log_msg, ", ")) + log_msg = dd_limittext(log_msg, length(log_msg) - 2) + else + log_msg += "nothing" + log_msg += " [sending ? "to" : "from"] [trueX], [trueY], [z_co] ([A ? A.name : "null area"])" + investigate_log(log_msg, "telesci") + updateDialog() + +/obj/machinery/computer/telescience/proc/teleport(mob/user) + if(rotation == null || angle == null || z_co == null) + temp_msg = "ERROR!
    Set a angle, rotation and sector." + return + if(power <= 0) + telefail() + temp_msg = "ERROR!
    No power selected!" + return + if(angle < 1 || angle > 90) + telefail() + temp_msg = "ERROR!
    Elevation is less than 1 or greater than 90." + return + if(z_co == 2 || z_co < 1 || z_co > 6) + telefail() + temp_msg = "ERROR! Sector is less than 1,
    greater than 6, or equal to 2." + return + if(teles_left > 0) + doteleport(user) + else + telefail() + temp_msg = "ERROR!
    Calibration required." + return + return + +/obj/machinery/computer/telescience/proc/eject() + for(var/obj/item/I in crystals) + I.loc = src.loc + crystals -= I + power = 0 + +/obj/machinery/computer/telescience/Topic(href, href_list) + if(..()) + return + if(!telepad) + updateDialog() + return + if(telepad.panel_open) + temp_msg = "Telepad undergoing physical maintenance operations." + + if(href_list["setrotation"]) + var/new_rot = input("Please input desired bearing in degrees.", name, rotation) as num + if(..()) // Check after we input a value, as they could've moved after they entered something + return + rotation = Clamp(new_rot, -900, 900) + rotation = round(rotation, 0.01) + + if(href_list["setangle"]) + var/new_angle = input("Please input desired elevation in degrees.", name, angle) as num + if(..()) + return + angle = Clamp(round(new_angle, 0.1), 1, 9999) + + if(href_list["setpower"]) + var/index = href_list["setpower"] + index = text2num(index) + if(index != null && power_options[index]) + if(crystals.len + telepad.efficiency >= index) + power = power_options[index] + + if(href_list["setz"]) + var/new_z = input("Please input desired sector.", name, z_co) as num + if(..()) + return + z_co = Clamp(round(new_z), 1, 10) + + if(href_list["ejectGPS"]) + inserted_gps.loc = loc + inserted_gps = null + + if(href_list["setMemory"]) + if(last_target) + inserted_gps.locked_location = last_target + temp_msg = "Location saved." + else + temp_msg = "ERROR!
    No data stored." + + if(href_list["send"]) + sending = 1 + teleport(usr) + + if(href_list["receive"]) + sending = 0 + teleport(usr) + + if(href_list["recal"]) + recalibrate() + sparks() + temp_msg = "NOTICE:
    Calibration successful." + + if(href_list["eject"]) + eject() + temp_msg = "NOTICE:
    Bluespace crystals ejected." + + updateDialog() + +/obj/machinery/computer/telescience/proc/recalibrate() + teles_left = rand(30, 40) + //angle_off = rand(-25, 25) + power_off = rand(-4, 0) rotation_off = rand(-10, 10) \ No newline at end of file diff --git a/code/unused/Agouri_stuff.dm b/code/unused/Agouri_stuff.dm index 4fbfc7adc1a..e8820b410fe 100644 --- a/code/unused/Agouri_stuff.dm +++ b/code/unused/Agouri_stuff.dm @@ -1,1949 +1,1949 @@ -/* -/obj/vehicle/airtight - //inner atmos - var/use_internal_tank = 0 - var/internal_tank_valve = ONE_ATMOSPHERE - var/obj/machinery/portable_atmospherics/canister/internal_tank - var/datum/gas_mixture/cabin_air - var/obj/machinery/atmospherics/portables_connector/connected_port = null - - var/datum/global_iterator/pr_int_temp_processor //normalizes internal air mixture temperature - var/datum/global_iterator/pr_give_air //moves air from tank to cabin - - -/obj/vehicle/airtight/New() - ..() - src.add_airtank() - src.add_cabin() - src.add_airtight_iterators() - - - - -//######################################### Helpers for airtight vehicles ######################################### - -/obj/vehicle/airtight/proc/add_cabin() - cabin_air = new - cabin_air.temperature = T20C - cabin_air.volume = 200 - cabin_air.oxygen = O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) - cabin_air.nitrogen = N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) - return cabin_air - -/obj/vehicle/airtight/proc/add_airtank() - internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) - return internal_tank - -/obj/vehicle/airtight/proc/add_airtight_iterators() - pr_int_temp_processor = new /datum/global_iterator/vehicle_preserve_temp(list(src)) - pr_give_air = new /datum/global_iterator/vehicle_tank_give_air(list(src)) - - -//######################################### Specific datums for airtight vehicles ################################# - - -/datum/global_iterator/vehicle_preserve_temp //normalizing cabin air temperature to 20 degrees celsium - delay = 20 - - process(var/obj/vehicle/airtight/V) - if(V.cabin_air && V.cabin_air.return_volume() > 0) - var/delta = V.cabin_air.temperature - T20C - V.cabin_air.temperature -= max(-10, min(10, round(delta/4,0.1))) - return - - -/datum/global_iterator/vehicle_tank_give_air - delay = 15 - - process(var/obj/vehicle/airtight/V) - if(V.internal_tank) - var/datum/gas_mixture/tank_air = V.internal_tank.return_air() - var/datum/gas_mixture/cabin_air = V.cabin_air - - var/release_pressure = V.internal_tank_valve - var/cabin_pressure = cabin_air.return_pressure() - var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) - var/transfer_moles = 0 - if(pressure_delta > 0) //cabin pressure lower than release pressure - if(tank_air.return_temperature() > 0) - transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) - cabin_air.merge(removed) - else if(pressure_delta < 0) //cabin pressure higher than release pressure - var/datum/gas_mixture/t_air = V.get_turf_air() - pressure_delta = cabin_pressure - release_pressure - if(t_air) - pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) - if(pressure_delta > 0) //if location pressure is lower than cabin pressure - transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) - if(t_air) - t_air.merge(removed) - else //just delete the cabin gas, we're in space or some shit - del(removed) - else - return stop() - return - - -//######################################### Atmospherics for vehicles ############################################# - - -/obj/vehicle/proc/get_turf_air() - var/turf/T = get_turf(src) - if(T) - . = T.return_air() - return - -/obj/vehicle/airtight/remove_air(amount) - if(use_internal_tank) - return cabin_air.remove(amount) - else - var/turf/T = get_turf(src) - if(T) - return T.remove_air(amount) - return - -/obj/vehicle/airtight/return_air() - if(use_internal_tank) - return cabin_air - return get_turf_air() - -/obj/vehicle/airtight/proc/return_pressure() - . = 0 - if(use_internal_tank) - . = cabin_air.return_pressure() - else - var/datum/gas_mixture/t_air = get_turf_air() - if(t_air) - . = t_air.return_pressure() - return - - -/obj/vehicle/airtight/proc/return_temperature() - . = 0 - if(use_internal_tank) - . = cabin_air.return_temperature() - else - var/datum/gas_mixture/t_air = get_turf_air() - if(t_air) - . = t_air.return_temperature() - return - -/obj/vehicle/airtight/proc/connect(obj/machinery/atmospherics/portables_connector/new_port) - //Make sure not already connected to something else - if(connected_port || !new_port || new_port.connected_device) - return 0 - - //Make sure are close enough for a valid connection - if(new_port.loc != src.loc) - return 0 - - //Perform the connection - connected_port = new_port - connected_port.connected_device = src - - //Actually enforce the air sharing - var/datum/pipe_network/network = connected_port.return_network(src) - if(network && !(internal_tank.return_air() in network.gases)) - network.gases += internal_tank.return_air() - network.update = 1 - log_message("Vehicle airtank connected to external port.") - return 1 - -/obj/vehicle/airtight/proc/disconnect() - if(!connected_port) - return 0 - - var/datum/pipe_network/network = connected_port.return_network(src) - if(network) - network.gases -= internal_tank.return_air() - - connected_port.connected_device = null - connected_port = null - src.log_message("Vehicle airtank disconnected from external port.") - return 1 - - - - -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// - - - -/obj/vehicle - name = "Vehicle" - icon = 'icons/vehicles/vehicles.dmi' - density = 1 - anchored = 1 - unacidable = 1 //To avoid the pilot-deleting shit that came with mechas - layer = MOB_LAYER - //var/can_move = 1 - var/mob/living/carbon/occupant = null - //var/step_in = 10 //make a step in step_in/10 sec. - //var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South. - //var/step_energy_drain = 10 - var/health = 300 //health is health - //var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. - //the values in this list show how much damage will pass through, not how much will be absorbed. - var/list/damage_absorption = list("brute"=0.8,"fire"=1.2,"bullet"=0.9,"laser"=1,"energy"=1,"bomb"=1) - var/obj/item/weapon/stock_parts/cell/cell //Our power source - var/state = 0 - var/list/log = new - var/last_message = 0 - var/add_req_access = 1 - var/maint_access = 1 - //var/dna //dna-locking the mech - var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference - var/datum/effect/effect/system/spark_spread/spark_system = new - var/lights = 0 - var/lights_power = 6 - - //inner atmos //These go in airtight.dm, not all vehicles are space-faring -Agouri - //var/use_internal_tank = 0 - //var/internal_tank_valve = ONE_ATMOSPHERE - //var/obj/machinery/portable_atmospherics/canister/internal_tank - //var/datum/gas_mixture/cabin_air - //var/obj/machinery/atmospherics/portables_connector/connected_port = null - - var/obj/item/device/radio/radio = null - - var/max_temperature = 2500 - //var/internal_damage_threshold = 50 //health percentage below which internal damage is possible - var/internal_damage = 0 //contains bitflags - - var/list/operation_req_access = list()//required access level for mecha operation - var/list/internals_req_access = list(access_engine,access_robotics)//required access level to open cell compartment - - //var/datum/global_iterator/pr_int_temp_processor //normalizes internal air mixture temperature //In airtight.dm you go -Agouri - var/datum/global_iterator/pr_inertial_movement //controls intertial movement in spesss - - //var/datum/global_iterator/pr_give_air //moves air from tank to cabin //Y-you too -Agouri - - var/datum/global_iterator/pr_internal_damage //processes internal damage - - - var/wreckage - - var/list/equipment = new - var/obj/selected - //var/max_equip = 3 - - var/datum/events/events - - - -/obj/vehicle/New() - ..() - events = new - icon_state += "-unmanned" - add_radio() - //add_cabin() //No cabin for non-airtights - - spark_system.set_up(2, 0, src) - spark_system.attach(src) - add_cell() - add_iterators() - removeVerb(/obj/mecha/verb/disconnect_from_port) - removeVerb(/atom/movable/verb/pull) - log_message("[src.name]'s functions initialised. Work protocols active - Entering IDLE mode.") - loc.Entered(src) - return - - -//################ Helpers ########################################################### - - -/obj/vehicle/proc/removeVerb(verb_path) - verbs -= verb_path - -/obj/vehicle/proc/addVerb(verb_path) - verbs += verb_path - -/*/obj/vehicle/proc/add_airtank() //In airtight.dm -Agouri - internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) - return internal_tank*/ - -/obj/vehicle/proc/add_cell(var/obj/item/weapon/stock_parts/cell/C=null) - if(C) - C.forceMove(src) - cell = C - return - cell = new(src) - cell.charge = 15000 - cell.maxcharge = 15000 - -/*/obj/vehicle/proc/add_cabin() //In airtight.dm -Agouri - cabin_air = new - cabin_air.temperature = T20C - cabin_air.volume = 200 - cabin_air.oxygen = O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) - cabin_air.nitrogen = N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) - return cabin_air*/ - -/obj/vehicle/proc/add_radio() - radio = new(src) - radio.name = "[src] radio" - radio.icon = icon - radio.icon_state = icon_state - radio.subspace_transmission = 1 - -/obj/vehicle/proc/add_iterators() - pr_inertial_movement = new /datum/global_iterator/vehicle_intertial_movement(null,0) - //pr_internal_damage = new /datum/global_iterator/vehicle_internal_damage(list(src),0) - //pr_int_temp_processor = new /datum/global_iterator/vehicle_preserve_temp(list(src)) //In airtight.dm's add_airtight_iterators -Agouri - //pr_give_air = new /datum/global_iterator/vehicle_tank_give_air(list(src) //Same here -Agouri - -/obj/vehicle/proc/check_for_support() - if(locate(/obj/structure/grille, orange(1, src)) || locate(/obj/structure/lattice, orange(1, src)) || locate(/turf/simulated, orange(1, src)) || locate(/turf/unsimulated, orange(1, src))) - return 1 - else - return 0 - -//################ Logs and messages ############################################ - - -/obj/vehicle/proc/log_message(message as text,red=null) - log.len++ - log[log.len] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") - return log.len - - - -//################ Global Iterator Datums ###################################### - - -/datum/global_iterator/vehicle_intertial_movement //inertial movement in space - delay = 7 - - process(var/obj/vehicle/V as obj, direction) - if(direction) - if(!step(V, direction)||V.check_for_support()) - src.stop() - else - src.stop() - return - - -/datum/global_iterator/mecha_internal_damage // processing internal damage - - process(var/obj/mecha/mecha) - if(!mecha.hasInternalDamage()) - return stop() - if(mecha.hasInternalDamage(MECHA_INT_FIRE)) - if(!mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL) && prob(5)) - mecha.clearInternalDamage(MECHA_INT_FIRE) - if(mecha.internal_tank) - if(mecha.internal_tank.return_pressure()>mecha.internal_tank.maximum_pressure && !(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH))) - mecha.setInternalDamage(MECHA_INT_TANK_BREACH) - var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() - if(int_tank_air && int_tank_air.return_volume()>0) //heat the air_contents - int_tank_air.temperature = min(6000+T0C, int_tank_air.temperature+rand(10,15)) - if(mecha.cabin_air && mecha.cabin_air.return_volume()>0) - mecha.cabin_air.temperature = min(6000+T0C, mecha.cabin_air.return_temperature()+rand(10,15)) - if(mecha.cabin_air.return_temperature()>mecha.max_temperature/2) - mecha.take_damage(4/round(mecha.max_temperature/mecha.cabin_air.return_temperature(),0.1),"fire") - if(mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL)) //stop the mecha_preserve_temp loop datum - mecha.pr_int_temp_processor.stop() - if(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH)) //remove some air from internal tank - if(mecha.internal_tank) - var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() - var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.10) - if(mecha.loc && hascall(mecha.loc,"assume_air")) - mecha.loc.assume_air(leaked_gas) - else - del(leaked_gas) - if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) - if(mecha.get_charge()) - mecha.spark_system.start() - mecha.cell.charge -= min(20,mecha.cell.charge) - mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) - return - - -*/ - - - - - -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// -///////////////////////////////////////////////////////// - - - - -/*/turf/DblClick() - if(istype(usr, /mob/living/silicon/ai)) - return move_camera_by_click() - if(usr.stat || usr.restrained() || usr.lying) - return ..() - - if(usr.hand && istype(usr.l_hand, /obj/item/weapon/flamethrower)) - var/turflist = getline(usr,src) - var/obj/item/weapon/flamethrower/F = usr.l_hand - F.flame_turf(turflist) - else if(!usr.hand && istype(usr.r_hand, /obj/item/weapon/flamethrower)) - var/turflist = getline(usr,src) - var/obj/item/weapon/flamethrower/F = usr.r_hand - F.flame_turf(turflist) - - return ..() - -/turf/New() - ..() - for(var/atom/movable/AM as mob|obj in src) - spawn( 0 ) - src.Entered(AM) - return - return - -/turf/ex_act(severity) - return 0 - - -/turf/bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam/pulse)) - src.ex_act(2) - ..() - return 0 - -/turf/bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/bullet/gyro)) - explosion(src, -1, 0, 2) - ..() - return 0 - -/turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area) - if (!mover || !isturf(mover.loc)) - return 1 - - - //First, check objects to block exit that are not on the border - for(var/obj/obstacle in mover.loc) - if((obstacle.flags & ~ON_BORDER) && (mover != obstacle) && (forget != obstacle)) - if(!obstacle.CheckExit(mover, src)) - mover.Bump(obstacle, 1) - return 0 - - //Now, check objects to block exit that are on the border - for(var/obj/border_obstacle in mover.loc) - if((border_obstacle.flags & ON_BORDER) && (mover != border_obstacle) && (forget != border_obstacle)) - if(!border_obstacle.CheckExit(mover, src)) - mover.Bump(border_obstacle, 1) - return 0 - - //Next, check objects to block entry that are on the border - for(var/obj/border_obstacle in src) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != border_obstacle)) - mover.Bump(border_obstacle, 1) - return 0 - - //Then, check the turf itself - if (!src.CanPass(mover, src)) - mover.Bump(src, 1) - return 0 - - //Finally, check objects/mobs to block entry that are not on the border - for(var/atom/movable/obstacle in src) - if(obstacle.flags & ~ON_BORDER) - if(!obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != obstacle)) - mover.Bump(obstacle, 1) - return 0 - return 1 //Nothing found to block so return success! - - -/turf/Entered(atom/movable/M as mob|obj) - var/loopsanity = 100 - if(ismob(M)) - if(!M:lastarea) - M:lastarea = get_area(M.loc) - if(M:lastarea.has_gravity == 0) - inertial_drift(M) - - /* - if(M.flags & NOGRAV) - inertial_drift(M) - */ - - - - else if(!istype(src, /turf/space)) - M:inertia_dir = 0 - ..() - var/objects = 0 - for(var/atom/A as mob|obj|turf|area in src) - if(objects > loopsanity) break - objects++ - spawn( 0 ) - if ((A && M)) - A.HasEntered(M, 1) - return - objects = 0 - for(var/atom/A as mob|obj|turf|area in range(1)) - if(objects > loopsanity) break - objects++ - spawn( 0 ) - if ((A && M)) - A.HasProximity(M, 1) - return - return - -/turf/proc/inertial_drift(atom/movable/A as mob|obj) - if(!(A.last_move)) return - if((istype(A, /mob/) && src.x > 2 && src.x < (world.maxx - 1) && src.y > 2 && src.y < (world.maxy-1))) - var/mob/M = A - if(M.Process_Spacemove(1)) - M.inertia_dir = 0 - return - spawn(5) - if((M && !(M.anchored) && (M.loc == src))) - if(M.inertia_dir) - step(M, M.inertia_dir) - return - M.inertia_dir = M.last_move - step(M, M.inertia_dir) - return - -/turf/proc/levelupdate() - for(var/obj/O in src) - if(O.level == 1) - O.hide(src.intact) - -// override for space turfs, since they should never hide anything -/turf/space/levelupdate() - for(var/obj/O in src) - if(O.level == 1) - O.hide(0) - -// Removes all signs of lattice on the pos of the turf -Donkieyo -/turf/proc/RemoveLattice() - var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) - if(L) - del L - -/turf/proc/ReplaceWithFloor(explode=0) - var/prior_icon = icon_old - var/old_dir = dir - - var/turf/simulated/floor/W = new /turf/simulated/floor( locate(src.x, src.y, src.z) ) - - W.RemoveLattice() - W.dir = old_dir - if(prior_icon) W.icon_state = prior_icon - else W.icon_state = "floor" - - if (!explode) - W.opacity = 1 - W.sd_SetOpacity(0) - //This is probably gonna make lighting go a bit wonky in bombed areas, but sd_SetOpacity was the primary reason bombs have been so laggy. --NEO - W.levelupdate() - return W - -/turf/proc/ReplaceWithPlating() - var/prior_icon = icon_old - var/old_dir = dir - - var/turf/simulated/floor/plating/W = new /turf/simulated/floor/plating( locate(src.x, src.y, src.z) ) - - W.RemoveLattice() - W.dir = old_dir - if(prior_icon) W.icon_state = prior_icon - else W.icon_state = "plating" - W.opacity = 1 - W.sd_SetOpacity(0) - W.levelupdate() - return W - -/turf/proc/ReplaceWithEngineFloor() - var/old_dir = dir - - var/turf/simulated/floor/engine/E = new /turf/simulated/floor/engine( locate(src.x, src.y, src.z) ) - - E.dir = old_dir - E.icon_state = "engine" - -/turf/simulated/Entered(atom/A, atom/OL) - if (istype(A,/mob/living/carbon)) - var/mob/living/carbon/M = A - if(M.lying) return - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(istype(H.shoes, /obj/item/clothing/shoes/clown_shoes)) - if(H.m_intent == "run") - if(H.footstep >= 2) - H.footstep = 0 - else - H.footstep++ - if(H.footstep == 0) - playsound(src, "clownstep", 50, 1) // this will get annoying very fast. - else - playsound(src, "clownstep", 20, 1) - - switch (src.wet) - if(1) - if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes - if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) - M.stop_pulling() - step(M, M.dir) - M << "\blue You slipped on the wet floor!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(8) - M.Weaken(5) - else - M.inertia_dir = 0 - return - else if(!istype(M, /mob/living/carbon/slime)) - if (M.m_intent == "run") - M.stop_pulling() - step(M, M.dir) - M << "\blue You slipped on the wet floor!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Stun(8) - M.Weaken(5) - else - M.inertia_dir = 0 - return - - if(2) //lube - if(!istype(M, /mob/living/carbon/slime)) - M.stop_pulling() - step(M, M.dir) - spawn(1) step(M, M.dir) - spawn(2) step(M, M.dir) - spawn(3) step(M, M.dir) - spawn(4) step(M, M.dir) - M.take_organ_damage(2) - M << "\blue You slipped on the floor!" - playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - M.Weaken(10) - - ..() - -/turf/proc/ReplaceWithSpace() - var/old_dir = dir - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) - S.dir = old_dir - return S - -/turf/proc/ReplaceWithLattice() - var/old_dir = dir - var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) - S.dir = old_dir - new /obj/structure/lattice( locate(src.x, src.y, src.z) ) - return S - -/turf/proc/ReplaceWithWall() - var/old_icon = icon_state - var/turf/simulated/wall/S = new /turf/simulated/wall( locate(src.x, src.y, src.z) ) - S.icon_old = old_icon - S.opacity = 0 - S.sd_NewOpacity(1) - return S - -/turf/proc/ReplaceWithRWall() - var/old_icon = icon_state - var/turf/simulated/wall/r_wall/S = new /turf/simulated/wall/r_wall( locate(src.x, src.y, src.z) ) - S.icon_old = old_icon - S.opacity = 0 - S.sd_NewOpacity(1) - return S - -/turf/simulated/wall/New() - ..() - -/turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0) - if(istype(src,/turf/simulated/wall/r_wall)) - if(!devastated) - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - new /obj/structure/girder/reinforced(src) - new /obj/item/stack/sheet/plasteel( src ) - else - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/plasteel( src ) - else if(istype(src,/turf/simulated/wall/cult)) - if(!devastated) - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - new /obj/effect/decal/remains/human(src) - else - new /obj/effect/decal/remains/human(src) - - else - if(!devastated) - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - new /obj/structure/girder(src) - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) - else - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) - new /obj/item/stack/sheet/metal( src ) - - ReplaceWithPlating(explode) - -/turf/simulated/wall/examine() - set src in oview(1) - - usr << "It looks like a regular wall." - return - -/turf/simulated/wall/ex_act(severity) - switch(severity) - if(1.0) - //SN src = null - src.ReplaceWithSpace() - del(src) - return - if(2.0) - if (prob(50)) - dismantle_wall(0,1) - else - dismantle_wall(1,1) - if(3.0) - var/proba - if (istype(src, /turf/simulated/wall/r_wall)) - proba = 15 - else - proba = 40 - if (prob(proba)) - dismantle_wall(0,1) - else - return - -/turf/simulated/wall/blob_act() - if(prob(50)) - dismantle_wall() - -/turf/simulated/wall/attack_paw(mob/user as mob) - if ((user.mutations & HULK)) - if (prob(40)) - usr << text("\blue You smash through the wall.") - dismantle_wall(1) - return - else - usr << text("\blue You punch the wall.") - return - - return src.attack_hand(user) - - -/turf/simulated/wall/attack_animal(mob/living/simple_animal/M as mob) - if(M.wall_smash) - if (istype(src, /turf/simulated/wall/r_wall)) - M << text("\blue This wall is far too strong for you to destroy.") - return - else - if (prob(40)) - M << text("\blue You smash through the wall.") - dismantle_wall(1) - return - else - M << text("\blue You smash against the wall.") - return - - M << "\blue You push the wall but nothing happens!" - return - -/turf/simulated/wall/attack_hand(mob/user as mob) - if ((user.mutations & HULK)) - if (prob(40)) - usr << text("\blue You smash through the wall.") - dismantle_wall(1) - return - else - usr << text("\blue You punch the wall.") - return - - user << "\blue You push the wall but nothing happens!" - playsound(src.loc, 'sound/weapons/Genhit.ogg', 25, 1) - src.add_fingerprint(user) - return - -/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - var/turf/T = get_turf(user) - if (!( istype(T, /turf) )) - return - - if (thermite) - var/obj/effect/overlay/O = new/obj/effect/overlay( src ) - O.name = "Thermite" - O.desc = "Looks hot." - O.icon = 'icons/effects/fire.dmi' - O.icon_state = "2" - O.anchored = 1 - O.density = 1 - O.layer = 5 - var/turf/simulated/floor/F = ReplaceWithPlating() - F.burn_tile() - F.icon_state = "wall_thermite" - user << "\red The thermite melts the wall." - spawn(100) del(O) - F.sd_LumReset() - return - - if (W:remove_fuel(0,user)) - W:welding = 2 - user << "\blue Now disassembling the outer wall plating." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(100) - if (W && istype(src, /turf/simulated/wall)) - if ((get_turf(user) == T && user.equipped() == W)) - user << "\blue You disassembled the outer wall plating." - dismantle_wall() - W:welding = 1 - else - user << "\blue You need more welding fuel to complete this task." - return - - else if (istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - var/turf/T = user.loc - if (!( istype(T, /turf) )) - return - - if (thermite) - var/obj/effect/overlay/O = new/obj/effect/overlay( src ) - O.name = "Thermite" - O.desc = "Looks hot." - O.icon = 'icons/effects/fire.dmi' - O.icon_state = "2" - O.anchored = 1 - O.density = 1 - O.layer = 5 - var/turf/simulated/floor/F = ReplaceWithPlating() - F.burn_tile() - F.icon_state = "wall_thermite" - user << "\red The thermite melts the wall." - spawn(100) del(O) - F.sd_LumReset() - return - - else - user << "\blue Now disassembling the outer wall plating." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(60) - if (W && istype(src, /turf/simulated/wall)) - if ((get_turf(user) == T && user.equipped() == W)) - user << "\blue You disassembled the outer wall plating." - dismantle_wall() - for(var/mob/O in viewers(user, 5)) - O.show_message(text("\blue The wall was sliced apart by []!", user), 1, text("\red You hear metal being sliced apart."), 2) - return - - else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - var/turf/T = user.loc - user << "\blue Now drilling through wall." - sleep(60) - if (W && istype(src, /turf/simulated/wall)) - if ((user.loc == T && user.equipped() == W)) - dismantle_wall(1) - for(var/mob/O in viewers(user, 5)) - O.show_message(text("\blue The wall was drilled apart by []!", user), 1, text("\red You hear metal being drilled appart."), 2) - return - - else if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/turf/T = user.loc - user << "\blue Now slicing through wall." - W:spark_system.start() - playsound(src.loc, "sparks", 50, 1) - sleep(70) - if (W && istype(src, /turf/simulated/wall)) - if ((user.loc == T && user.equipped() == W)) - W:spark_system.start() - playsound(src.loc, "sparks", 50, 1) - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - dismantle_wall(1) - for(var/mob/O in viewers(user, 5)) - O.show_message(text("\blue The wall was sliced apart by []!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) - return - - else if(istype(W,/obj/item/apc_frame)) - var/obj/item/apc_frame/AH = W - AH.try_build(src) - else if(istype(W,/obj/item/weapon/contraband/poster)) - var/obj/item/weapon/contraband/poster/P = W - if(P.resulting_poster) - var/check = 0 - var/stuff_on_wall = 0 - for( var/obj/O in src.contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/effect/decal/poster)) - check = 1 - break - stuff_on_wall++ - if(stuff_on_wall==3) - check = 1 - break - - if(check) - user << "The wall is far too cluttered to place a poster!" - return - - user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. - - P.resulting_poster.loc = src - var/temp = P.resulting_poster.icon_state - var/temp_loc = user.loc - P.resulting_poster.icon_state = "poster_being_set" - playsound(P.resulting_poster.loc, 'sound/items/poster_being_created.ogg', 100, 1) - sleep(24) - - if(user.loc == temp_loc)//Let's check if he still is there - user << "You place the poster!" - P.resulting_poster.icon_state = temp - src.contents += P.resulting_poster - del(P) - else - user << "You stop placing the poster." - P.resulting_poster.loc = P - P.resulting_poster.icon_state = temp - else - return attack_hand(user) - return - - -/turf/simulated/wall/r_wall/attackby(obj/item/W as obj, mob/user as mob) - - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - - if(!istype(src, /turf/simulated/wall/r_wall)) - return // this may seem stupid and redundant but apparently floors can call this attackby() proc, it was spamming shit up. -- Doohl - - - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - W:eyecheck(user) - var/turf/T = user.loc - if (!( istype(T, /turf) )) - return - - if (thermite) - var/obj/effect/overlay/O = new/obj/effect/overlay( src ) - O.name = "Thermite" - O.desc = "Looks hot." - O.icon = 'icons/effects/fire.dmi' - O.icon_state = "2" - O.anchored = 1 - O.density = 1 - O.layer = 5 - var/turf/simulated/floor/F = ReplaceWithPlating() - F.burn_tile() - F.icon_state = "wall_thermite" - user << "\red The thermite melts the wall." - spawn(100) del(O) - F.sd_LumReset() - return - - if (src.d_state == 2) - W:welding = 2 - user << "\blue Slicing metal cover." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(60) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 3 - user << "\blue You removed the metal cover." - W:welding = 1 - - else if (src.d_state == 5) - W:welding = 2 - user << "\blue Removing support rods." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(100) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 6 - new /obj/item/stack/rods( src ) - user << "\blue You removed the support rods." - W:welding = 1 - - else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - var/turf/T = user.loc - if (!( istype(T, /turf) )) - return - - if (thermite) - var/obj/effect/overlay/O = new/obj/effect/overlay( src ) - O.name = "Thermite" - O.desc = "Looks hot." - O.icon = 'icons/effects/fire.dmi' - O.icon_state = "2" - O.anchored = 1 - O.density = 1 - O.layer = 5 - var/turf/simulated/floor/F = ReplaceWithPlating() - F.burn_tile() - F.icon_state = "wall_thermite" - user << "\red The thermite melts the wall." - spawn(100) del(O) - F.sd_LumReset() - return - - if (src.d_state == 2) - user << "\blue Slicing metal cover." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(40) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 3 - user << "\blue You removed the metal cover." - - else if (src.d_state == 5) - user << "\blue Removing support rods." - playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) - sleep(70) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 6 - new /obj/item/stack/rods( src ) - user << "\blue You removed the support rods." - - else if(istype(W, /obj/item/weapon/melee/energy/blade)) - user << "\blue This wall is too thick to slice through. You will need to find a different path." - return - - else if (istype(W, /obj/item/weapon/wrench)) - if (src.d_state == 4) - var/turf/T = user.loc - user << "\blue Detaching support rods." - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - sleep(40) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 5 - user << "\blue You detach the support rods." - - else if (istype(W, /obj/item/weapon/wirecutters)) - if (src.d_state == 0) - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - src.d_state = 1 - new /obj/item/stack/rods( src ) - - else if (istype(W, /obj/item/weapon/screwdriver)) - if (src.d_state == 1) - var/turf/T = user.loc - playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user << "\blue Removing support lines." - sleep(40) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 2 - user << "\blue You removed the support lines." - - else if (istype(W, /obj/item/weapon/crowbar)) - - if (src.d_state == 3) - var/turf/T = user.loc - user << "\blue Prying cover off." - playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - sleep(100) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 4 - user << "\blue You removed the cover." - - else if (src.d_state == 6) - var/turf/T = user.loc - user << "\blue Prying outer sheath off." - playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - sleep(100) - if(src) - if ((user.loc == T && user.equipped() == W)) - user << "\blue You removed the outer sheath." - dismantle_wall() - return - - else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - var/turf/T = user.loc - user << "\blue You begin to drill though, this will take some time." - sleep(200) - if(src) - if ((user.loc == T && user.equipped() == W)) - user << "\blue Your drill tears though the reinforced plating." - dismantle_wall() - return - - else if ((istype(W, /obj/item/stack/sheet/metal)) && (src.d_state)) - var/turf/T = user.loc - user << "\blue Repairing wall." - sleep(100) - if ((user.loc == T && user.equipped() == W)) - src.d_state = 0 - src.icon_state = initial(src.icon_state) - user << "\blue You repaired the wall." - if (W:amount > 1) - W:amount-- - else - del(W) - - else if(istype(W,/obj/item/weapon/contraband/poster)) - var/obj/item/weapon/contraband/poster/P = W - if(P.resulting_poster) - var/check = 0 - var/stuff_on_wall = 0 - for( var/obj/O in src.contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/effect/decal/poster)) - check = 1 - break - stuff_on_wall++ - if(stuff_on_wall==3) - check = 1 - break - - if(check) - user << "The wall is far too cluttered to place a poster!" - return - - user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. - - P.resulting_poster.loc = src - var/temp = P.resulting_poster.icon_state - var/temp_loc = user.loc - P.resulting_poster.icon_state = "poster_being_set" - playsound(P.resulting_poster.loc, 'sound/items/poster_being_created.ogg', 100, 1) - sleep(24) - - if(user.loc == temp_loc)//Let's check if he still is there - user << "You place the poster!" - P.resulting_poster.icon_state = temp - src.contents += P.resulting_poster - del(P) - else - user << "You stop placing the poster." - P.resulting_poster.loc = P - P.resulting_poster.icon_state = temp - return - - if(istype(W,/obj/item/apc_frame)) - var/obj/item/apc_frame/AH = W - AH.try_build(src) - return - - if(src.d_state > 0) - src.icon_state = "r_wall-[d_state]" - - else - return attack_hand(user) - return - -/turf/simulated/wall/meteorhit(obj/M as obj) - if (prob(15)) - dismantle_wall() - else if(prob(70)) - ReplaceWithPlating() - else - ReplaceWithLattice() - return 0 - - -//This is so damaged or burnt tiles or platings don't get remembered as the default tile -var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","damaged4", - "damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", - "platingdmg3","plating","light_on","light_on_flicker1","light_on_flicker2", - "light_on_clicker3","light_on_clicker4","light_on_clicker5","light_broken", - "light_on_broken","light_off","wall_thermite","grass1","grass2","grass3","grass4", - "asteroid","asteroid_dug", - "asteroid0","asteroid1","asteroid2","asteroid3","asteroid4", - "asteroid5","asteroid6","asteroid7","asteroid8", - "burning","oldburning","light-on-r","light-on-y","light-on-g","light-on-b") - -var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3","asteroid","asteroid_dug") - -/turf/simulated/floor - - //Note to coders, the 'intact' var can no longer be used to determine if the floor is a plating or not. - //Use the is_plating(), is_plasteel_floor() and is_light_floor() procs instead. --Errorage - name = "floor" - icon = 'icons/turf/floors.dmi' - icon_state = "floor" - var/icon_regular_floor = "floor" //used to remember what icon the tile should have by default - var/icon_plating = "plating" - thermal_conductivity = 0.040 - heat_capacity = 10000 - var/broken = 0 - var/burnt = 0 - var/obj/item/stack/tile/floor_tile = new/obj/item/stack/tile/plasteel - - airless - icon_state = "floor" - name = "airless floor" - oxygen = 0.01 - nitrogen = 0.01 - temperature = TCMB - - New() - ..() - name = "floor" - - light - name = "Light floor" - luminosity = 5 - icon_state = "light_on" - floor_tile = new/obj/item/stack/tile/light - - New() - floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. - var/n = name //just in case commands rename it in the ..() call - ..() - spawn(4) - update_icon() - name = n - - grass - name = "Grass patch" - icon_state = "grass1" - floor_tile = new/obj/item/stack/tile/grass - - New() - floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. - icon_state = "grass[pick("1","2","3","4")]" - ..() - spawn(4) - update_icon() - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - -/turf/simulated/floor/vault - icon_state = "rockvault" - - New(location,type) - ..() - icon_state = "[type]vault" - -/turf/simulated/wall/vault - icon_state = "rockvault" - - New(location,type) - ..() - icon_state = "[type]vault" - -/turf/simulated/floor/engine - name = "reinforced floor" - icon_state = "engine" - thermal_conductivity = 0.025 - heat_capacity = 325000 - -/turf/simulated/floor/engine/cult - name = "engraved floor" - icon_state = "cult" - - -/turf/simulated/floor/engine/n20 - New() - ..() - var/datum/gas_mixture/adding = new - var/datum/gas/sleeping_agent/trace_gas = new - - trace_gas.moles = 2000 - adding.trace_gases += trace_gas - adding.temperature = T20C - - assume_air(adding) - -/turf/simulated/floor/engine/vacuum - name = "vacuum floor" - icon_state = "engine" - oxygen = 0 - nitrogen = 0.001 - temperature = TCMB - -/turf/simulated/floor/plating - name = "plating" - icon_state = "plating" - floor_tile = null - intact = 0 - -/turf/simulated/floor/plating/airless - icon_state = "plating" - name = "airless plating" - oxygen = 0.01 - nitrogen = 0.01 - temperature = TCMB - - New() - ..() - name = "plating" - -/turf/simulated/floor/grid - icon = 'icons/turf/floors.dmi' - icon_state = "circuit" - -/turf/simulated/floor/New() - ..() - if(icon_state in icons_to_ignore_at_floor_init) //so damaged/burned tiles or plating icons aren't saved as the default - icon_regular_floor = "floor" - else - icon_regular_floor = icon_state - -//turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) -// if ((istype(mover, /obj/machinery/vehicle) && !(src.burnt))) -// if (!( locate(/obj/machinery/mass_driver, src) )) -// return 0 -// return ..() - -/turf/simulated/floor/ex_act(severity) - //set src in oview(1) - switch(severity) - if(1.0) - src.ReplaceWithSpace() - if(2.0) - switch(pick(1,2;75,3)) - if (1) - src.ReplaceWithLattice() - if(prob(33)) new /obj/item/stack/sheet/metal(src) - if(2) - src.ReplaceWithSpace() - if(3) - if(prob(80)) - src.break_tile_to_plating() - else - src.break_tile() - src.hotspot_expose(1000,CELL_VOLUME) - if(prob(33)) new /obj/item/stack/sheet/metal(src) - if(3.0) - if (prob(50)) - src.break_tile() - src.hotspot_expose(1000,CELL_VOLUME) - return - -/turf/simulated/floor/blob_act() - return - -turf/simulated/floor/proc/update_icon() - if(is_plasteel_floor()) - if(!broken && !burnt) - icon_state = icon_regular_floor - if(is_plating()) - if(!broken && !burnt) - icon_state = icon_plating //Because asteroids are 'platings' too. - if(is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - if(T.on) - switch(T.state) - if(0) - icon_state = "light_on" - sd_SetLuminosity(5) - if(1) - var/num = pick("1","2","3","4") - icon_state = "light_on_flicker[num]" - sd_SetLuminosity(5) - if(2) - icon_state = "light_on_broken" - sd_SetLuminosity(5) - if(3) - icon_state = "light_off" - sd_SetLuminosity(0) - else - sd_SetLuminosity(0) - icon_state = "light_off" - if(is_grass_floor()) - if(!broken && !burnt) - if(!(icon_state in list("grass1","grass2","grass3","grass4"))) - icon_state = "grass[pick("1","2","3","4")]" - spawn(1) - if(istype(src,/turf/simulated/floor)) //Was throwing runtime errors due to a chance of it changing to space halfway through. - if(air) - update_visuals(air) - -turf/simulated/floor/return_siding_icon_state() - ..() - if(is_grass_floor()) - var/dir_sum = 0 - for(var/direction in cardinal) - var/turf/T = get_step(src,direction) - if(!(T.is_grass_floor())) - dir_sum += direction - if(dir_sum) - return "wood_siding[dir_sum]" - else - return 0 - - -/turf/simulated/floor/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/turf/simulated/floor/attack_hand(mob/user as mob) - if (is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - T.on = !T.on - update_icon() - if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) - return - if (user.pulling.anchored) - return - if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) - return - if (ismob(user.pulling)) - var/mob/M = user.pulling - var/mob/t = M.pulling - M.stop_pulling() - step(user.pulling, get_dir(user.pulling.loc, src)) - M.start_pulling(t) - else - step(user.pulling, get_dir(user.pulling.loc, src)) - return - -/turf/simulated/floor/engine/attackby(obj/item/weapon/C as obj, mob/user as mob) - if(!C) - return - if(!user) - return - if(istype(C, /obj/item/weapon/wrench)) - user << "\blue Removing rods..." - playsound(src.loc, 'sound/items/Ratchet.ogg', 80, 1) - if(do_after(user, 30)) - new /obj/item/stack/rods(src, 2) - ReplaceWithFloor() - var/turf/simulated/floor/F = src - F.make_plating() - return - -/turf/simulated/floor/proc/gets_drilled() - return - -/turf/simulated/floor/proc/break_tile_to_plating() - if(!is_plating()) - make_plating() - break_tile() - -/turf/simulated/floor/is_plasteel_floor() - if(istype(floor_tile,/obj/item/stack/tile/plasteel)) - return 1 - else - return 0 - -/turf/simulated/floor/is_light_floor() - if(istype(floor_tile,/obj/item/stack/tile/light)) - return 1 - else - return 0 - -/turf/simulated/floor/is_grass_floor() - if(istype(floor_tile,/obj/item/stack/tile/grass)) - return 1 - else - return 0 - -/turf/simulated/floor/is_plating() - if(!floor_tile) - return 1 - return 0 - -/turf/simulated/floor/proc/break_tile() - if(istype(src,/turf/simulated/floor/engine)) return - if(istype(src,/turf/simulated/floor/mech_bay_recharge_floor)) - src.ReplaceWithPlating() - if(broken) return - if(is_plasteel_floor()) - src.icon_state = "damaged[pick(1,2,3,4,5)]" - broken = 1 - else if(is_plasteel_floor()) - src.icon_state = "light_broken" - broken = 1 - else if(is_plating()) - src.icon_state = "platingdmg[pick(1,2,3)]" - broken = 1 - else if(is_grass_floor()) - src.icon_state = "sand[pick("1","2","3")]" - broken = 1 - -/turf/simulated/floor/proc/burn_tile() - if(istype(src,/turf/simulated/floor/engine)) return - if(broken || burnt) return - if(is_plasteel_floor()) - src.icon_state = "damaged[pick(1,2,3,4,5)]" - burnt = 1 - else if(is_plasteel_floor()) - src.icon_state = "floorscorched[pick(1,2)]" - burnt = 1 - else if(is_plating()) - src.icon_state = "panelscorched" - burnt = 1 - else if(is_grass_floor()) - src.icon_state = "sand[pick("1","2","3")]" - burnt = 1 - -//This proc will delete the floor_tile and the update_iocn() proc will then change the icon_state of the turf -//This proc auto corrects the grass tiles' siding. -/turf/simulated/floor/proc/make_plating() - if(istype(src,/turf/simulated/floor/engine)) return - - if(is_grass_floor()) - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - - if(!floor_tile) return - del(floor_tile) - icon_plating = "plating" - sd_SetLuminosity(0) - floor_tile = null - intact = 0 - broken = 0 - burnt = 0 - - update_icon() - levelupdate() - -//This proc will make the turf a plasteel floor tile. The expected argument is the tile to make the turf with -//If none is given it will make a new object. dropping or unequipping must be handled before or after calling -//this proc. -/turf/simulated/floor/proc/make_plasteel_floor(var/obj/item/stack/tile/plasteel/T = null) - broken = 0 - burnt = 0 - intact = 1 - sd_SetLuminosity(0) - if(T) - if(istype(T,/obj/item/stack/tile/plasteel)) - floor_tile = T - if (icon_regular_floor) - icon_state = icon_regular_floor - else - icon_state = "floor" - icon_regular_floor = icon_state - update_icon() - levelupdate() - return - //if you gave a valid parameter, it won't get thisf ar. - floor_tile = new/obj/item/stack/tile/plasteel - icon_state = "floor" - icon_regular_floor = icon_state - - update_icon() - levelupdate() - -//This proc will make the turf a light floor tile. The expected argument is the tile to make the turf with -//If none is given it will make a new object. dropping or unequipping must be handled before or after calling -//this proc. -/turf/simulated/floor/proc/make_light_floor(var/obj/item/stack/tile/light/T = null) - broken = 0 - burnt = 0 - intact = 1 - if(T) - if(istype(T,/obj/item/stack/tile/light)) - floor_tile = T - update_icon() - levelupdate() - return - //if you gave a valid parameter, it won't get thisf ar. - floor_tile = new/obj/item/stack/tile/light - - update_icon() - levelupdate() - -//This proc will make a turf into a grass patch. Fun eh? Insert the grass tile to be used as the argument -//If no argument is given a new one will be made. -/turf/simulated/floor/proc/make_grass_floor(var/obj/item/stack/tile/grass/T = null) - broken = 0 - burnt = 0 - intact = 1 - if(T) - if(istype(T,/obj/item/stack/tile/grass)) - floor_tile = T - update_icon() - levelupdate() - return - //if you gave a valid parameter, it won't get thisf ar. - floor_tile = new/obj/item/stack/tile/grass - - update_icon() - levelupdate() - -/turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) - - if(!C || !user) - return 0 - - if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles - if(is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - if(T.state) - user.unEquip(C) - del(C) - T.state = C //fixing it by bashing it with a light bulb, fun eh? - update_icon() - user << "\blue You replace the light bulb." - else - user << "\blue The lightbulb seems fine, no need to replace it." - - if(istype(C, /obj/item/weapon/crowbar) && (!(is_plating()))) - if(broken || burnt) - user << "\red You remove the broken plating." - else - user << "\red You remove the [floor_tile.name]." - new floor_tile.type(src) - - make_plating() - playsound(src.loc, 'sound/items/Crowbar.ogg', 80, 1) - - return - - if(istype(C, /obj/item/stack/rods)) - var/obj/item/stack/rods/R = C - if (is_plating()) - if (R.amount >= 2) - user << "\blue Reinforcing the floor..." - if(do_after(user, 30) && R && R.amount >= 2 && is_plating()) - ReplaceWithEngineFloor() - playsound(src.loc, 'sound/items/Deconstruct.ogg', 80, 1) - R.use(2) - return - else - user << "\red You need more rods." - else - user << "\red You must remove the plating first." - return - - if(istype(C, /obj/item/stack/tile)) - if(is_plating()) - if(!broken && !burnt) - var/obj/item/stack/tile/T = C - floor_tile = new T.type - intact = 1 - if(istype(T,/obj/item/stack/tile/light)) - var/obj/item/stack/tile/light/L = T - var/obj/item/stack/tile/light/F = floor_tile - F.state = L.state - F.on = L.on - if(istype(T,/obj/item/stack/tile/grass)) - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding gets updated properly - T.use(1) - update_icon() - levelupdate() - playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) - else - user << "\blue This section is too damaged to support a tile. Use a welder to fix the damage." - - - if(istype(C, /obj/item/stack/cable_coil)) - if(is_plating()) - var/obj/item/stack/cable_coil/coil = C - coil.turf_place(src, user) - else - user << "\red You must remove the plating first." - - if(istype(C, /obj/item/weapon/shovel)) - if(is_grass_floor()) - new /obj/item/weapon/ore/glass(src) - new /obj/item/weapon/ore/glass(src) //Make some sand if you shovel grass - user << "\blue You shovel the grass." - make_plating() - else - user << "\red You cannot shovel this." - - if(istype(C, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/welder = C - if(welder.welding && (is_plating())) - if(broken || burnt) - if(welder.remove_fuel(0,user)) - user << "\red You fix some dents on the broken plating." - playsound(src.loc, 'sound/items/Welder.ogg', 80, 1) - icon_state = "plating" - burnt = 0 - broken = 0 - else - user << "\blue You need more welding fuel to complete this task." - -/turf/unsimulated/floor/attack_paw(user as mob) - return src.attack_hand(user) - -/turf/unsimulated/floor/attack_hand(var/mob/user as mob) - if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) - return - if (user.pulling.anchored) - return - if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) - return - if (ismob(user.pulling)) - var/mob/M = user.pulling - var/mob/t = M.pulling - M.stop_pulling() - step(user.pulling, get_dir(user.pulling.loc, src)) - M.start_pulling(t) - else - step(user.pulling, get_dir(user.pulling.loc, src)) - return - -// imported from space.dm - -/turf/space/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/turf/space/attack_hand(mob/user as mob) - if ((user.restrained() || !( user.pulling ))) - return - if (user.pulling.anchored) - return - if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) - return - if (ismob(user.pulling)) - var/mob/M = user.pulling - var/atom/movable/t = M.pulling - M.stop_pulling() - step(user.pulling, get_dir(user.pulling.loc, src)) - M.start_pulling(t) - else - step(user.pulling, get_dir(user.pulling.loc, src)) - return - -/turf/space/attackby(obj/item/C as obj, mob/user as mob) - - if (istype(C, /obj/item/stack/rods)) - var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) - if(L) - return - var/obj/item/stack/rods/R = C - user << "\blue Constructing support lattice ..." - playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) - ReplaceWithLattice() - R.use(1) - return - - if (istype(C, /obj/item/stack/tile/plasteel)) - var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) - if(L) - var/obj/item/stack/tile/plasteel/S = C - del(L) - playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) - S.build(src) - S.use(1) - return - else - user << "\red The plating is going to need some support." - return - - -// Ported from unstable r355 - -/turf/space/Entered(atom/movable/A as mob|obj) - ..() - if ((!(A) || src != A.loc || istype(null, /obj/effect/beam))) return - - inertial_drift(A) - - if(ticker && ticker.mode) - - // Okay, so let's make it so that people can travel z levels but not nuke disks! - // if(ticker.mode.name == "nuclear emergency") return - - if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") - Sandbox_Spacemove(A) - - else - if (src.x <= 2 || A.x >= (world.maxx - 1) || src.y <= 2 || A.y >= (world.maxy - 1)) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) - return - - if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels ... And moving this shit down here so it only fires when they're actually trying to change z-level. - return - - if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) - if(istype(A, /mob/living)) - var/mob/living/MM = A - if(MM.client) - MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." - return - - - - var/move_to_z_str = pickweight(accessable_z_levels) - - var/move_to_z = text2num(move_to_z_str) - - if(!move_to_z) - return - - - - A.z = move_to_z - - - if(src.x <= 2) - A.x = world.maxx - 2 - - else if (A.x >= (world.maxx - 1)) - A.x = 3 - - else if (src.y <= 2) - A.y = world.maxy - 2 - - else if (A.y >= (world.maxy - 1)) - A.y = 3 - - spawn (0) - if ((A && A.loc)) - A.loc.Entered(A) - -// if(istype(A, /obj/structure/closet/coffin)) -// coffinhandler.Add(A) - -/turf/space/proc/Sandbox_Spacemove(atom/movable/A as mob|obj) - var/cur_x - var/cur_y - var/next_x - var/next_y - var/target_z - var/list/y_arr - - if(src.x <= 1) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) - return - - var/list/cur_pos = src.get_global_map_pos() - if(!cur_pos) return - cur_x = cur_pos["x"] - cur_y = cur_pos["y"] - next_x = (--cur_x||global_map.len) - y_arr = global_map[next_x] - target_z = y_arr[cur_y] -/* - //debug - world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" - world << "Target Z = [target_z]" - world << "Next X = [next_x]" - //debug -*/ - if(target_z) - A.z = target_z - A.x = world.maxx - 2 - spawn (0) - if ((A && A.loc)) - A.loc.Entered(A) - else if (src.x >= world.maxx) - if(istype(A, /obj/effect/meteor)) - del(A) - return - - var/list/cur_pos = src.get_global_map_pos() - if(!cur_pos) return - cur_x = cur_pos["x"] - cur_y = cur_pos["y"] - next_x = (++cur_x > global_map.len ? 1 : cur_x) - y_arr = global_map[next_x] - target_z = y_arr[cur_y] -/* - //debug - world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" - world << "Target Z = [target_z]" - world << "Next X = [next_x]" - //debug -*/ - if(target_z) - A.z = target_z - A.x = 3 - spawn (0) - if ((A && A.loc)) - A.loc.Entered(A) - else if (src.y <= 1) - if(istype(A, /obj/effect/meteor)) - del(A) - return - var/list/cur_pos = src.get_global_map_pos() - if(!cur_pos) return - cur_x = cur_pos["x"] - cur_y = cur_pos["y"] - y_arr = global_map[cur_x] - next_y = (--cur_y||y_arr.len) - target_z = y_arr[next_y] -/* - //debug - world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" - world << "Next Y = [next_y]" - world << "Target Z = [target_z]" - //debug -*/ - if(target_z) - A.z = target_z - A.y = world.maxy - 2 - spawn (0) - if ((A && A.loc)) - A.loc.Entered(A) - - else if (src.y >= world.maxy) - if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) - return - var/list/cur_pos = src.get_global_map_pos() - if(!cur_pos) return - cur_x = cur_pos["x"] - cur_y = cur_pos["y"] - y_arr = global_map[cur_x] - next_y = (++cur_y > y_arr.len ? 1 : cur_y) - target_z = y_arr[next_y] -/* - //debug - world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" - world << "Next Y = [next_y]" - world << "Target Z = [target_z]" - //debug -*/ - if(target_z) - A.z = target_z - A.y = 3 - spawn (0) - if ((A && A.loc)) - A.loc.Entered(A) - return - -/obj/effect/vaultspawner - var/maxX = 6 - var/maxY = 6 - var/minX = 2 - var/minY = 2 - -/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY,var/type = null) - if(!type) - type = pick("sandstone","rock","alien") - - var/lowBoundX = location.x - var/lowBoundY = location.y - - var/hiBoundX = location.x + rand(lX,uX) - var/hiBoundY = location.y + rand(lY,uY) - - var/z = location.z - - for(var/i = lowBoundX,i<=hiBoundX,i++) - for(var/j = lowBoundY,j<=hiBoundY,j++) - if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY) - new /turf/simulated/wall/vault(locate(i,j,z),type) - else - new /turf/simulated/floor/vault(locate(i,j,z),type) - - del(src) - -/turf/proc/kill_creatures(mob/U = null)//Will kill people/creatures and damage mechs./N -//Useful to batch-add creatures to the list. - for(var/mob/living/M in src) - if(M==U) continue//Will not harm U. Since null != M, can be excluded to kill everyone. - spawn(0) - M.gib() - for(var/obj/mecha/M in src)//Mecha are not gibbed but are damaged. - spawn(0) - M.take_damage(100, "brute") - for(var/obj/effect/critter/M in src) - spawn(0) - M.Die() - -/turf/proc/Bless() - if(flags & NOJAUNT) - return - flags |= NOJAUNT +/* +/obj/vehicle/airtight + //inner atmos + var/use_internal_tank = 0 + var/internal_tank_valve = ONE_ATMOSPHERE + var/obj/machinery/portable_atmospherics/canister/internal_tank + var/datum/gas_mixture/cabin_air + var/obj/machinery/atmospherics/portables_connector/connected_port = null + + var/datum/global_iterator/pr_int_temp_processor //normalizes internal air mixture temperature + var/datum/global_iterator/pr_give_air //moves air from tank to cabin + + +/obj/vehicle/airtight/New() + ..() + src.add_airtank() + src.add_cabin() + src.add_airtight_iterators() + + + + +//######################################### Helpers for airtight vehicles ######################################### + +/obj/vehicle/airtight/proc/add_cabin() + cabin_air = new + cabin_air.temperature = T20C + cabin_air.volume = 200 + cabin_air.oxygen = O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) + cabin_air.nitrogen = N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) + return cabin_air + +/obj/vehicle/airtight/proc/add_airtank() + internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) + return internal_tank + +/obj/vehicle/airtight/proc/add_airtight_iterators() + pr_int_temp_processor = new /datum/global_iterator/vehicle_preserve_temp(list(src)) + pr_give_air = new /datum/global_iterator/vehicle_tank_give_air(list(src)) + + +//######################################### Specific datums for airtight vehicles ################################# + + +/datum/global_iterator/vehicle_preserve_temp //normalizing cabin air temperature to 20 degrees celsium + delay = 20 + + process(var/obj/vehicle/airtight/V) + if(V.cabin_air && V.cabin_air.return_volume() > 0) + var/delta = V.cabin_air.temperature - T20C + V.cabin_air.temperature -= max(-10, min(10, round(delta/4,0.1))) + return + + +/datum/global_iterator/vehicle_tank_give_air + delay = 15 + + process(var/obj/vehicle/airtight/V) + if(V.internal_tank) + var/datum/gas_mixture/tank_air = V.internal_tank.return_air() + var/datum/gas_mixture/cabin_air = V.cabin_air + + var/release_pressure = V.internal_tank_valve + var/cabin_pressure = cabin_air.return_pressure() + var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) + var/transfer_moles = 0 + if(pressure_delta > 0) //cabin pressure lower than release pressure + if(tank_air.return_temperature() > 0) + transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) + cabin_air.merge(removed) + else if(pressure_delta < 0) //cabin pressure higher than release pressure + var/datum/gas_mixture/t_air = V.get_turf_air() + pressure_delta = cabin_pressure - release_pressure + if(t_air) + pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) + if(pressure_delta > 0) //if location pressure is lower than cabin pressure + transfer_moles = pressure_delta*cabin_air.return_volume()/(cabin_air.return_temperature() * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) + if(t_air) + t_air.merge(removed) + else //just delete the cabin gas, we're in space or some shit + del(removed) + else + return stop() + return + + +//######################################### Atmospherics for vehicles ############################################# + + +/obj/vehicle/proc/get_turf_air() + var/turf/T = get_turf(src) + if(T) + . = T.return_air() + return + +/obj/vehicle/airtight/remove_air(amount) + if(use_internal_tank) + return cabin_air.remove(amount) + else + var/turf/T = get_turf(src) + if(T) + return T.remove_air(amount) + return + +/obj/vehicle/airtight/return_air() + if(use_internal_tank) + return cabin_air + return get_turf_air() + +/obj/vehicle/airtight/proc/return_pressure() + . = 0 + if(use_internal_tank) + . = cabin_air.return_pressure() + else + var/datum/gas_mixture/t_air = get_turf_air() + if(t_air) + . = t_air.return_pressure() + return + + +/obj/vehicle/airtight/proc/return_temperature() + . = 0 + if(use_internal_tank) + . = cabin_air.return_temperature() + else + var/datum/gas_mixture/t_air = get_turf_air() + if(t_air) + . = t_air.return_temperature() + return + +/obj/vehicle/airtight/proc/connect(obj/machinery/atmospherics/portables_connector/new_port) + //Make sure not already connected to something else + if(connected_port || !new_port || new_port.connected_device) + return 0 + + //Make sure are close enough for a valid connection + if(new_port.loc != src.loc) + return 0 + + //Perform the connection + connected_port = new_port + connected_port.connected_device = src + + //Actually enforce the air sharing + var/datum/pipe_network/network = connected_port.return_network(src) + if(network && !(internal_tank.return_air() in network.gases)) + network.gases += internal_tank.return_air() + network.update = 1 + log_message("Vehicle airtank connected to external port.") + return 1 + +/obj/vehicle/airtight/proc/disconnect() + if(!connected_port) + return 0 + + var/datum/pipe_network/network = connected_port.return_network(src) + if(network) + network.gases -= internal_tank.return_air() + + connected_port.connected_device = null + connected_port = null + src.log_message("Vehicle airtank disconnected from external port.") + return 1 + + + + +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// + + + +/obj/vehicle + name = "Vehicle" + icon = 'icons/vehicles/vehicles.dmi' + density = 1 + anchored = 1 + unacidable = 1 //To avoid the pilot-deleting shit that came with mechas + layer = MOB_LAYER + //var/can_move = 1 + var/mob/living/carbon/occupant = null + //var/step_in = 10 //make a step in step_in/10 sec. + //var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South. + //var/step_energy_drain = 10 + var/health = 300 //health is health + //var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. + //the values in this list show how much damage will pass through, not how much will be absorbed. + var/list/damage_absorption = list("brute"=0.8,"fire"=1.2,"bullet"=0.9,"laser"=1,"energy"=1,"bomb"=1) + var/obj/item/weapon/stock_parts/cell/cell //Our power source + var/state = 0 + var/list/log = new + var/last_message = 0 + var/add_req_access = 1 + var/maint_access = 1 + //var/dna //dna-locking the mech + var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference + var/datum/effect/effect/system/spark_spread/spark_system = new + var/lights = 0 + var/lights_power = 6 + + //inner atmos //These go in airtight.dm, not all vehicles are space-faring -Agouri + //var/use_internal_tank = 0 + //var/internal_tank_valve = ONE_ATMOSPHERE + //var/obj/machinery/portable_atmospherics/canister/internal_tank + //var/datum/gas_mixture/cabin_air + //var/obj/machinery/atmospherics/portables_connector/connected_port = null + + var/obj/item/device/radio/radio = null + + var/max_temperature = 2500 + //var/internal_damage_threshold = 50 //health percentage below which internal damage is possible + var/internal_damage = 0 //contains bitflags + + var/list/operation_req_access = list()//required access level for mecha operation + var/list/internals_req_access = list(access_engine,access_robotics)//required access level to open cell compartment + + //var/datum/global_iterator/pr_int_temp_processor //normalizes internal air mixture temperature //In airtight.dm you go -Agouri + var/datum/global_iterator/pr_inertial_movement //controls intertial movement in spesss + + //var/datum/global_iterator/pr_give_air //moves air from tank to cabin //Y-you too -Agouri + + var/datum/global_iterator/pr_internal_damage //processes internal damage + + + var/wreckage + + var/list/equipment = new + var/obj/selected + //var/max_equip = 3 + + var/datum/events/events + + + +/obj/vehicle/New() + ..() + events = new + icon_state += "-unmanned" + add_radio() + //add_cabin() //No cabin for non-airtights + + spark_system.set_up(2, 0, src) + spark_system.attach(src) + add_cell() + add_iterators() + removeVerb(/obj/mecha/verb/disconnect_from_port) + removeVerb(/atom/movable/verb/pull) + log_message("[src.name]'s functions initialised. Work protocols active - Entering IDLE mode.") + loc.Entered(src) + return + + +//################ Helpers ########################################################### + + +/obj/vehicle/proc/removeVerb(verb_path) + verbs -= verb_path + +/obj/vehicle/proc/addVerb(verb_path) + verbs += verb_path + +/*/obj/vehicle/proc/add_airtank() //In airtight.dm -Agouri + internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) + return internal_tank*/ + +/obj/vehicle/proc/add_cell(var/obj/item/weapon/stock_parts/cell/C=null) + if(C) + C.forceMove(src) + cell = C + return + cell = new(src) + cell.charge = 15000 + cell.maxcharge = 15000 + +/*/obj/vehicle/proc/add_cabin() //In airtight.dm -Agouri + cabin_air = new + cabin_air.temperature = T20C + cabin_air.volume = 200 + cabin_air.oxygen = O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) + cabin_air.nitrogen = N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature) + return cabin_air*/ + +/obj/vehicle/proc/add_radio() + radio = new(src) + radio.name = "[src] radio" + radio.icon = icon + radio.icon_state = icon_state + radio.subspace_transmission = 1 + +/obj/vehicle/proc/add_iterators() + pr_inertial_movement = new /datum/global_iterator/vehicle_intertial_movement(null,0) + //pr_internal_damage = new /datum/global_iterator/vehicle_internal_damage(list(src),0) + //pr_int_temp_processor = new /datum/global_iterator/vehicle_preserve_temp(list(src)) //In airtight.dm's add_airtight_iterators -Agouri + //pr_give_air = new /datum/global_iterator/vehicle_tank_give_air(list(src) //Same here -Agouri + +/obj/vehicle/proc/check_for_support() + if(locate(/obj/structure/grille, orange(1, src)) || locate(/obj/structure/lattice, orange(1, src)) || locate(/turf/simulated, orange(1, src)) || locate(/turf/unsimulated, orange(1, src))) + return 1 + else + return 0 + +//################ Logs and messages ############################################ + + +/obj/vehicle/proc/log_message(message as text,red=null) + log.len++ + log[log.len] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") + return log.len + + + +//################ Global Iterator Datums ###################################### + + +/datum/global_iterator/vehicle_intertial_movement //inertial movement in space + delay = 7 + + process(var/obj/vehicle/V as obj, direction) + if(direction) + if(!step(V, direction)||V.check_for_support()) + src.stop() + else + src.stop() + return + + +/datum/global_iterator/mecha_internal_damage // processing internal damage + + process(var/obj/mecha/mecha) + if(!mecha.hasInternalDamage()) + return stop() + if(mecha.hasInternalDamage(MECHA_INT_FIRE)) + if(!mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL) && prob(5)) + mecha.clearInternalDamage(MECHA_INT_FIRE) + if(mecha.internal_tank) + if(mecha.internal_tank.return_pressure()>mecha.internal_tank.maximum_pressure && !(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH))) + mecha.setInternalDamage(MECHA_INT_TANK_BREACH) + var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() + if(int_tank_air && int_tank_air.return_volume()>0) //heat the air_contents + int_tank_air.temperature = min(6000+T0C, int_tank_air.temperature+rand(10,15)) + if(mecha.cabin_air && mecha.cabin_air.return_volume()>0) + mecha.cabin_air.temperature = min(6000+T0C, mecha.cabin_air.return_temperature()+rand(10,15)) + if(mecha.cabin_air.return_temperature()>mecha.max_temperature/2) + mecha.take_damage(4/round(mecha.max_temperature/mecha.cabin_air.return_temperature(),0.1),"fire") + if(mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL)) //stop the mecha_preserve_temp loop datum + mecha.pr_int_temp_processor.stop() + if(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH)) //remove some air from internal tank + if(mecha.internal_tank) + var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() + var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.10) + if(mecha.loc && hascall(mecha.loc,"assume_air")) + mecha.loc.assume_air(leaked_gas) + else + del(leaked_gas) + if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) + if(mecha.get_charge()) + mecha.spark_system.start() + mecha.cell.charge -= min(20,mecha.cell.charge) + mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) + return + + +*/ + + + + + +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// +///////////////////////////////////////////////////////// + + + + +/*/turf/DblClick() + if(istype(usr, /mob/living/silicon/ai)) + return move_camera_by_click() + if(usr.stat || usr.restrained() || usr.lying) + return ..() + + if(usr.hand && istype(usr.l_hand, /obj/item/weapon/flamethrower)) + var/turflist = getline(usr,src) + var/obj/item/weapon/flamethrower/F = usr.l_hand + F.flame_turf(turflist) + else if(!usr.hand && istype(usr.r_hand, /obj/item/weapon/flamethrower)) + var/turflist = getline(usr,src) + var/obj/item/weapon/flamethrower/F = usr.r_hand + F.flame_turf(turflist) + + return ..() + +/turf/New() + ..() + for(var/atom/movable/AM as mob|obj in src) + spawn( 0 ) + src.Entered(AM) + return + return + +/turf/ex_act(severity) + return 0 + + +/turf/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj ,/obj/item/projectile/beam/pulse)) + src.ex_act(2) + ..() + return 0 + +/turf/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj ,/obj/item/projectile/bullet/gyro)) + explosion(src, -1, 0, 2) + ..() + return 0 + +/turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area) + if (!mover || !isturf(mover.loc)) + return 1 + + + //First, check objects to block exit that are not on the border + for(var/obj/obstacle in mover.loc) + if((obstacle.flags & ~ON_BORDER) && (mover != obstacle) && (forget != obstacle)) + if(!obstacle.CheckExit(mover, src)) + mover.Bump(obstacle, 1) + return 0 + + //Now, check objects to block exit that are on the border + for(var/obj/border_obstacle in mover.loc) + if((border_obstacle.flags & ON_BORDER) && (mover != border_obstacle) && (forget != border_obstacle)) + if(!border_obstacle.CheckExit(mover, src)) + mover.Bump(border_obstacle, 1) + return 0 + + //Next, check objects to block entry that are on the border + for(var/obj/border_obstacle in src) + if(border_obstacle.flags & ON_BORDER) + if(!border_obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != border_obstacle)) + mover.Bump(border_obstacle, 1) + return 0 + + //Then, check the turf itself + if (!src.CanPass(mover, src)) + mover.Bump(src, 1) + return 0 + + //Finally, check objects/mobs to block entry that are not on the border + for(var/atom/movable/obstacle in src) + if(obstacle.flags & ~ON_BORDER) + if(!obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != obstacle)) + mover.Bump(obstacle, 1) + return 0 + return 1 //Nothing found to block so return success! + + +/turf/Entered(atom/movable/M as mob|obj) + var/loopsanity = 100 + if(ismob(M)) + if(!M:lastarea) + M:lastarea = get_area(M.loc) + if(M:lastarea.has_gravity == 0) + inertial_drift(M) + + /* + if(M.flags & NOGRAV) + inertial_drift(M) + */ + + + + else if(!istype(src, /turf/space)) + M:inertia_dir = 0 + ..() + var/objects = 0 + for(var/atom/A as mob|obj|turf|area in src) + if(objects > loopsanity) break + objects++ + spawn( 0 ) + if ((A && M)) + A.HasEntered(M, 1) + return + objects = 0 + for(var/atom/A as mob|obj|turf|area in range(1)) + if(objects > loopsanity) break + objects++ + spawn( 0 ) + if ((A && M)) + A.HasProximity(M, 1) + return + return + +/turf/proc/inertial_drift(atom/movable/A as mob|obj) + if(!(A.last_move)) return + if((istype(A, /mob/) && src.x > 2 && src.x < (world.maxx - 1) && src.y > 2 && src.y < (world.maxy-1))) + var/mob/M = A + if(M.Process_Spacemove(1)) + M.inertia_dir = 0 + return + spawn(5) + if((M && !(M.anchored) && (M.loc == src))) + if(M.inertia_dir) + step(M, M.inertia_dir) + return + M.inertia_dir = M.last_move + step(M, M.inertia_dir) + return + +/turf/proc/levelupdate() + for(var/obj/O in src) + if(O.level == 1) + O.hide(src.intact) + +// override for space turfs, since they should never hide anything +/turf/space/levelupdate() + for(var/obj/O in src) + if(O.level == 1) + O.hide(0) + +// Removes all signs of lattice on the pos of the turf -Donkieyo +/turf/proc/RemoveLattice() + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + if(L) + del L + +/turf/proc/ReplaceWithFloor(explode=0) + var/prior_icon = icon_old + var/old_dir = dir + + var/turf/simulated/floor/W = new /turf/simulated/floor( locate(src.x, src.y, src.z) ) + + W.RemoveLattice() + W.dir = old_dir + if(prior_icon) W.icon_state = prior_icon + else W.icon_state = "floor" + + if (!explode) + W.opacity = 1 + W.sd_SetOpacity(0) + //This is probably gonna make lighting go a bit wonky in bombed areas, but sd_SetOpacity was the primary reason bombs have been so laggy. --NEO + W.levelupdate() + return W + +/turf/proc/ReplaceWithPlating() + var/prior_icon = icon_old + var/old_dir = dir + + var/turf/simulated/floor/plating/W = new /turf/simulated/floor/plating( locate(src.x, src.y, src.z) ) + + W.RemoveLattice() + W.dir = old_dir + if(prior_icon) W.icon_state = prior_icon + else W.icon_state = "plating" + W.opacity = 1 + W.sd_SetOpacity(0) + W.levelupdate() + return W + +/turf/proc/ReplaceWithEngineFloor() + var/old_dir = dir + + var/turf/simulated/floor/engine/E = new /turf/simulated/floor/engine( locate(src.x, src.y, src.z) ) + + E.dir = old_dir + E.icon_state = "engine" + +/turf/simulated/Entered(atom/A, atom/OL) + if (istype(A,/mob/living/carbon)) + var/mob/living/carbon/M = A + if(M.lying) return + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(istype(H.shoes, /obj/item/clothing/shoes/clown_shoes)) + if(H.m_intent == "run") + if(H.footstep >= 2) + H.footstep = 0 + else + H.footstep++ + if(H.footstep == 0) + playsound(src, "clownstep", 50, 1) // this will get annoying very fast. + else + playsound(src, "clownstep", 20, 1) + + switch (src.wet) + if(1) + if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes + if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) + M.stop_pulling() + step(M, M.dir) + M << "\blue You slipped on the wet floor!" + playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) + M.Stun(8) + M.Weaken(5) + else + M.inertia_dir = 0 + return + else if(!istype(M, /mob/living/carbon/slime)) + if (M.m_intent == "run") + M.stop_pulling() + step(M, M.dir) + M << "\blue You slipped on the wet floor!" + playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) + M.Stun(8) + M.Weaken(5) + else + M.inertia_dir = 0 + return + + if(2) //lube + if(!istype(M, /mob/living/carbon/slime)) + M.stop_pulling() + step(M, M.dir) + spawn(1) step(M, M.dir) + spawn(2) step(M, M.dir) + spawn(3) step(M, M.dir) + spawn(4) step(M, M.dir) + M.take_organ_damage(2) + M << "\blue You slipped on the floor!" + playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) + M.Weaken(10) + + ..() + +/turf/proc/ReplaceWithSpace() + var/old_dir = dir + var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + S.dir = old_dir + return S + +/turf/proc/ReplaceWithLattice() + var/old_dir = dir + var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) ) + S.dir = old_dir + new /obj/structure/lattice( locate(src.x, src.y, src.z) ) + return S + +/turf/proc/ReplaceWithWall() + var/old_icon = icon_state + var/turf/simulated/wall/S = new /turf/simulated/wall( locate(src.x, src.y, src.z) ) + S.icon_old = old_icon + S.opacity = 0 + S.sd_NewOpacity(1) + return S + +/turf/proc/ReplaceWithRWall() + var/old_icon = icon_state + var/turf/simulated/wall/r_wall/S = new /turf/simulated/wall/r_wall( locate(src.x, src.y, src.z) ) + S.icon_old = old_icon + S.opacity = 0 + S.sd_NewOpacity(1) + return S + +/turf/simulated/wall/New() + ..() + +/turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0) + if(istype(src,/turf/simulated/wall/r_wall)) + if(!devastated) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + new /obj/structure/girder/reinforced(src) + new /obj/item/stack/sheet/plasteel( src ) + else + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/plasteel( src ) + else if(istype(src,/turf/simulated/wall/cult)) + if(!devastated) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + new /obj/effect/decal/remains/human(src) + else + new /obj/effect/decal/remains/human(src) + + else + if(!devastated) + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + new /obj/structure/girder(src) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + else + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + + ReplaceWithPlating(explode) + +/turf/simulated/wall/examine() + set src in oview(1) + + usr << "It looks like a regular wall." + return + +/turf/simulated/wall/ex_act(severity) + switch(severity) + if(1.0) + //SN src = null + src.ReplaceWithSpace() + del(src) + return + if(2.0) + if (prob(50)) + dismantle_wall(0,1) + else + dismantle_wall(1,1) + if(3.0) + var/proba + if (istype(src, /turf/simulated/wall/r_wall)) + proba = 15 + else + proba = 40 + if (prob(proba)) + dismantle_wall(0,1) + else + return + +/turf/simulated/wall/blob_act() + if(prob(50)) + dismantle_wall() + +/turf/simulated/wall/attack_paw(mob/user as mob) + if ((user.mutations & HULK)) + if (prob(40)) + usr << text("\blue You smash through the wall.") + dismantle_wall(1) + return + else + usr << text("\blue You punch the wall.") + return + + return src.attack_hand(user) + + +/turf/simulated/wall/attack_animal(mob/living/simple_animal/M as mob) + if(M.wall_smash) + if (istype(src, /turf/simulated/wall/r_wall)) + M << text("\blue This wall is far too strong for you to destroy.") + return + else + if (prob(40)) + M << text("\blue You smash through the wall.") + dismantle_wall(1) + return + else + M << text("\blue You smash against the wall.") + return + + M << "\blue You push the wall but nothing happens!" + return + +/turf/simulated/wall/attack_hand(mob/user as mob) + if ((user.mutations & HULK)) + if (prob(40)) + usr << text("\blue You smash through the wall.") + dismantle_wall(1) + return + else + usr << text("\blue You punch the wall.") + return + + user << "\blue You push the wall but nothing happens!" + playsound(src.loc, 'sound/weapons/Genhit.ogg', 25, 1) + src.add_fingerprint(user) + return + +/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) + + if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + + if (istype(W, /obj/item/weapon/weldingtool) && W:welding) + var/turf/T = get_turf(user) + if (!( istype(T, /turf) )) + return + + if (thermite) + var/obj/effect/overlay/O = new/obj/effect/overlay( src ) + O.name = "Thermite" + O.desc = "Looks hot." + O.icon = 'icons/effects/fire.dmi' + O.icon_state = "2" + O.anchored = 1 + O.density = 1 + O.layer = 5 + var/turf/simulated/floor/F = ReplaceWithPlating() + F.burn_tile() + F.icon_state = "wall_thermite" + user << "\red The thermite melts the wall." + spawn(100) del(O) + F.sd_LumReset() + return + + if (W:remove_fuel(0,user)) + W:welding = 2 + user << "\blue Now disassembling the outer wall plating." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(100) + if (W && istype(src, /turf/simulated/wall)) + if ((get_turf(user) == T && user.equipped() == W)) + user << "\blue You disassembled the outer wall plating." + dismantle_wall() + W:welding = 1 + else + user << "\blue You need more welding fuel to complete this task." + return + + else if (istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + var/turf/T = user.loc + if (!( istype(T, /turf) )) + return + + if (thermite) + var/obj/effect/overlay/O = new/obj/effect/overlay( src ) + O.name = "Thermite" + O.desc = "Looks hot." + O.icon = 'icons/effects/fire.dmi' + O.icon_state = "2" + O.anchored = 1 + O.density = 1 + O.layer = 5 + var/turf/simulated/floor/F = ReplaceWithPlating() + F.burn_tile() + F.icon_state = "wall_thermite" + user << "\red The thermite melts the wall." + spawn(100) del(O) + F.sd_LumReset() + return + + else + user << "\blue Now disassembling the outer wall plating." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(60) + if (W && istype(src, /turf/simulated/wall)) + if ((get_turf(user) == T && user.equipped() == W)) + user << "\blue You disassembled the outer wall plating." + dismantle_wall() + for(var/mob/O in viewers(user, 5)) + O.show_message(text("\blue The wall was sliced apart by []!", user), 1, text("\red You hear metal being sliced apart."), 2) + return + + else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + var/turf/T = user.loc + user << "\blue Now drilling through wall." + sleep(60) + if (W && istype(src, /turf/simulated/wall)) + if ((user.loc == T && user.equipped() == W)) + dismantle_wall(1) + for(var/mob/O in viewers(user, 5)) + O.show_message(text("\blue The wall was drilled apart by []!", user), 1, text("\red You hear metal being drilled appart."), 2) + return + + else if(istype(W, /obj/item/weapon/melee/energy/blade)) + var/turf/T = user.loc + user << "\blue Now slicing through wall." + W:spark_system.start() + playsound(src.loc, "sparks", 50, 1) + sleep(70) + if (W && istype(src, /turf/simulated/wall)) + if ((user.loc == T && user.equipped() == W)) + W:spark_system.start() + playsound(src.loc, "sparks", 50, 1) + playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) + dismantle_wall(1) + for(var/mob/O in viewers(user, 5)) + O.show_message(text("\blue The wall was sliced apart by []!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) + return + + else if(istype(W,/obj/item/apc_frame)) + var/obj/item/apc_frame/AH = W + AH.try_build(src) + else if(istype(W,/obj/item/weapon/contraband/poster)) + var/obj/item/weapon/contraband/poster/P = W + if(P.resulting_poster) + var/check = 0 + var/stuff_on_wall = 0 + for( var/obj/O in src.contents) //Let's see if it already has a poster on it or too much stuff + if(istype(O,/obj/effect/decal/poster)) + check = 1 + break + stuff_on_wall++ + if(stuff_on_wall==3) + check = 1 + break + + if(check) + user << "The wall is far too cluttered to place a poster!" + return + + user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. + + P.resulting_poster.loc = src + var/temp = P.resulting_poster.icon_state + var/temp_loc = user.loc + P.resulting_poster.icon_state = "poster_being_set" + playsound(P.resulting_poster.loc, 'sound/items/poster_being_created.ogg', 100, 1) + sleep(24) + + if(user.loc == temp_loc)//Let's check if he still is there + user << "You place the poster!" + P.resulting_poster.icon_state = temp + src.contents += P.resulting_poster + del(P) + else + user << "You stop placing the poster." + P.resulting_poster.loc = P + P.resulting_poster.icon_state = temp + else + return attack_hand(user) + return + + +/turf/simulated/wall/r_wall/attackby(obj/item/W as obj, mob/user as mob) + + if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + usr << "\red You don't have the dexterity to do this!" + return + + if(!istype(src, /turf/simulated/wall/r_wall)) + return // this may seem stupid and redundant but apparently floors can call this attackby() proc, it was spamming shit up. -- Doohl + + + if (istype(W, /obj/item/weapon/weldingtool) && W:welding) + W:eyecheck(user) + var/turf/T = user.loc + if (!( istype(T, /turf) )) + return + + if (thermite) + var/obj/effect/overlay/O = new/obj/effect/overlay( src ) + O.name = "Thermite" + O.desc = "Looks hot." + O.icon = 'icons/effects/fire.dmi' + O.icon_state = "2" + O.anchored = 1 + O.density = 1 + O.layer = 5 + var/turf/simulated/floor/F = ReplaceWithPlating() + F.burn_tile() + F.icon_state = "wall_thermite" + user << "\red The thermite melts the wall." + spawn(100) del(O) + F.sd_LumReset() + return + + if (src.d_state == 2) + W:welding = 2 + user << "\blue Slicing metal cover." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(60) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 3 + user << "\blue You removed the metal cover." + W:welding = 1 + + else if (src.d_state == 5) + W:welding = 2 + user << "\blue Removing support rods." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(100) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 6 + new /obj/item/stack/rods( src ) + user << "\blue You removed the support rods." + W:welding = 1 + + else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + var/turf/T = user.loc + if (!( istype(T, /turf) )) + return + + if (thermite) + var/obj/effect/overlay/O = new/obj/effect/overlay( src ) + O.name = "Thermite" + O.desc = "Looks hot." + O.icon = 'icons/effects/fire.dmi' + O.icon_state = "2" + O.anchored = 1 + O.density = 1 + O.layer = 5 + var/turf/simulated/floor/F = ReplaceWithPlating() + F.burn_tile() + F.icon_state = "wall_thermite" + user << "\red The thermite melts the wall." + spawn(100) del(O) + F.sd_LumReset() + return + + if (src.d_state == 2) + user << "\blue Slicing metal cover." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(40) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 3 + user << "\blue You removed the metal cover." + + else if (src.d_state == 5) + user << "\blue Removing support rods." + playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) + sleep(70) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 6 + new /obj/item/stack/rods( src ) + user << "\blue You removed the support rods." + + else if(istype(W, /obj/item/weapon/melee/energy/blade)) + user << "\blue This wall is too thick to slice through. You will need to find a different path." + return + + else if (istype(W, /obj/item/weapon/wrench)) + if (src.d_state == 4) + var/turf/T = user.loc + user << "\blue Detaching support rods." + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + sleep(40) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 5 + user << "\blue You detach the support rods." + + else if (istype(W, /obj/item/weapon/wirecutters)) + if (src.d_state == 0) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + src.d_state = 1 + new /obj/item/stack/rods( src ) + + else if (istype(W, /obj/item/weapon/screwdriver)) + if (src.d_state == 1) + var/turf/T = user.loc + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "\blue Removing support lines." + sleep(40) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 2 + user << "\blue You removed the support lines." + + else if (istype(W, /obj/item/weapon/crowbar)) + + if (src.d_state == 3) + var/turf/T = user.loc + user << "\blue Prying cover off." + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + sleep(100) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 4 + user << "\blue You removed the cover." + + else if (src.d_state == 6) + var/turf/T = user.loc + user << "\blue Prying outer sheath off." + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + sleep(100) + if(src) + if ((user.loc == T && user.equipped() == W)) + user << "\blue You removed the outer sheath." + dismantle_wall() + return + + else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + var/turf/T = user.loc + user << "\blue You begin to drill though, this will take some time." + sleep(200) + if(src) + if ((user.loc == T && user.equipped() == W)) + user << "\blue Your drill tears though the reinforced plating." + dismantle_wall() + return + + else if ((istype(W, /obj/item/stack/sheet/metal)) && (src.d_state)) + var/turf/T = user.loc + user << "\blue Repairing wall." + sleep(100) + if ((user.loc == T && user.equipped() == W)) + src.d_state = 0 + src.icon_state = initial(src.icon_state) + user << "\blue You repaired the wall." + if (W:amount > 1) + W:amount-- + else + del(W) + + else if(istype(W,/obj/item/weapon/contraband/poster)) + var/obj/item/weapon/contraband/poster/P = W + if(P.resulting_poster) + var/check = 0 + var/stuff_on_wall = 0 + for( var/obj/O in src.contents) //Let's see if it already has a poster on it or too much stuff + if(istype(O,/obj/effect/decal/poster)) + check = 1 + break + stuff_on_wall++ + if(stuff_on_wall==3) + check = 1 + break + + if(check) + user << "The wall is far too cluttered to place a poster!" + return + + user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. + + P.resulting_poster.loc = src + var/temp = P.resulting_poster.icon_state + var/temp_loc = user.loc + P.resulting_poster.icon_state = "poster_being_set" + playsound(P.resulting_poster.loc, 'sound/items/poster_being_created.ogg', 100, 1) + sleep(24) + + if(user.loc == temp_loc)//Let's check if he still is there + user << "You place the poster!" + P.resulting_poster.icon_state = temp + src.contents += P.resulting_poster + del(P) + else + user << "You stop placing the poster." + P.resulting_poster.loc = P + P.resulting_poster.icon_state = temp + return + + if(istype(W,/obj/item/apc_frame)) + var/obj/item/apc_frame/AH = W + AH.try_build(src) + return + + if(src.d_state > 0) + src.icon_state = "r_wall-[d_state]" + + else + return attack_hand(user) + return + +/turf/simulated/wall/meteorhit(obj/M as obj) + if (prob(15)) + dismantle_wall() + else if(prob(70)) + ReplaceWithPlating() + else + ReplaceWithLattice() + return 0 + + +//This is so damaged or burnt tiles or platings don't get remembered as the default tile +var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","damaged4", + "damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", + "platingdmg3","plating","light_on","light_on_flicker1","light_on_flicker2", + "light_on_clicker3","light_on_clicker4","light_on_clicker5","light_broken", + "light_on_broken","light_off","wall_thermite","grass1","grass2","grass3","grass4", + "asteroid","asteroid_dug", + "asteroid0","asteroid1","asteroid2","asteroid3","asteroid4", + "asteroid5","asteroid6","asteroid7","asteroid8", + "burning","oldburning","light-on-r","light-on-y","light-on-g","light-on-b") + +var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3","asteroid","asteroid_dug") + +/turf/simulated/floor + + //Note to coders, the 'intact' var can no longer be used to determine if the floor is a plating or not. + //Use the is_plating(), is_plasteel_floor() and is_light_floor() procs instead. --Errorage + name = "floor" + icon = 'icons/turf/floors.dmi' + icon_state = "floor" + var/icon_regular_floor = "floor" //used to remember what icon the tile should have by default + var/icon_plating = "plating" + thermal_conductivity = 0.040 + heat_capacity = 10000 + var/broken = 0 + var/burnt = 0 + var/obj/item/stack/tile/floor_tile = new/obj/item/stack/tile/plasteel + + airless + icon_state = "floor" + name = "airless floor" + oxygen = 0.01 + nitrogen = 0.01 + temperature = TCMB + + New() + ..() + name = "floor" + + light + name = "Light floor" + luminosity = 5 + icon_state = "light_on" + floor_tile = new/obj/item/stack/tile/light + + New() + floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. + var/n = name //just in case commands rename it in the ..() call + ..() + spawn(4) + update_icon() + name = n + + grass + name = "Grass patch" + icon_state = "grass1" + floor_tile = new/obj/item/stack/tile/grass + + New() + floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. + icon_state = "grass[pick("1","2","3","4")]" + ..() + spawn(4) + update_icon() + for(var/direction in cardinal) + if(istype(get_step(src,direction),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,direction) + FF.update_icon() //so siding get updated properly + +/turf/simulated/floor/vault + icon_state = "rockvault" + + New(location,type) + ..() + icon_state = "[type]vault" + +/turf/simulated/wall/vault + icon_state = "rockvault" + + New(location,type) + ..() + icon_state = "[type]vault" + +/turf/simulated/floor/engine + name = "reinforced floor" + icon_state = "engine" + thermal_conductivity = 0.025 + heat_capacity = 325000 + +/turf/simulated/floor/engine/cult + name = "engraved floor" + icon_state = "cult" + + +/turf/simulated/floor/engine/n20 + New() + ..() + var/datum/gas_mixture/adding = new + var/datum/gas/sleeping_agent/trace_gas = new + + trace_gas.moles = 2000 + adding.trace_gases += trace_gas + adding.temperature = T20C + + assume_air(adding) + +/turf/simulated/floor/engine/vacuum + name = "vacuum floor" + icon_state = "engine" + oxygen = 0 + nitrogen = 0.001 + temperature = TCMB + +/turf/simulated/floor/plating + name = "plating" + icon_state = "plating" + floor_tile = null + intact = 0 + +/turf/simulated/floor/plating/airless + icon_state = "plating" + name = "airless plating" + oxygen = 0.01 + nitrogen = 0.01 + temperature = TCMB + + New() + ..() + name = "plating" + +/turf/simulated/floor/grid + icon = 'icons/turf/floors.dmi' + icon_state = "circuit" + +/turf/simulated/floor/New() + ..() + if(icon_state in icons_to_ignore_at_floor_init) //so damaged/burned tiles or plating icons aren't saved as the default + icon_regular_floor = "floor" + else + icon_regular_floor = icon_state + +//turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +// if ((istype(mover, /obj/machinery/vehicle) && !(src.burnt))) +// if (!( locate(/obj/machinery/mass_driver, src) )) +// return 0 +// return ..() + +/turf/simulated/floor/ex_act(severity) + //set src in oview(1) + switch(severity) + if(1.0) + src.ReplaceWithSpace() + if(2.0) + switch(pick(1,2;75,3)) + if (1) + src.ReplaceWithLattice() + if(prob(33)) new /obj/item/stack/sheet/metal(src) + if(2) + src.ReplaceWithSpace() + if(3) + if(prob(80)) + src.break_tile_to_plating() + else + src.break_tile() + src.hotspot_expose(1000,CELL_VOLUME) + if(prob(33)) new /obj/item/stack/sheet/metal(src) + if(3.0) + if (prob(50)) + src.break_tile() + src.hotspot_expose(1000,CELL_VOLUME) + return + +/turf/simulated/floor/blob_act() + return + +turf/simulated/floor/proc/update_icon() + if(is_plasteel_floor()) + if(!broken && !burnt) + icon_state = icon_regular_floor + if(is_plating()) + if(!broken && !burnt) + icon_state = icon_plating //Because asteroids are 'platings' too. + if(is_light_floor()) + var/obj/item/stack/tile/light/T = floor_tile + if(T.on) + switch(T.state) + if(0) + icon_state = "light_on" + sd_SetLuminosity(5) + if(1) + var/num = pick("1","2","3","4") + icon_state = "light_on_flicker[num]" + sd_SetLuminosity(5) + if(2) + icon_state = "light_on_broken" + sd_SetLuminosity(5) + if(3) + icon_state = "light_off" + sd_SetLuminosity(0) + else + sd_SetLuminosity(0) + icon_state = "light_off" + if(is_grass_floor()) + if(!broken && !burnt) + if(!(icon_state in list("grass1","grass2","grass3","grass4"))) + icon_state = "grass[pick("1","2","3","4")]" + spawn(1) + if(istype(src,/turf/simulated/floor)) //Was throwing runtime errors due to a chance of it changing to space halfway through. + if(air) + update_visuals(air) + +turf/simulated/floor/return_siding_icon_state() + ..() + if(is_grass_floor()) + var/dir_sum = 0 + for(var/direction in cardinal) + var/turf/T = get_step(src,direction) + if(!(T.is_grass_floor())) + dir_sum += direction + if(dir_sum) + return "wood_siding[dir_sum]" + else + return 0 + + +/turf/simulated/floor/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/turf/simulated/floor/attack_hand(mob/user as mob) + if (is_light_floor()) + var/obj/item/stack/tile/light/T = floor_tile + T.on = !T.on + update_icon() + if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) + return + if (user.pulling.anchored) + return + if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) + return + if (ismob(user.pulling)) + var/mob/M = user.pulling + var/mob/t = M.pulling + M.stop_pulling() + step(user.pulling, get_dir(user.pulling.loc, src)) + M.start_pulling(t) + else + step(user.pulling, get_dir(user.pulling.loc, src)) + return + +/turf/simulated/floor/engine/attackby(obj/item/weapon/C as obj, mob/user as mob) + if(!C) + return + if(!user) + return + if(istype(C, /obj/item/weapon/wrench)) + user << "\blue Removing rods..." + playsound(src.loc, 'sound/items/Ratchet.ogg', 80, 1) + if(do_after(user, 30)) + new /obj/item/stack/rods(src, 2) + ReplaceWithFloor() + var/turf/simulated/floor/F = src + F.make_plating() + return + +/turf/simulated/floor/proc/gets_drilled() + return + +/turf/simulated/floor/proc/break_tile_to_plating() + if(!is_plating()) + make_plating() + break_tile() + +/turf/simulated/floor/is_plasteel_floor() + if(istype(floor_tile,/obj/item/stack/tile/plasteel)) + return 1 + else + return 0 + +/turf/simulated/floor/is_light_floor() + if(istype(floor_tile,/obj/item/stack/tile/light)) + return 1 + else + return 0 + +/turf/simulated/floor/is_grass_floor() + if(istype(floor_tile,/obj/item/stack/tile/grass)) + return 1 + else + return 0 + +/turf/simulated/floor/is_plating() + if(!floor_tile) + return 1 + return 0 + +/turf/simulated/floor/proc/break_tile() + if(istype(src,/turf/simulated/floor/engine)) return + if(istype(src,/turf/simulated/floor/mech_bay_recharge_floor)) + src.ReplaceWithPlating() + if(broken) return + if(is_plasteel_floor()) + src.icon_state = "damaged[pick(1,2,3,4,5)]" + broken = 1 + else if(is_plasteel_floor()) + src.icon_state = "light_broken" + broken = 1 + else if(is_plating()) + src.icon_state = "platingdmg[pick(1,2,3)]" + broken = 1 + else if(is_grass_floor()) + src.icon_state = "sand[pick("1","2","3")]" + broken = 1 + +/turf/simulated/floor/proc/burn_tile() + if(istype(src,/turf/simulated/floor/engine)) return + if(broken || burnt) return + if(is_plasteel_floor()) + src.icon_state = "damaged[pick(1,2,3,4,5)]" + burnt = 1 + else if(is_plasteel_floor()) + src.icon_state = "floorscorched[pick(1,2)]" + burnt = 1 + else if(is_plating()) + src.icon_state = "panelscorched" + burnt = 1 + else if(is_grass_floor()) + src.icon_state = "sand[pick("1","2","3")]" + burnt = 1 + +//This proc will delete the floor_tile and the update_iocn() proc will then change the icon_state of the turf +//This proc auto corrects the grass tiles' siding. +/turf/simulated/floor/proc/make_plating() + if(istype(src,/turf/simulated/floor/engine)) return + + if(is_grass_floor()) + for(var/direction in cardinal) + if(istype(get_step(src,direction),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,direction) + FF.update_icon() //so siding get updated properly + + if(!floor_tile) return + del(floor_tile) + icon_plating = "plating" + sd_SetLuminosity(0) + floor_tile = null + intact = 0 + broken = 0 + burnt = 0 + + update_icon() + levelupdate() + +//This proc will make the turf a plasteel floor tile. The expected argument is the tile to make the turf with +//If none is given it will make a new object. dropping or unequipping must be handled before or after calling +//this proc. +/turf/simulated/floor/proc/make_plasteel_floor(var/obj/item/stack/tile/plasteel/T = null) + broken = 0 + burnt = 0 + intact = 1 + sd_SetLuminosity(0) + if(T) + if(istype(T,/obj/item/stack/tile/plasteel)) + floor_tile = T + if (icon_regular_floor) + icon_state = icon_regular_floor + else + icon_state = "floor" + icon_regular_floor = icon_state + update_icon() + levelupdate() + return + //if you gave a valid parameter, it won't get thisf ar. + floor_tile = new/obj/item/stack/tile/plasteel + icon_state = "floor" + icon_regular_floor = icon_state + + update_icon() + levelupdate() + +//This proc will make the turf a light floor tile. The expected argument is the tile to make the turf with +//If none is given it will make a new object. dropping or unequipping must be handled before or after calling +//this proc. +/turf/simulated/floor/proc/make_light_floor(var/obj/item/stack/tile/light/T = null) + broken = 0 + burnt = 0 + intact = 1 + if(T) + if(istype(T,/obj/item/stack/tile/light)) + floor_tile = T + update_icon() + levelupdate() + return + //if you gave a valid parameter, it won't get thisf ar. + floor_tile = new/obj/item/stack/tile/light + + update_icon() + levelupdate() + +//This proc will make a turf into a grass patch. Fun eh? Insert the grass tile to be used as the argument +//If no argument is given a new one will be made. +/turf/simulated/floor/proc/make_grass_floor(var/obj/item/stack/tile/grass/T = null) + broken = 0 + burnt = 0 + intact = 1 + if(T) + if(istype(T,/obj/item/stack/tile/grass)) + floor_tile = T + update_icon() + levelupdate() + return + //if you gave a valid parameter, it won't get thisf ar. + floor_tile = new/obj/item/stack/tile/grass + + update_icon() + levelupdate() + +/turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) + + if(!C || !user) + return 0 + + if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles + if(is_light_floor()) + var/obj/item/stack/tile/light/T = floor_tile + if(T.state) + user.unEquip(C) + del(C) + T.state = C //fixing it by bashing it with a light bulb, fun eh? + update_icon() + user << "\blue You replace the light bulb." + else + user << "\blue The lightbulb seems fine, no need to replace it." + + if(istype(C, /obj/item/weapon/crowbar) && (!(is_plating()))) + if(broken || burnt) + user << "\red You remove the broken plating." + else + user << "\red You remove the [floor_tile.name]." + new floor_tile.type(src) + + make_plating() + playsound(src.loc, 'sound/items/Crowbar.ogg', 80, 1) + + return + + if(istype(C, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = C + if (is_plating()) + if (R.amount >= 2) + user << "\blue Reinforcing the floor..." + if(do_after(user, 30) && R && R.amount >= 2 && is_plating()) + ReplaceWithEngineFloor() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 80, 1) + R.use(2) + return + else + user << "\red You need more rods." + else + user << "\red You must remove the plating first." + return + + if(istype(C, /obj/item/stack/tile)) + if(is_plating()) + if(!broken && !burnt) + var/obj/item/stack/tile/T = C + floor_tile = new T.type + intact = 1 + if(istype(T,/obj/item/stack/tile/light)) + var/obj/item/stack/tile/light/L = T + var/obj/item/stack/tile/light/F = floor_tile + F.state = L.state + F.on = L.on + if(istype(T,/obj/item/stack/tile/grass)) + for(var/direction in cardinal) + if(istype(get_step(src,direction),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,direction) + FF.update_icon() //so siding gets updated properly + T.use(1) + update_icon() + levelupdate() + playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) + else + user << "\blue This section is too damaged to support a tile. Use a welder to fix the damage." + + + if(istype(C, /obj/item/stack/cable_coil)) + if(is_plating()) + var/obj/item/stack/cable_coil/coil = C + coil.turf_place(src, user) + else + user << "\red You must remove the plating first." + + if(istype(C, /obj/item/weapon/shovel)) + if(is_grass_floor()) + new /obj/item/weapon/ore/glass(src) + new /obj/item/weapon/ore/glass(src) //Make some sand if you shovel grass + user << "\blue You shovel the grass." + make_plating() + else + user << "\red You cannot shovel this." + + if(istype(C, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/welder = C + if(welder.welding && (is_plating())) + if(broken || burnt) + if(welder.remove_fuel(0,user)) + user << "\red You fix some dents on the broken plating." + playsound(src.loc, 'sound/items/Welder.ogg', 80, 1) + icon_state = "plating" + burnt = 0 + broken = 0 + else + user << "\blue You need more welding fuel to complete this task." + +/turf/unsimulated/floor/attack_paw(user as mob) + return src.attack_hand(user) + +/turf/unsimulated/floor/attack_hand(var/mob/user as mob) + if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) + return + if (user.pulling.anchored) + return + if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) + return + if (ismob(user.pulling)) + var/mob/M = user.pulling + var/mob/t = M.pulling + M.stop_pulling() + step(user.pulling, get_dir(user.pulling.loc, src)) + M.start_pulling(t) + else + step(user.pulling, get_dir(user.pulling.loc, src)) + return + +// imported from space.dm + +/turf/space/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/turf/space/attack_hand(mob/user as mob) + if ((user.restrained() || !( user.pulling ))) + return + if (user.pulling.anchored) + return + if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) + return + if (ismob(user.pulling)) + var/mob/M = user.pulling + var/atom/movable/t = M.pulling + M.stop_pulling() + step(user.pulling, get_dir(user.pulling.loc, src)) + M.start_pulling(t) + else + step(user.pulling, get_dir(user.pulling.loc, src)) + return + +/turf/space/attackby(obj/item/C as obj, mob/user as mob) + + if (istype(C, /obj/item/stack/rods)) + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + if(L) + return + var/obj/item/stack/rods/R = C + user << "\blue Constructing support lattice ..." + playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) + ReplaceWithLattice() + R.use(1) + return + + if (istype(C, /obj/item/stack/tile/plasteel)) + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + if(L) + var/obj/item/stack/tile/plasteel/S = C + del(L) + playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1) + S.build(src) + S.use(1) + return + else + user << "\red The plating is going to need some support." + return + + +// Ported from unstable r355 + +/turf/space/Entered(atom/movable/A as mob|obj) + ..() + if ((!(A) || src != A.loc || istype(null, /obj/effect/beam))) return + + inertial_drift(A) + + if(ticker && ticker.mode) + + // Okay, so let's make it so that people can travel z levels but not nuke disks! + // if(ticker.mode.name == "nuclear emergency") return + + if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") + Sandbox_Spacemove(A) + + else + if (src.x <= 2 || A.x >= (world.maxx - 1) || src.y <= 2 || A.y >= (world.maxy - 1)) + if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + del(A) + return + + if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels ... And moving this shit down here so it only fires when they're actually trying to change z-level. + return + + if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) + if(istype(A, /mob/living)) + var/mob/living/MM = A + if(MM.client) + MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." + return + + + + var/move_to_z_str = pickweight(accessable_z_levels) + + var/move_to_z = text2num(move_to_z_str) + + if(!move_to_z) + return + + + + A.z = move_to_z + + + if(src.x <= 2) + A.x = world.maxx - 2 + + else if (A.x >= (world.maxx - 1)) + A.x = 3 + + else if (src.y <= 2) + A.y = world.maxy - 2 + + else if (A.y >= (world.maxy - 1)) + A.y = 3 + + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + +// if(istype(A, /obj/structure/closet/coffin)) +// coffinhandler.Add(A) + +/turf/space/proc/Sandbox_Spacemove(atom/movable/A as mob|obj) + var/cur_x + var/cur_y + var/next_x + var/next_y + var/target_z + var/list/y_arr + + if(src.x <= 1) + if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + del(A) + return + + var/list/cur_pos = src.get_global_map_pos() + if(!cur_pos) return + cur_x = cur_pos["x"] + cur_y = cur_pos["y"] + next_x = (--cur_x||global_map.len) + y_arr = global_map[next_x] + target_z = y_arr[cur_y] +/* + //debug + world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" + world << "Target Z = [target_z]" + world << "Next X = [next_x]" + //debug +*/ + if(target_z) + A.z = target_z + A.x = world.maxx - 2 + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + else if (src.x >= world.maxx) + if(istype(A, /obj/effect/meteor)) + del(A) + return + + var/list/cur_pos = src.get_global_map_pos() + if(!cur_pos) return + cur_x = cur_pos["x"] + cur_y = cur_pos["y"] + next_x = (++cur_x > global_map.len ? 1 : cur_x) + y_arr = global_map[next_x] + target_z = y_arr[cur_y] +/* + //debug + world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" + world << "Target Z = [target_z]" + world << "Next X = [next_x]" + //debug +*/ + if(target_z) + A.z = target_z + A.x = 3 + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + else if (src.y <= 1) + if(istype(A, /obj/effect/meteor)) + del(A) + return + var/list/cur_pos = src.get_global_map_pos() + if(!cur_pos) return + cur_x = cur_pos["x"] + cur_y = cur_pos["y"] + y_arr = global_map[cur_x] + next_y = (--cur_y||y_arr.len) + target_z = y_arr[next_y] +/* + //debug + world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" + world << "Next Y = [next_y]" + world << "Target Z = [target_z]" + //debug +*/ + if(target_z) + A.z = target_z + A.y = world.maxy - 2 + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + + else if (src.y >= world.maxy) + if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) + del(A) + return + var/list/cur_pos = src.get_global_map_pos() + if(!cur_pos) return + cur_x = cur_pos["x"] + cur_y = cur_pos["y"] + y_arr = global_map[cur_x] + next_y = (++cur_y > y_arr.len ? 1 : cur_y) + target_z = y_arr[next_y] +/* + //debug + world << "Src.z = [src.z] in global map X = [cur_x], Y = [cur_y]" + world << "Next Y = [next_y]" + world << "Target Z = [target_z]" + //debug +*/ + if(target_z) + A.z = target_z + A.y = 3 + spawn (0) + if ((A && A.loc)) + A.loc.Entered(A) + return + +/obj/effect/vaultspawner + var/maxX = 6 + var/maxY = 6 + var/minX = 2 + var/minY = 2 + +/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY,var/type = null) + if(!type) + type = pick("sandstone","rock","alien") + + var/lowBoundX = location.x + var/lowBoundY = location.y + + var/hiBoundX = location.x + rand(lX,uX) + var/hiBoundY = location.y + rand(lY,uY) + + var/z = location.z + + for(var/i = lowBoundX,i<=hiBoundX,i++) + for(var/j = lowBoundY,j<=hiBoundY,j++) + if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY) + new /turf/simulated/wall/vault(locate(i,j,z),type) + else + new /turf/simulated/floor/vault(locate(i,j,z),type) + + del(src) + +/turf/proc/kill_creatures(mob/U = null)//Will kill people/creatures and damage mechs./N +//Useful to batch-add creatures to the list. + for(var/mob/living/M in src) + if(M==U) continue//Will not harm U. Since null != M, can be excluded to kill everyone. + spawn(0) + M.gib() + for(var/obj/mecha/M in src)//Mecha are not gibbed but are damaged. + spawn(0) + M.take_damage(100, "brute") + for(var/obj/effect/critter/M in src) + spawn(0) + M.Die() + +/turf/proc/Bless() + if(flags & NOJAUNT) + return + flags |= NOJAUNT overlays += image('icons/effects/water.dmi',src,"holywater")*/ \ No newline at end of file diff --git a/code/unused/cable_heavyduty.dm b/code/unused/cable_heavyduty.dm index 36bd4f93eb7..911fe50b43c 100644 --- a/code/unused/cable_heavyduty.dm +++ b/code/unused/cable_heavyduty.dm @@ -1,28 +1,28 @@ -/obj/item/stack/cable_coil/heavyduty - name = "heavy cable coil" - icon = 'icons/obj/power.dmi' - icon_state = "wire" - -/obj/structure/cable/heavyduty - icon = 'icons/obj/power_cond_heavy.dmi' - name = "large power cable" - desc = "This cable is tough. It cannot be cut with simple hand tools." - layer = 2.39 //Just below pipes, which are at 2.4 - -/obj/structure/cable/heavyduty/attackby(obj/item/W, mob/user) - - var/turf/T = src.loc - if(T.intact) - return - - if(istype(W, /obj/item/weapon/wirecutters)) - usr << "\blue These cables are too tough to be cut with those [W.name]." - return - else if(istype(W, /obj/item/stack/cable_coil)) - usr << "\blue You will need heavier cables to connect to these." - return - else - ..() - -/obj/structure/cable/heavyduty/cableColor(var/colorC) +/obj/item/stack/cable_coil/heavyduty + name = "heavy cable coil" + icon = 'icons/obj/power.dmi' + icon_state = "wire" + +/obj/structure/cable/heavyduty + icon = 'icons/obj/power_cond_heavy.dmi' + name = "large power cable" + desc = "This cable is tough. It cannot be cut with simple hand tools." + layer = 2.39 //Just below pipes, which are at 2.4 + +/obj/structure/cable/heavyduty/attackby(obj/item/W, mob/user) + + var/turf/T = src.loc + if(T.intact) + return + + if(istype(W, /obj/item/weapon/wirecutters)) + usr << "\blue These cables are too tough to be cut with those [W.name]." + return + else if(istype(W, /obj/item/stack/cable_coil)) + usr << "\blue You will need heavier cables to connect to these." + return + else + ..() + +/obj/structure/cable/heavyduty/cableColor(var/colorC) return \ No newline at end of file diff --git a/code/unused/computer2/buildandrepair.dm b/code/unused/computer2/buildandrepair.dm index 2fde1740b77..69e7b5fb822 100644 --- a/code/unused/computer2/buildandrepair.dm +++ b/code/unused/computer2/buildandrepair.dm @@ -1,150 +1,150 @@ -//Motherboard is just used in assembly/disassembly, doesn't exist in the actual computer object. -/obj/item/weapon/motherboard - name = "Computer mainboard" - desc = "A computer motherboard." - icon = 'icons/obj/module.dmi' - icon_state = "mainboard" - item_state = "electronic" - w_class = 3 - var/created_name = null //If defined, result computer will have this name. - -/obj/computer2frame - density = 1 - anchored = 0 - name = "Computer-frame" - icon = 'icons/obj/stock_parts.dmi' - icon_state = "0" - var/state = 0 - var/obj/item/weapon/motherboard/mainboard = null - var/obj/item/weapon/disk/data/fixed_disk/hd = null - var/list/peripherals = list() - var/created_icon_state = "aiupload" - -/obj/computer2frame/attackby(obj/item/P as obj, mob/user as mob) - switch(state) - if(0) - if(istype(P, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 20)) - user << "\blue You wrench the frame into place." - src.anchored = 1 - src.state = 1 - if(istype(P, /obj/item/weapon/weldingtool)) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - if(do_after(user, 20)) - user << "\blue You deconstruct the frame." - new /obj/item/stack/sheet/metal( src.loc, 5 ) - del(src) - if(1) - if(istype(P, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 20)) - user << "\blue You unfasten the frame." - src.anchored = 0 - src.state = 0 - if(istype(P, /obj/item/weapon/motherboard) && !mainboard) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user << "\blue You place the mainboard inside the frame." - src.icon_state = "1" - src.mainboard = P - user.drop_item() - P.loc = src - if(istype(P, /obj/item/weapon/screwdriver) && mainboard) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You screw the mainboard into place." - src.state = 2 - src.icon_state = "2" - if(istype(P, /obj/item/weapon/crowbar) && mainboard) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the mainboard." - src.state = 1 - src.icon_state = "0" - mainboard.loc = src.loc - src.mainboard = null - if(2) - if(istype(P, /obj/item/weapon/screwdriver) && mainboard && (!peripherals.len)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You unfasten the mainboard." - src.state = 1 - src.icon_state = "1" - - if(istype(P, /obj/item/weapon/peripheral)) - if(src.peripherals.len < 3) - user.drop_item() - src.peripherals.Add(P) - P.loc = src - user << "\blue You add [P] to the frame." - else - user << "\red There is no more room for peripheral cards." - - if(istype(P, /obj/item/weapon/crowbar) && src.peripherals.len) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the peripheral boards." - for(var/obj/item/weapon/peripheral/W in src.peripherals) - W.loc = src.loc - src.peripherals.Remove(W) - - if(istype(P, /obj/item/stack/cable_coil)) - if(P:amount >= 5) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 20)) - P:amount -= 5 - if(!P:amount) del(P) - user << "\blue You add cables to the frame." - src.state = 3 - src.icon_state = "3" - if(3) - if(istype(P, /obj/item/weapon/wirecutters)) - playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - user << "\blue You remove the cables." - src.state = 2 - src.icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc ) - A.amount = 5 - if(src.hd) - src.hd.loc = src.loc - src.hd = null - - if(istype(P, /obj/item/weapon/disk/data/fixed_disk) && !src.hd) - user.drop_item() - src.hd = P - P.loc = src - user << "\blue You connect the drive to the cabling." - - if(istype(P, /obj/item/weapon/crowbar) && src.hd) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the hard drive." - src.hd.loc = src.loc - src.hd = null - - if(istype(P, /obj/item/stack/sheet/glass)) - if(P:amount >= 2) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 20)) - P:use(2) - user << "\blue You put in the glass panel." - src.state = 4 - src.icon_state = "4" - if(4) - if(istype(P, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "\blue You remove the glass panel." - src.state = 3 - src.icon_state = "3" - new /obj/item/stack/sheet/glass( src.loc, 2 ) - if(istype(P, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "\blue You connect the monitor." - var/obj/machinery/computer2/C= new /obj/machinery/computer2( src.loc ) - C.setup_drive_size = 0 - C.icon_state = src.created_icon_state - if(mainboard.created_name) C.name = mainboard.created_name - del(mainboard) - if(hd) - C.hd = hd - hd.loc = C - for(var/obj/item/weapon/peripheral/W in src.peripherals) - W.loc = C - W.host = C - C.peripherals.Add(W) +//Motherboard is just used in assembly/disassembly, doesn't exist in the actual computer object. +/obj/item/weapon/motherboard + name = "Computer mainboard" + desc = "A computer motherboard." + icon = 'icons/obj/module.dmi' + icon_state = "mainboard" + item_state = "electronic" + w_class = 3 + var/created_name = null //If defined, result computer will have this name. + +/obj/computer2frame + density = 1 + anchored = 0 + name = "Computer-frame" + icon = 'icons/obj/stock_parts.dmi' + icon_state = "0" + var/state = 0 + var/obj/item/weapon/motherboard/mainboard = null + var/obj/item/weapon/disk/data/fixed_disk/hd = null + var/list/peripherals = list() + var/created_icon_state = "aiupload" + +/obj/computer2frame/attackby(obj/item/P as obj, mob/user as mob) + switch(state) + if(0) + if(istype(P, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 20)) + user << "\blue You wrench the frame into place." + src.anchored = 1 + src.state = 1 + if(istype(P, /obj/item/weapon/weldingtool)) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(do_after(user, 20)) + user << "\blue You deconstruct the frame." + new /obj/item/stack/sheet/metal( src.loc, 5 ) + del(src) + if(1) + if(istype(P, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 20)) + user << "\blue You unfasten the frame." + src.anchored = 0 + src.state = 0 + if(istype(P, /obj/item/weapon/motherboard) && !mainboard) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + user << "\blue You place the mainboard inside the frame." + src.icon_state = "1" + src.mainboard = P + user.drop_item() + P.loc = src + if(istype(P, /obj/item/weapon/screwdriver) && mainboard) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You screw the mainboard into place." + src.state = 2 + src.icon_state = "2" + if(istype(P, /obj/item/weapon/crowbar) && mainboard) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the mainboard." + src.state = 1 + src.icon_state = "0" + mainboard.loc = src.loc + src.mainboard = null + if(2) + if(istype(P, /obj/item/weapon/screwdriver) && mainboard && (!peripherals.len)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You unfasten the mainboard." + src.state = 1 + src.icon_state = "1" + + if(istype(P, /obj/item/weapon/peripheral)) + if(src.peripherals.len < 3) + user.drop_item() + src.peripherals.Add(P) + P.loc = src + user << "\blue You add [P] to the frame." + else + user << "\red There is no more room for peripheral cards." + + if(istype(P, /obj/item/weapon/crowbar) && src.peripherals.len) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the peripheral boards." + for(var/obj/item/weapon/peripheral/W in src.peripherals) + W.loc = src.loc + src.peripherals.Remove(W) + + if(istype(P, /obj/item/stack/cable_coil)) + if(P:amount >= 5) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + P:amount -= 5 + if(!P:amount) del(P) + user << "\blue You add cables to the frame." + src.state = 3 + src.icon_state = "3" + if(3) + if(istype(P, /obj/item/weapon/wirecutters)) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) + user << "\blue You remove the cables." + src.state = 2 + src.icon_state = "2" + var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc ) + A.amount = 5 + if(src.hd) + src.hd.loc = src.loc + src.hd = null + + if(istype(P, /obj/item/weapon/disk/data/fixed_disk) && !src.hd) + user.drop_item() + src.hd = P + P.loc = src + user << "\blue You connect the drive to the cabling." + + if(istype(P, /obj/item/weapon/crowbar) && src.hd) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the hard drive." + src.hd.loc = src.loc + src.hd = null + + if(istype(P, /obj/item/stack/sheet/glass)) + if(P:amount >= 2) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + P:use(2) + user << "\blue You put in the glass panel." + src.state = 4 + src.icon_state = "4" + if(4) + if(istype(P, /obj/item/weapon/crowbar)) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the glass panel." + src.state = 3 + src.icon_state = "3" + new /obj/item/stack/sheet/glass( src.loc, 2 ) + if(istype(P, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You connect the monitor." + var/obj/machinery/computer2/C= new /obj/machinery/computer2( src.loc ) + C.setup_drive_size = 0 + C.icon_state = src.created_icon_state + if(mainboard.created_name) C.name = mainboard.created_name + del(mainboard) + if(hd) + C.hd = hd + hd.loc = C + for(var/obj/item/weapon/peripheral/W in src.peripherals) + W.loc = C + W.host = C + C.peripherals.Add(W) del(src) \ No newline at end of file diff --git a/code/unused/conveyor.dm b/code/unused/conveyor.dm index 0756be124f6..ad4337b696c 100644 --- a/code/unused/conveyor.dm +++ b/code/unused/conveyor.dm @@ -1,384 +1,384 @@ -// converyor belt - -// moves items/mobs/movables in set direction every ptick - - -/obj/machinery/conveyor - icon = 'icons/obj/recycling.dmi' - icon_state = "conveyor0" - name = "conveyor belt" - desc = "A conveyor belt." - anchored = 1 - var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off - var/operable = 1 // true if can operate (no broken segments in this belt run) - var/basedir // this is the default (forward) direction, set by the map dir - // note dir var can vary when the direction changes - - var/list/affecting // the list of all items that will be moved this ptick - var/id = "" // the control ID - must match controller ID - // following two only used if a diverter is present - var/divert = 0 // if non-zero, direction to divert items - var/divdir = 0 // if diverting, will be conveyer dir needed to divert (otherwise dense) - - - - // create a conveyor - -/obj/machinery/conveyor/New() - ..() - basedir = dir - setdir() - - // set the dir and target turf depending on the operating direction - -/obj/machinery/conveyor/proc/setdir() - if(operating == -1) - dir = turn(basedir,180) - else - dir = basedir - update() - - - // update the icon depending on the operating condition - -/obj/machinery/conveyor/proc/update() - if(stat & BROKEN) - icon_state = "conveyor-b" - operating = 0 - return - if(!operable) - operating = 0 - icon_state = "conveyor[(operating != 0) && !(stat & NOPOWER)]" - - - // machine process - // move items to the target location -/obj/machinery/conveyor/process() - if(stat & (BROKEN | NOPOWER)) - return - if(!operating) - return - use_power(100) - - var/movedir = dir // base movement dir - if(divert && dir==divdir) // update if diverter present - movedir = divert - - - affecting = loc.contents - src // moved items will be all in loc - spawn(1) // slight delay to prevent infinite propagation due to map order - var/items_moved = 0 - for(var/atom/movable/A in affecting) - if(!A.anchored) - if(isturf(A.loc)) // this is to prevent an ugly bug that forces a player to drop what they're holding if they recently pick it up from the conveyer belt - if(ismob(A)) - var/mob/M = A - if(M.buckled == src) - var/obj/machinery/conveyor/C = locate() in get_step(src, dir) - M.buckled = null - step(M,dir) - if(C) - M.buckled = C - else - new/obj/item/stack/cable_coil/cut(M.loc) - else - step(M,movedir) - else - step(A,movedir) - items_moved++ - if(items_moved >= 10) - break - -// attack with item, place item on conveyor - -/obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/grab)) // special handling if grabbing a mob - var/obj/item/weapon/grab/G = I - G.affecting.Move(src.loc) - del(G) - return - else if(istype(I, /obj/item/stack/cable_coil)) // if cable, see if a mob is present - var/mob/M = locate() in src.loc - if(M) - if (M == user) - src.visible_message("\blue [M] ties \himself to the conveyor.") - // note don't check for lying if self-tying - else - if(M.lying) - user.visible_message("\blue [M] has been tied to the conveyor by [user].", "\blue You tie [M] to the converyor!") - else - user << "\blue [M] must be lying down to be tied to the converyor!" - return - M.buckled = src - src.add_fingerprint(user) - I:use(1) - M.lying = 1 - return - - // else if no mob in loc, then allow coil to be placed - - else if(istype(I, /obj/item/weapon/wirecutters)) - var/mob/M = locate() in src.loc - if(M && M.buckled == src) - M.buckled = null - src.add_fingerprint(user) - if (M == user) - src.visible_message("\blue [M] cuts \himself free from the conveyor.") - else - src.visible_message("\blue [M] had been cut free from the conveyor by [user].") - return - - if(isrobot(user)) - return - - // otherwise drop and place on conveyor - user.drop_item() - if(I && I.loc) I.loc = src.loc - return - -// attack with hand, move pulled object onto conveyor - -/obj/machinery/conveyor/attack_hand(mob/user as mob) - user.Move_Pulled(src) - - -// make the conveyor broken -// also propagate inoperability to any connected conveyor with the same ID -/obj/machinery/conveyor/proc/broken() - stat |= BROKEN - update() - - var/obj/machinery/conveyor/C = locate() in get_step(src, basedir) - if(C) - C.set_operable(basedir, id, 0) - - C = locate() in get_step(src, turn(basedir,180)) - if(C) - C.set_operable(turn(basedir,180), id, 0) - - -//set the operable var if ID matches, propagating in the given direction - -/obj/machinery/conveyor/proc/set_operable(stepdir, match_id, op) - - if(id != match_id) - return - operable = op - - update() - var/obj/machinery/conveyor/C = locate() in get_step(src, stepdir) - if(C) - C.set_operable(stepdir, id, op) - -/* -/obj/machinery/conveyor/verb/destroy() - set src in view() - src.broken() -*/ - -/obj/machinery/conveyor/power_change() - ..() - update() - - -// converyor diverter -// extendable arm that can be switched so items on the conveyer are diverted sideways -// situate in same turf as conveyor -// only works if belts is running proper direction -// -// -/obj/machinery/diverter - icon = 'icons/obj/recycling.dmi' - icon_state = "diverter0" - name = "diverter" - desc = "A diverter arm for a conveyor belt." - anchored = 1 - layer = FLY_LAYER - var/obj/machinery/conveyor/conv // the conveyor this diverter works on - var/deployed = 0 // true if diverter arm is extended - var/operating = 0 // true if arm is extending/contracting - var/divert_to // the dir that diverted items will be moved - var/divert_from // the dir items must be moving to divert - - -// create a diverter -// set up divert_to and divert_from directions depending on dir state -/obj/machinery/diverter/New() - - ..() - - switch(dir) - if(NORTH) - divert_to = WEST // stuff will be moved to the west - divert_from = NORTH // if entering from the north - if(SOUTH) - divert_to = EAST - divert_from = NORTH - if(EAST) - divert_to = EAST - divert_from = SOUTH - if(WEST) - divert_to = WEST - divert_from = SOUTH - if(NORTHEAST) - divert_to = NORTH - divert_from = EAST - if(NORTHWEST) - divert_to = NORTH - divert_from = WEST - if(SOUTHEAST) - divert_to = SOUTH - divert_from = EAST - if(SOUTHWEST) - divert_to = SOUTH - divert_from = WEST - spawn(2) - // wait for map load then find the conveyor in this turf - conv = locate() in src.loc - if(conv) // divert_from dir must match possible conveyor movement - if(conv.basedir != divert_from && conv.basedir != turn(divert_from,180) ) - del(src) // if no dir match, then delete self - set_divert() - update() - -// update the icon state depending on whether the diverter is extended -/obj/machinery/diverter/proc/update() - icon_state = "diverter[deployed]" - -// call to set the diversion vars of underlying conveyor -/obj/machinery/diverter/proc/set_divert() - if(conv) - if(deployed) - conv.divert = divert_to - conv.divdir = divert_from - else - conv.divert= 0 - - -// *** TESTING click to toggle -/obj/machinery/diverter/Click() - toggle() - - -// toggle between arm deployed and not deployed, showing animation -// -/obj/machinery/diverter/proc/toggle() - if( stat & (NOPOWER|BROKEN)) - return - - if(operating) - return - - use_power(50) - operating = 1 - if(deployed) - flick("diverter10",src) - icon_state = "diverter0" - sleep(10) - deployed = 0 - else - flick("diverter01",src) - icon_state = "diverter1" - sleep(10) - deployed = 1 - operating = 0 - update() - set_divert() - -// don't allow movement into the 'backwards' direction if deployed -/obj/machinery/diverter/CanPass(atom/movable/O, var/turf/target) - var/direct = get_dir(O, target) - if(direct == divert_to) // prevent movement through body of diverter - return 0 - if(!deployed) - return 1 - return(direct != turn(divert_from,180)) - -// don't allow movement through the arm if deployed -/obj/machinery/diverter/CheckExit(atom/movable/O, var/turf/target) - var/direct = get_dir(O, target) - if(direct == turn(divert_to,180)) // prevent movement through body of diverter - return 0 - if(!deployed) - return 1 - return(direct != divert_from) - - - - - -// the conveyor control switch -// -// - -/obj/machinery/conveyor_switch - - name = "conveyor switch" - desc = "A conveyor control switch." - icon = 'icons/obj/recycling.dmi' - icon_state = "switch-off" - var/position = 0 // 0 off, -1 reverse, 1 forward - var/last_pos = -1 // last direction setting - var/operated = 1 // true if just operated - - var/id = "" // must match conveyor IDs to control them - - var/list/conveyors // the list of converyors that are controlled by this switch - anchored = 1 - - - -/obj/machinery/conveyor_switch/New() - ..() - update() - - spawn(5) // allow map load - conveyors = list() - for(var/obj/machinery/conveyor/C in world) - if(C.id == id) - conveyors += C - -// update the icon depending on the position - -/obj/machinery/conveyor_switch/proc/update() - if(position<0) - icon_state = "switch-rev" - else if(position>0) - icon_state = "switch-fwd" - else - icon_state = "switch-off" - - -// timed process -// if the switch changed, update the linked conveyors - -/obj/machinery/conveyor_switch/process() - if(!operated) - return - operated = 0 - - for(var/obj/machinery/conveyor/C in conveyors) - C.operating = position - C.setdir() - -// attack with hand, switch position -/obj/machinery/conveyor_switch/attack_hand(mob/user) - if(position == 0) - if(last_pos < 0) - position = 1 - last_pos = 0 - else - position = -1 - last_pos = 0 - else - last_pos = position - position = 0 - - operated = 1 - update() - - // find any switches with same id as this one, and set their positions to match us - for(var/obj/machinery/conveyor_switch/S in world) - if(S.id == src.id) - S.position = position - S.update() +// converyor belt + +// moves items/mobs/movables in set direction every ptick + + +/obj/machinery/conveyor + icon = 'icons/obj/recycling.dmi' + icon_state = "conveyor0" + name = "conveyor belt" + desc = "A conveyor belt." + anchored = 1 + var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off + var/operable = 1 // true if can operate (no broken segments in this belt run) + var/basedir // this is the default (forward) direction, set by the map dir + // note dir var can vary when the direction changes + + var/list/affecting // the list of all items that will be moved this ptick + var/id = "" // the control ID - must match controller ID + // following two only used if a diverter is present + var/divert = 0 // if non-zero, direction to divert items + var/divdir = 0 // if diverting, will be conveyer dir needed to divert (otherwise dense) + + + + // create a conveyor + +/obj/machinery/conveyor/New() + ..() + basedir = dir + setdir() + + // set the dir and target turf depending on the operating direction + +/obj/machinery/conveyor/proc/setdir() + if(operating == -1) + dir = turn(basedir,180) + else + dir = basedir + update() + + + // update the icon depending on the operating condition + +/obj/machinery/conveyor/proc/update() + if(stat & BROKEN) + icon_state = "conveyor-b" + operating = 0 + return + if(!operable) + operating = 0 + icon_state = "conveyor[(operating != 0) && !(stat & NOPOWER)]" + + + // machine process + // move items to the target location +/obj/machinery/conveyor/process() + if(stat & (BROKEN | NOPOWER)) + return + if(!operating) + return + use_power(100) + + var/movedir = dir // base movement dir + if(divert && dir==divdir) // update if diverter present + movedir = divert + + + affecting = loc.contents - src // moved items will be all in loc + spawn(1) // slight delay to prevent infinite propagation due to map order + var/items_moved = 0 + for(var/atom/movable/A in affecting) + if(!A.anchored) + if(isturf(A.loc)) // this is to prevent an ugly bug that forces a player to drop what they're holding if they recently pick it up from the conveyer belt + if(ismob(A)) + var/mob/M = A + if(M.buckled == src) + var/obj/machinery/conveyor/C = locate() in get_step(src, dir) + M.buckled = null + step(M,dir) + if(C) + M.buckled = C + else + new/obj/item/stack/cable_coil/cut(M.loc) + else + step(M,movedir) + else + step(A,movedir) + items_moved++ + if(items_moved >= 10) + break + +// attack with item, place item on conveyor + +/obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/grab)) // special handling if grabbing a mob + var/obj/item/weapon/grab/G = I + G.affecting.Move(src.loc) + del(G) + return + else if(istype(I, /obj/item/stack/cable_coil)) // if cable, see if a mob is present + var/mob/M = locate() in src.loc + if(M) + if (M == user) + src.visible_message("\blue [M] ties \himself to the conveyor.") + // note don't check for lying if self-tying + else + if(M.lying) + user.visible_message("\blue [M] has been tied to the conveyor by [user].", "\blue You tie [M] to the converyor!") + else + user << "\blue [M] must be lying down to be tied to the converyor!" + return + M.buckled = src + src.add_fingerprint(user) + I:use(1) + M.lying = 1 + return + + // else if no mob in loc, then allow coil to be placed + + else if(istype(I, /obj/item/weapon/wirecutters)) + var/mob/M = locate() in src.loc + if(M && M.buckled == src) + M.buckled = null + src.add_fingerprint(user) + if (M == user) + src.visible_message("\blue [M] cuts \himself free from the conveyor.") + else + src.visible_message("\blue [M] had been cut free from the conveyor by [user].") + return + + if(isrobot(user)) + return + + // otherwise drop and place on conveyor + user.drop_item() + if(I && I.loc) I.loc = src.loc + return + +// attack with hand, move pulled object onto conveyor + +/obj/machinery/conveyor/attack_hand(mob/user as mob) + user.Move_Pulled(src) + + +// make the conveyor broken +// also propagate inoperability to any connected conveyor with the same ID +/obj/machinery/conveyor/proc/broken() + stat |= BROKEN + update() + + var/obj/machinery/conveyor/C = locate() in get_step(src, basedir) + if(C) + C.set_operable(basedir, id, 0) + + C = locate() in get_step(src, turn(basedir,180)) + if(C) + C.set_operable(turn(basedir,180), id, 0) + + +//set the operable var if ID matches, propagating in the given direction + +/obj/machinery/conveyor/proc/set_operable(stepdir, match_id, op) + + if(id != match_id) + return + operable = op + + update() + var/obj/machinery/conveyor/C = locate() in get_step(src, stepdir) + if(C) + C.set_operable(stepdir, id, op) + +/* +/obj/machinery/conveyor/verb/destroy() + set src in view() + src.broken() +*/ + +/obj/machinery/conveyor/power_change() + ..() + update() + + +// converyor diverter +// extendable arm that can be switched so items on the conveyer are diverted sideways +// situate in same turf as conveyor +// only works if belts is running proper direction +// +// +/obj/machinery/diverter + icon = 'icons/obj/recycling.dmi' + icon_state = "diverter0" + name = "diverter" + desc = "A diverter arm for a conveyor belt." + anchored = 1 + layer = FLY_LAYER + var/obj/machinery/conveyor/conv // the conveyor this diverter works on + var/deployed = 0 // true if diverter arm is extended + var/operating = 0 // true if arm is extending/contracting + var/divert_to // the dir that diverted items will be moved + var/divert_from // the dir items must be moving to divert + + +// create a diverter +// set up divert_to and divert_from directions depending on dir state +/obj/machinery/diverter/New() + + ..() + + switch(dir) + if(NORTH) + divert_to = WEST // stuff will be moved to the west + divert_from = NORTH // if entering from the north + if(SOUTH) + divert_to = EAST + divert_from = NORTH + if(EAST) + divert_to = EAST + divert_from = SOUTH + if(WEST) + divert_to = WEST + divert_from = SOUTH + if(NORTHEAST) + divert_to = NORTH + divert_from = EAST + if(NORTHWEST) + divert_to = NORTH + divert_from = WEST + if(SOUTHEAST) + divert_to = SOUTH + divert_from = EAST + if(SOUTHWEST) + divert_to = SOUTH + divert_from = WEST + spawn(2) + // wait for map load then find the conveyor in this turf + conv = locate() in src.loc + if(conv) // divert_from dir must match possible conveyor movement + if(conv.basedir != divert_from && conv.basedir != turn(divert_from,180) ) + del(src) // if no dir match, then delete self + set_divert() + update() + +// update the icon state depending on whether the diverter is extended +/obj/machinery/diverter/proc/update() + icon_state = "diverter[deployed]" + +// call to set the diversion vars of underlying conveyor +/obj/machinery/diverter/proc/set_divert() + if(conv) + if(deployed) + conv.divert = divert_to + conv.divdir = divert_from + else + conv.divert= 0 + + +// *** TESTING click to toggle +/obj/machinery/diverter/Click() + toggle() + + +// toggle between arm deployed and not deployed, showing animation +// +/obj/machinery/diverter/proc/toggle() + if( stat & (NOPOWER|BROKEN)) + return + + if(operating) + return + + use_power(50) + operating = 1 + if(deployed) + flick("diverter10",src) + icon_state = "diverter0" + sleep(10) + deployed = 0 + else + flick("diverter01",src) + icon_state = "diverter1" + sleep(10) + deployed = 1 + operating = 0 + update() + set_divert() + +// don't allow movement into the 'backwards' direction if deployed +/obj/machinery/diverter/CanPass(atom/movable/O, var/turf/target) + var/direct = get_dir(O, target) + if(direct == divert_to) // prevent movement through body of diverter + return 0 + if(!deployed) + return 1 + return(direct != turn(divert_from,180)) + +// don't allow movement through the arm if deployed +/obj/machinery/diverter/CheckExit(atom/movable/O, var/turf/target) + var/direct = get_dir(O, target) + if(direct == turn(divert_to,180)) // prevent movement through body of diverter + return 0 + if(!deployed) + return 1 + return(direct != divert_from) + + + + + +// the conveyor control switch +// +// + +/obj/machinery/conveyor_switch + + name = "conveyor switch" + desc = "A conveyor control switch." + icon = 'icons/obj/recycling.dmi' + icon_state = "switch-off" + var/position = 0 // 0 off, -1 reverse, 1 forward + var/last_pos = -1 // last direction setting + var/operated = 1 // true if just operated + + var/id = "" // must match conveyor IDs to control them + + var/list/conveyors // the list of converyors that are controlled by this switch + anchored = 1 + + + +/obj/machinery/conveyor_switch/New() + ..() + update() + + spawn(5) // allow map load + conveyors = list() + for(var/obj/machinery/conveyor/C in world) + if(C.id == id) + conveyors += C + +// update the icon depending on the position + +/obj/machinery/conveyor_switch/proc/update() + if(position<0) + icon_state = "switch-rev" + else if(position>0) + icon_state = "switch-fwd" + else + icon_state = "switch-off" + + +// timed process +// if the switch changed, update the linked conveyors + +/obj/machinery/conveyor_switch/process() + if(!operated) + return + operated = 0 + + for(var/obj/machinery/conveyor/C in conveyors) + C.operating = position + C.setdir() + +// attack with hand, switch position +/obj/machinery/conveyor_switch/attack_hand(mob/user) + if(position == 0) + if(last_pos < 0) + position = 1 + last_pos = 0 + else + position = -1 + last_pos = 0 + else + last_pos = position + position = 0 + + operated = 1 + update() + + // find any switches with same id as this one, and set their positions to match us + for(var/obj/machinery/conveyor_switch/S in world) + if(S.id == src.id) + S.position = position + S.update() diff --git a/code/unused/hivebot/hive_modules.dm b/code/unused/hivebot/hive_modules.dm index abac6236910..c0ae3196ca9 100644 --- a/code/unused/hivebot/hive_modules.dm +++ b/code/unused/hivebot/hive_modules.dm @@ -1,57 +1,57 @@ -/obj/item/weapon/hive_module - name = "hive robot module" - icon = 'icons/obj/module.dmi' - icon_state = "std_module" - w_class = 2.0 - item_state = "electronic" - flags = FPRINT|TABLEPASS | CONDUCT - var/list/modules = list() - -/obj/item/weapon/hive_module/standard - name = "give standard robot module" - -/obj/item/weapon/hive_module/engineering - name = "HiveBot engineering robot module" - -/obj/item/weapon/hive_module/New()//Shit all the mods have - src.modules += new /obj/item/device/flash(src) - - -/obj/item/weapon/hive_module/standard/New() - ..() - src.modules += new /obj/item/weapon/melee/baton(src) - src.modules += new /obj/item/weapon/extinguisher(src) - //var/obj/item/weapon/gun/mp5/M = new /obj/item/weapon/gun/mp5(src) - //M.weapon_lock = 0 - //src.modules += M - - -/obj/item/weapon/hive_module/engineering/New() - - src.modules += new /obj/item/weapon/extinguisher(src) - src.modules += new /obj/item/weapon/screwdriver(src) - src.modules += new /obj/item/weapon/weldingtool(src) - src.modules += new /obj/item/weapon/wrench(src) - src.modules += new /obj/item/device/analyzer(src) - src.modules += new /obj/item/device/flashlight(src) - - var/obj/item/weapon/rcd/R = new /obj/item/weapon/rcd(src) - R.matter = 30 - src.modules += R - - src.modules += new /obj/item/device/t_scanner(src) - src.modules += new /obj/item/weapon/crowbar(src) - src.modules += new /obj/item/weapon/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src) - M.amount = 50 - src.modules += M - - var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) - G.amount = 50 - src.modules += G - - var/obj/item/stack/cable_coil/W = new /obj/item/stack/cable_coil(src) - W.amount = 50 - src.modules += W +/obj/item/weapon/hive_module + name = "hive robot module" + icon = 'icons/obj/module.dmi' + icon_state = "std_module" + w_class = 2.0 + item_state = "electronic" + flags = FPRINT|TABLEPASS | CONDUCT + var/list/modules = list() + +/obj/item/weapon/hive_module/standard + name = "give standard robot module" + +/obj/item/weapon/hive_module/engineering + name = "HiveBot engineering robot module" + +/obj/item/weapon/hive_module/New()//Shit all the mods have + src.modules += new /obj/item/device/flash(src) + + +/obj/item/weapon/hive_module/standard/New() + ..() + src.modules += new /obj/item/weapon/melee/baton(src) + src.modules += new /obj/item/weapon/extinguisher(src) + //var/obj/item/weapon/gun/mp5/M = new /obj/item/weapon/gun/mp5(src) + //M.weapon_lock = 0 + //src.modules += M + + +/obj/item/weapon/hive_module/engineering/New() + + src.modules += new /obj/item/weapon/extinguisher(src) + src.modules += new /obj/item/weapon/screwdriver(src) + src.modules += new /obj/item/weapon/weldingtool(src) + src.modules += new /obj/item/weapon/wrench(src) + src.modules += new /obj/item/device/analyzer(src) + src.modules += new /obj/item/device/flashlight(src) + + var/obj/item/weapon/rcd/R = new /obj/item/weapon/rcd(src) + R.matter = 30 + src.modules += R + + src.modules += new /obj/item/device/t_scanner(src) + src.modules += new /obj/item/weapon/crowbar(src) + src.modules += new /obj/item/weapon/wirecutters(src) + src.modules += new /obj/item/device/multitool(src) + + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src) + M.amount = 50 + src.modules += M + + var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) + G.amount = 50 + src.modules += G + + var/obj/item/stack/cable_coil/W = new /obj/item/stack/cable_coil(src) + W.amount = 50 + src.modules += W diff --git a/code/unused/hologram.dm b/code/unused/hologram.dm index 8622a923644..7254b0b6380 100644 --- a/code/unused/hologram.dm +++ b/code/unused/hologram.dm @@ -1,112 +1,112 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/obj/machinery/computer/hologram_comp - name = "Hologram Console" - desc = "Rumoured to control holograms." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "holo_console0" - var/obj/machinery/hologram/projector/projector = null - var/temp = null - var/lumens = 0.0 - var/h_r = 245.0 - var/h_g = 245.0 - var/h_b = 245.0 - - -/obj/machinery/computer/hologram_comp/New() - ..() - spawn( 10 ) - src.projector = locate(/obj/machinery/hologram/projector, get_step(src.loc, NORTH)) - return - return - -/obj/machinery/computer/hologram_comp/DblClick() - if (!in_range(src, usr)) - return 0 - src.show_console(usr) - return - -/obj/machinery/computer/hologram_comp/proc/render() - var/icon/I = new /icon('icons/mob/human.dmi', "[skin_tones[1]]_m_s") - - if (src.lumens >= 0) - I.Blend(rgb(src.lumens, src.lumens, src.lumens), ICON_ADD) - else - I.Blend(rgb(- src.lumens, -src.lumens, -src.lumens), ICON_SUBTRACT) - - I.Blend(new /icon('icons/mob/underwear.dmi', "Mens White"), ICON_OVERLAY) - - var/icon/U = new /icon('icons/mob/human_face.dmi', "hair_a_s") - U.Blend(rgb(src.h_r, src.h_g, src.h_b), ICON_ADD) - - I.Blend(U, ICON_OVERLAY) - - src.projector.hologram.icon = I - -/obj/machinery/computer/hologram_comp/proc/show_console(var/mob/user as mob) - var/dat - user.set_machine(src) - if (src.temp) - dat = text("[]

    Clear", src.temp, src) - else - dat = text("Hologram Status:
    \nPower: []
    \nHologram Control:
    \nColor Luminosity: []/220 \[Reset\]
    \nLighten: 1 10
    \nDarken: 1 10
    \n
    \nHair Color: ([],[],[]) \[Reset\]
    \nRed (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    \nGreen (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    \nBlue (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    ", src, (src.projector.hologram ? "On" : "Off"), -src.lumens + 35, src, src, src, src, src, src.h_r, src.h_g, src.h_b, src, src, src, src, src.h_r, src, src, src, src, src, src, src.h_g, src, src, src, src, src, src, src.h_b, src, src, src) - //user << browse(dat, "window=hologram_console") - //onclose(user, "hologram_console") - var/datum/browser/popup = new(user, "hologram_console", name) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/hologram_comp/Topic(href, href_list) - if(..()) - return - if (in_range(src, usr)) - flick("holo_console1", src) - if (href_list["power"]) - if (src.projector.hologram) - src.projector.icon_state = "hologram0" - //src.projector.hologram = null - del(src.projector.hologram) - else - src.projector.hologram = new(src.projector.loc) - src.projector.hologram.icon = 'icons/mob/human.dmi' - src.projector.hologram.icon_state = "body_m_s" - src.projector.icon_state = "hologram1" - src.render() - else - if (href_list["h_r"]) - if (src.projector.hologram) - src.h_r += text2num(href_list["h_r"]) - src.h_r = min(max(src.h_r, 0), 255) - render() - else - if (href_list["h_g"]) - if (src.projector.hologram) - src.h_g += text2num(href_list["h_g"]) - src.h_g = min(max(src.h_g, 0), 255) - render() - else - if (href_list["h_b"]) - if (src.projector.hologram) - src.h_b += text2num(href_list["h_b"]) - src.h_b = min(max(src.h_b, 0), 255) - render() - else - if (href_list["light"]) - if (src.projector.hologram) - src.lumens += text2num(href_list["light"]) - src.lumens = min(max(src.lumens, -185.0), 35) - render() - else - if (href_list["reset"]) - if (src.projector.hologram) - src.lumens = 0 - render() - else - if (href_list["temp"]) - src.temp = null - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.show_console(M) - return +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 + +/obj/machinery/computer/hologram_comp + name = "Hologram Console" + desc = "Rumoured to control holograms." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "holo_console0" + var/obj/machinery/hologram/projector/projector = null + var/temp = null + var/lumens = 0.0 + var/h_r = 245.0 + var/h_g = 245.0 + var/h_b = 245.0 + + +/obj/machinery/computer/hologram_comp/New() + ..() + spawn( 10 ) + src.projector = locate(/obj/machinery/hologram/projector, get_step(src.loc, NORTH)) + return + return + +/obj/machinery/computer/hologram_comp/DblClick() + if (!in_range(src, usr)) + return 0 + src.show_console(usr) + return + +/obj/machinery/computer/hologram_comp/proc/render() + var/icon/I = new /icon('icons/mob/human.dmi', "[skin_tones[1]]_m_s") + + if (src.lumens >= 0) + I.Blend(rgb(src.lumens, src.lumens, src.lumens), ICON_ADD) + else + I.Blend(rgb(- src.lumens, -src.lumens, -src.lumens), ICON_SUBTRACT) + + I.Blend(new /icon('icons/mob/underwear.dmi', "Mens White"), ICON_OVERLAY) + + var/icon/U = new /icon('icons/mob/human_face.dmi', "hair_a_s") + U.Blend(rgb(src.h_r, src.h_g, src.h_b), ICON_ADD) + + I.Blend(U, ICON_OVERLAY) + + src.projector.hologram.icon = I + +/obj/machinery/computer/hologram_comp/proc/show_console(var/mob/user as mob) + var/dat + user.set_machine(src) + if (src.temp) + dat = text("[]

    Clear", src.temp, src) + else + dat = text("Hologram Status:
    \nPower: []
    \nHologram Control:
    \nColor Luminosity: []/220 \[Reset\]
    \nLighten: 1 10
    \nDarken: 1 10
    \n
    \nHair Color: ([],[],[]) \[Reset\]
    \nRed (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    \nGreen (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    \nBlue (0-255): \[0\] -10 -1 [] 1 10 \[255\]
    ", src, (src.projector.hologram ? "On" : "Off"), -src.lumens + 35, src, src, src, src, src, src.h_r, src.h_g, src.h_b, src, src, src, src, src.h_r, src, src, src, src, src, src, src.h_g, src, src, src, src, src, src, src.h_b, src, src, src) + //user << browse(dat, "window=hologram_console") + //onclose(user, "hologram_console") + var/datum/browser/popup = new(user, "hologram_console", name) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/hologram_comp/Topic(href, href_list) + if(..()) + return + if (in_range(src, usr)) + flick("holo_console1", src) + if (href_list["power"]) + if (src.projector.hologram) + src.projector.icon_state = "hologram0" + //src.projector.hologram = null + del(src.projector.hologram) + else + src.projector.hologram = new(src.projector.loc) + src.projector.hologram.icon = 'icons/mob/human.dmi' + src.projector.hologram.icon_state = "body_m_s" + src.projector.icon_state = "hologram1" + src.render() + else + if (href_list["h_r"]) + if (src.projector.hologram) + src.h_r += text2num(href_list["h_r"]) + src.h_r = min(max(src.h_r, 0), 255) + render() + else + if (href_list["h_g"]) + if (src.projector.hologram) + src.h_g += text2num(href_list["h_g"]) + src.h_g = min(max(src.h_g, 0), 255) + render() + else + if (href_list["h_b"]) + if (src.projector.hologram) + src.h_b += text2num(href_list["h_b"]) + src.h_b = min(max(src.h_b, 0), 255) + render() + else + if (href_list["light"]) + if (src.projector.hologram) + src.lumens += text2num(href_list["light"]) + src.lumens = min(max(src.lumens, -185.0), 35) + render() + else + if (href_list["reset"]) + if (src.projector.hologram) + src.lumens = 0 + render() + else + if (href_list["temp"]) + src.temp = null + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + src.show_console(M) + return diff --git a/code/unused/limbs.dm b/code/unused/limbs.dm index b9a95ba889e..ef73eec5ece 100644 --- a/code/unused/limbs.dm +++ b/code/unused/limbs.dm @@ -1,140 +1,140 @@ -/datum/limb - var/name = "limb" - var/mob/owner = null - var/icon_name = null - var/body_part = null - var/brutestate = 0 - var/burnstate = 0 - var/brute_dam = 0 - var/burn_dam = 0 - var/max_damage = 0 - -/datum/limb/chest - name = "chest" - icon_name = "chest" - max_damage = 200 - body_part = CHEST - -/datum/limb/head - name = "head" - icon_name = "head" - max_damage = 200 - body_part = HEAD - -/datum/limb/l_arm - name = "l_arm" - icon_name = "l_arm" - max_damage = 75 - body_part = ARM_LEFT - -/datum/limb/l_leg - name = "l_leg" - icon_name = "l_leg" - max_damage = 75 - body_part = LEG_LEFT - -/datum/limb/r_arm - name = "r_arm" - icon_name = "r_arm" - max_damage = 75 - body_part = ARM_RIGHT - -/datum/limb/r_leg - name = "r_leg" - icon_name = "r_leg" - max_damage = 75 - body_part = LEG_RIGHT - -/*Leaving these here in case we want to use them later -/datum/limb/l_foot - name = "l foot" - icon_name = "l_foot" - body_part = FOOT_LEFT - -/datum/limb/r_foot - name = "r foot" - icon_name = "r_foot" - body_part = FOOT_RIGHT - -/datum/limb/r_hand - name = "r hand" - icon_name = "r_hand" - body_part = HAND_RIGHT - -/datum/limb/l_hand - name = "l hand" - icon_name = "l_hand" - body_part = HAND_LEFT - -/datum/limb/groin - name = "groin" - icon_name = "groin" - body_part = GROIN -*/ - -//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. -//Damage will not exceed max_damage using this proc -//Cannot apply negative damage -/datum/limb/proc/take_damage(brute, burn) - if(owner && (owner.status_flags & GODMODE)) return 0 //godmode - brute = max(brute,0) - burn = max(burn,0) - - var/can_inflict = max_damage - (brute_dam + burn_dam) - if(!can_inflict) return 0 - - if((brute + burn) < can_inflict) - brute_dam += brute - burn_dam += burn - else - if(brute > 0) - if(burn > 0) - brute = round( (brute/(brute+burn)) * can_inflict, 1 ) - burn = can_inflict - brute //gets whatever damage is left over - brute_dam += brute - burn_dam += burn - else - brute_dam += can_inflict - else - if(burn > 0) - burn_dam += can_inflict - else - return 0 - return update_icon() - - -//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. -//Damage cannot go below zero. -//Cannot remove negative damage (i.e. apply damage) -/datum/limb/proc/heal_damage(brute, burn) - brute = max(brute, 0) - burn = max(burn, 0) - brute_dam = max(brute_dam - brute, 0) - burn_dam = max(burn_dam - burn, 0) - return update_icon() - - -//Returns total damage...kinda pointless really -/datum/limb/proc/get_damage() - return brute_dam + burn_dam - - -//Updates an organ's brute/burn states for use by update_damage_overlays() -//Returns 1 if we need to update overlays. 0 otherwise. -/datum/limb/proc/update_icon() - var/tbrute = round( (brute_dam/max_damage)*3, 1 ) - var/tburn = round( (burn_dam/max_damage)*3, 1 ) - if((tbrute != brutestate) || (tburn != burnstate)) - brutestate = tbrute - burnstate = tburn - return 1 - return 0 - -//Returns a display name for the organ -/datum/limb/proc/getDisplayName() - switch(name) - if("l_leg") return "left leg" - if("r_leg") return "right leg" - if("l_arm") return "left arm" - if("r_arm") return "right arm" - else return name +/datum/limb + var/name = "limb" + var/mob/owner = null + var/icon_name = null + var/body_part = null + var/brutestate = 0 + var/burnstate = 0 + var/brute_dam = 0 + var/burn_dam = 0 + var/max_damage = 0 + +/datum/limb/chest + name = "chest" + icon_name = "chest" + max_damage = 200 + body_part = CHEST + +/datum/limb/head + name = "head" + icon_name = "head" + max_damage = 200 + body_part = HEAD + +/datum/limb/l_arm + name = "l_arm" + icon_name = "l_arm" + max_damage = 75 + body_part = ARM_LEFT + +/datum/limb/l_leg + name = "l_leg" + icon_name = "l_leg" + max_damage = 75 + body_part = LEG_LEFT + +/datum/limb/r_arm + name = "r_arm" + icon_name = "r_arm" + max_damage = 75 + body_part = ARM_RIGHT + +/datum/limb/r_leg + name = "r_leg" + icon_name = "r_leg" + max_damage = 75 + body_part = LEG_RIGHT + +/*Leaving these here in case we want to use them later +/datum/limb/l_foot + name = "l foot" + icon_name = "l_foot" + body_part = FOOT_LEFT + +/datum/limb/r_foot + name = "r foot" + icon_name = "r_foot" + body_part = FOOT_RIGHT + +/datum/limb/r_hand + name = "r hand" + icon_name = "r_hand" + body_part = HAND_RIGHT + +/datum/limb/l_hand + name = "l hand" + icon_name = "l_hand" + body_part = HAND_LEFT + +/datum/limb/groin + name = "groin" + icon_name = "groin" + body_part = GROIN +*/ + +//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. +//Damage will not exceed max_damage using this proc +//Cannot apply negative damage +/datum/limb/proc/take_damage(brute, burn) + if(owner && (owner.status_flags & GODMODE)) return 0 //godmode + brute = max(brute,0) + burn = max(burn,0) + + var/can_inflict = max_damage - (brute_dam + burn_dam) + if(!can_inflict) return 0 + + if((brute + burn) < can_inflict) + brute_dam += brute + burn_dam += burn + else + if(brute > 0) + if(burn > 0) + brute = round( (brute/(brute+burn)) * can_inflict, 1 ) + burn = can_inflict - brute //gets whatever damage is left over + brute_dam += brute + burn_dam += burn + else + brute_dam += can_inflict + else + if(burn > 0) + burn_dam += can_inflict + else + return 0 + return update_icon() + + +//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. +//Damage cannot go below zero. +//Cannot remove negative damage (i.e. apply damage) +/datum/limb/proc/heal_damage(brute, burn) + brute = max(brute, 0) + burn = max(burn, 0) + brute_dam = max(brute_dam - brute, 0) + burn_dam = max(burn_dam - burn, 0) + return update_icon() + + +//Returns total damage...kinda pointless really +/datum/limb/proc/get_damage() + return brute_dam + burn_dam + + +//Updates an organ's brute/burn states for use by update_damage_overlays() +//Returns 1 if we need to update overlays. 0 otherwise. +/datum/limb/proc/update_icon() + var/tbrute = round( (brute_dam/max_damage)*3, 1 ) + var/tburn = round( (burn_dam/max_damage)*3, 1 ) + if((tbrute != brutestate) || (tburn != burnstate)) + brutestate = tbrute + burnstate = tburn + return 1 + return 0 + +//Returns a display name for the organ +/datum/limb/proc/getDisplayName() + switch(name) + if("l_leg") return "left leg" + if("r_leg") return "right leg" + if("l_arm") return "left arm" + if("r_arm") return "right arm" + else return name diff --git a/code/unused/pipe_filter.dm b/code/unused/pipe_filter.dm index f12b36be467..10f0673728a 100644 --- a/code/unused/pipe_filter.dm +++ b/code/unused/pipe_filter.dm @@ -1,243 +1,243 @@ -// *** pipefilter - -/obj/machinery/pipefilter/New() - ..() - p_dir = (NORTH|SOUTH|EAST|WEST) ^ turn(dir, 180) - - src.gas = new /datum/gas_mixture/() - src.ngas = new /datum/gas_mixture/() - - src.f_gas = new /datum/gas_mixture/() - src.f_ngas = new /datum/gas_mixture/() - - gasflowlist += src - -/obj/machinery/pipefilter/buildnodes() - var/turf/T = src.loc - - n1dir = turn(dir, 90) - n2dir = turn(dir,-90) - - node1 = get_machine( level, T , n1dir ) // the main flow dir - node2 = get_machine( level, T , n2dir ) - node3 = get_machine( level, T, dir ) // the ejector port - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - if(node3) vnode3 = node3.getline() - -/obj/machinery/pipefilter/gas_flow() - gas.copy_from(ngas) - f_gas.copy_from(f_ngas) - -/obj/machinery/pipefilter/process() -/* var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode1, delta_gt) - else - leak_to_turf(1) - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode2, delta_gt) - else - leak_to_turf(2) - if(vnode3) - delta_gt = FLOWFRAC * ( vnode3.get_gas_val(src) - f_gas.total_moles() / capmult) - calc_delta( src, f_gas, f_ngas, vnode3, delta_gt) - else - leak_to_turf(3) - - // transfer gas from ngas->f_ngas according to extraction rate, but only if we have power - if(! (stat & NOPOWER) ) - use_power(min(src.f_per, 100),ENVIRON) - var/datum/gas_mixture/ndelta = src.get_extract() - ngas.sub_delta(ndelta) - f_ngas.add_delta(ndelta) - AutoUpdateAI(src) - src.updateUsrDialog()*/ //TODO: FIX - -/obj/machinery/pipefilter/get_gas_val(from) - return ((from == vnode3) ? f_gas.total_moles() : gas.total_moles())/capmult - -/obj/machinery/pipefilter/get_gas(from) - return (from == vnode3) ? f_gas : gas - -/obj/machinery/pipefilter/proc/leak_to_turf(var/port) - var/turf/T - - switch(port) - if(1) - T = get_step(src, n1dir) - if(2) - T = get_step(src, n2dir) - if(3) - T = get_step(src, dir) - if(T.density) - T = src.loc - if(T.density) - return - flow_to_turf(f_gas, f_ngas, T) - return - - if(T.density) - T = src.loc - if(T.density) - return - - flow_to_turf(gas, ngas, T) - -/obj/machinery/pipefilter/proc/get_extract() - /* - var/datum/gas_mixture/ndelta = new() - if (src.f_mask & GAS_O2) - ndelta.oxygen = min(src.f_per, src.ngas.oxygen) - if (src.f_mask & GAS_N2) - ndelta.n2 = min(src.f_per, src.ngas.n2) - if (src.f_mask & GAS_PL) - ndelta.plasma = min(src.f_per, src.ngas.plasma) - if (src.f_mask & GAS_CO2) - ndelta.co2 = min(src.f_per, src.ngas.co2) - if (src.f_mask & GAS_N2O) - ndelta.sl_gas = min(src.f_per, src.ngas.sl_gas) - return ndelta - */ //TODO: FIX - -/obj/machinery/pipefilter/attackby(obj/item/weapon/W, mob/user as mob) - if(istype(W, /obj/item/weapon/detective_scanner)) - return ..() - if(istype(W, /obj/item/weapon/screwdriver)) - if(bypassed) - user.show_message(text("\red Remove the foreign wires first!"), 1) - return - src.add_fingerprint(user) - user.show_message(text("\red Now []securing the access system panel...", (src.locked) ? "un" : "re"), 1) - sleep(30) - locked =! locked - user.show_message(text("\red Done!"),1) - src.updateicon() - return - if(istype(W, /obj/item/stack/cable_coil) && !bypassed) - if(src.locked) - user.show_message(text("\red You must remove the panel first!"),1) - return - var/obj/item/stack/cable_coil/C = W - if(C.use(4)) - user.show_message(text("\red You unravel some cable.."),1) - else - user.show_message(text("\red Not enough cable! (Requires four pieces)"),1) - src.add_fingerprint(user) - user.show_message(text("\red Now bypassing the access system... (This may take a while)"), 1) - sleep(100) - bypassed = 1 - src.updateicon() - return - if(istype(W, /obj/item/weapon/wirecutters) && bypassed) - src.add_fingerprint(user) - user.show_message(text("\red Now removing the bypass wires... (This may take a while)"), 1) - sleep(50) - bypassed = 0 - src.updateicon() - return - if(istype(W, /obj/item/weapon/card/emag) && (!emagged)) - emagged++ - src.add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] has shorted out the [] with an electromagnetic card!", user, src), 1) - src.overlays += image('icons/obj/pipes2.dmi', "filter-spark") - sleep(6) - src.updateicon() - return src.attack_hand(user) - return src.attack_hand(user) - -// pipefilter interact/topic -/obj/machinery/pipefilter/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/pipefilter/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/pipefilter/attack_hand(mob/user as mob) -/* if(stat & NOPOWER) - user << browse(null, "window=pipefilter") - user.machine = null - return - - var/list/gases = list("O2", "N2", "Plasma", "CO2", "N2O") - user.machine = src - var/dat = "Filter Release Rate:
    \nM - - - - - [src.f_per] + + + + + M
    \n" - for (var/i = 1; i <= gases.len; i++) - dat += "[gases[i]]: [(src.f_mask & 1 << (i - 1)) ? "Releasing" : "Passing"]
    \n" - if(gas.total_moles()) - var/totalgas = gas.total_moles() - var/pressure = round(totalgas / gas.maximum * 100) - var/nitrogen = gas.n2 / totalgas * 100 - var/oxygen = gas.oxygen / totalgas * 100 - var/plasma = gas.plasma / totalgas * 100 - var/co2 = gas.co2 / totalgas * 100 - var/no2 = gas.sl_gas / totalgas * 100 - - dat += "
    Gas Levels:
    \nPressure: [pressure]%
    \nNitrogen: [nitrogen]%
    \nOxygen: [oxygen]%
    \nPlasma: [plasma]%
    \nCO2: [co2]%
    \nN2O: [no2]%
    \n" - else - dat += "
    Gas Levels:
    \nPressure: 0%
    \nNitrogen: 0%
    \nOxygen: 0%
    \nPlasma: 0%
    \nCO2: 0%
    \nN2O: 0%
    \n" - dat += "
    \nClose
    \n" - - user << browse(dat, "window=pipefilter;size=300x365")*/ //TODO: FIX - //onclose(user, "pipefilter") - -/obj/machinery/pipefilter/Topic(href, href_list) - ..() - if(usr.restrained() || usr.lying) - return - if ((((get_dist(src, usr) <= 1 || usr.telekinesis == 1) || istype(usr, /mob/living/silicon/ai)) && istype(src.loc, /turf))) - usr.machine = src - if (href_list["close"]) - usr << browse(null, "window=pipefilter;") - usr.machine = null - return - if (src.allowed(usr) || src.emagged || src.bypassed) - if (href_list["fp"]) - src.f_per = min(max(round(src.f_per + text2num(href_list["fp"])), 0), src.maxrate) - else if (href_list["tg"]) - // toggle gas - src.f_mask ^= text2num(href_list["tg"]) - src.updateicon() - else - usr.see("\red Access Denied ([src.name] operation restricted to authorized atmospheric technicians.)") - AutoUpdateAI(src) - src.updateUsrDialog() - src.add_fingerprint(usr) - else - usr << browse(null, "window=pipefilter") - usr.machine = null - return - -/obj/machinery/pipefilter/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - stat |= NOPOWER - spawn(rand(1,15)) //so all the filters don't come on at once - updateicon() - -/obj/machinery/pipefilter/proc/updateicon() - src.overlays.Cut() - if(stat & NOPOWER) - icon_state = "filter-off" - else - icon_state = "filter" - if(emagged) //only show if powered because presumeably its the interface that has been fried - src.overlays += image('icons/obj/pipes2.dmi', "filter-emag") - if (src.f_mask & (GAS_N2O|GAS_PL)) - src.overlays += image('icons/obj/pipes2.dmi', "filter-tox") - if (src.f_mask & GAS_O2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-o2") - if (src.f_mask & GAS_N2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-n2") - if (src.f_mask & GAS_CO2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-co2") - if(!locked) - src.overlays += image('icons/obj/pipes2.dmi', "filter-open") - if(bypassed) //should only be bypassed if unlocked +// *** pipefilter + +/obj/machinery/pipefilter/New() + ..() + p_dir = (NORTH|SOUTH|EAST|WEST) ^ turn(dir, 180) + + src.gas = new /datum/gas_mixture/() + src.ngas = new /datum/gas_mixture/() + + src.f_gas = new /datum/gas_mixture/() + src.f_ngas = new /datum/gas_mixture/() + + gasflowlist += src + +/obj/machinery/pipefilter/buildnodes() + var/turf/T = src.loc + + n1dir = turn(dir, 90) + n2dir = turn(dir,-90) + + node1 = get_machine( level, T , n1dir ) // the main flow dir + node2 = get_machine( level, T , n2dir ) + node3 = get_machine( level, T, dir ) // the ejector port + + if(node1) vnode1 = node1.getline() + if(node2) vnode2 = node2.getline() + if(node3) vnode3 = node3.getline() + +/obj/machinery/pipefilter/gas_flow() + gas.copy_from(ngas) + f_gas.copy_from(f_ngas) + +/obj/machinery/pipefilter/process() +/* var/delta_gt + + if(vnode1) + delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas.total_moles() / capmult) + calc_delta( src, gas, ngas, vnode1, delta_gt) + else + leak_to_turf(1) + if(vnode2) + delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas.total_moles() / capmult) + calc_delta( src, gas, ngas, vnode2, delta_gt) + else + leak_to_turf(2) + if(vnode3) + delta_gt = FLOWFRAC * ( vnode3.get_gas_val(src) - f_gas.total_moles() / capmult) + calc_delta( src, f_gas, f_ngas, vnode3, delta_gt) + else + leak_to_turf(3) + + // transfer gas from ngas->f_ngas according to extraction rate, but only if we have power + if(! (stat & NOPOWER) ) + use_power(min(src.f_per, 100),ENVIRON) + var/datum/gas_mixture/ndelta = src.get_extract() + ngas.sub_delta(ndelta) + f_ngas.add_delta(ndelta) + AutoUpdateAI(src) + src.updateUsrDialog()*/ //TODO: FIX + +/obj/machinery/pipefilter/get_gas_val(from) + return ((from == vnode3) ? f_gas.total_moles() : gas.total_moles())/capmult + +/obj/machinery/pipefilter/get_gas(from) + return (from == vnode3) ? f_gas : gas + +/obj/machinery/pipefilter/proc/leak_to_turf(var/port) + var/turf/T + + switch(port) + if(1) + T = get_step(src, n1dir) + if(2) + T = get_step(src, n2dir) + if(3) + T = get_step(src, dir) + if(T.density) + T = src.loc + if(T.density) + return + flow_to_turf(f_gas, f_ngas, T) + return + + if(T.density) + T = src.loc + if(T.density) + return + + flow_to_turf(gas, ngas, T) + +/obj/machinery/pipefilter/proc/get_extract() + /* + var/datum/gas_mixture/ndelta = new() + if (src.f_mask & GAS_O2) + ndelta.oxygen = min(src.f_per, src.ngas.oxygen) + if (src.f_mask & GAS_N2) + ndelta.n2 = min(src.f_per, src.ngas.n2) + if (src.f_mask & GAS_PL) + ndelta.plasma = min(src.f_per, src.ngas.plasma) + if (src.f_mask & GAS_CO2) + ndelta.co2 = min(src.f_per, src.ngas.co2) + if (src.f_mask & GAS_N2O) + ndelta.sl_gas = min(src.f_per, src.ngas.sl_gas) + return ndelta + */ //TODO: FIX + +/obj/machinery/pipefilter/attackby(obj/item/weapon/W, mob/user as mob) + if(istype(W, /obj/item/weapon/detective_scanner)) + return ..() + if(istype(W, /obj/item/weapon/screwdriver)) + if(bypassed) + user.show_message(text("\red Remove the foreign wires first!"), 1) + return + src.add_fingerprint(user) + user.show_message(text("\red Now []securing the access system panel...", (src.locked) ? "un" : "re"), 1) + sleep(30) + locked =! locked + user.show_message(text("\red Done!"),1) + src.updateicon() + return + if(istype(W, /obj/item/stack/cable_coil) && !bypassed) + if(src.locked) + user.show_message(text("\red You must remove the panel first!"),1) + return + var/obj/item/stack/cable_coil/C = W + if(C.use(4)) + user.show_message(text("\red You unravel some cable.."),1) + else + user.show_message(text("\red Not enough cable! (Requires four pieces)"),1) + src.add_fingerprint(user) + user.show_message(text("\red Now bypassing the access system... (This may take a while)"), 1) + sleep(100) + bypassed = 1 + src.updateicon() + return + if(istype(W, /obj/item/weapon/wirecutters) && bypassed) + src.add_fingerprint(user) + user.show_message(text("\red Now removing the bypass wires... (This may take a while)"), 1) + sleep(50) + bypassed = 0 + src.updateicon() + return + if(istype(W, /obj/item/weapon/card/emag) && (!emagged)) + emagged++ + src.add_fingerprint(user) + for(var/mob/O in viewers(user, null)) + O.show_message(text("\red [] has shorted out the [] with an electromagnetic card!", user, src), 1) + src.overlays += image('icons/obj/pipes2.dmi', "filter-spark") + sleep(6) + src.updateicon() + return src.attack_hand(user) + return src.attack_hand(user) + +// pipefilter interact/topic +/obj/machinery/pipefilter/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/pipefilter/attack_ai(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/pipefilter/attack_hand(mob/user as mob) +/* if(stat & NOPOWER) + user << browse(null, "window=pipefilter") + user.machine = null + return + + var/list/gases = list("O2", "N2", "Plasma", "CO2", "N2O") + user.machine = src + var/dat = "Filter Release Rate:
    \nM - - - - - [src.f_per] + + + + + M
    \n" + for (var/i = 1; i <= gases.len; i++) + dat += "[gases[i]]: [(src.f_mask & 1 << (i - 1)) ? "Releasing" : "Passing"]
    \n" + if(gas.total_moles()) + var/totalgas = gas.total_moles() + var/pressure = round(totalgas / gas.maximum * 100) + var/nitrogen = gas.n2 / totalgas * 100 + var/oxygen = gas.oxygen / totalgas * 100 + var/plasma = gas.plasma / totalgas * 100 + var/co2 = gas.co2 / totalgas * 100 + var/no2 = gas.sl_gas / totalgas * 100 + + dat += "
    Gas Levels:
    \nPressure: [pressure]%
    \nNitrogen: [nitrogen]%
    \nOxygen: [oxygen]%
    \nPlasma: [plasma]%
    \nCO2: [co2]%
    \nN2O: [no2]%
    \n" + else + dat += "
    Gas Levels:
    \nPressure: 0%
    \nNitrogen: 0%
    \nOxygen: 0%
    \nPlasma: 0%
    \nCO2: 0%
    \nN2O: 0%
    \n" + dat += "
    \nClose
    \n" + + user << browse(dat, "window=pipefilter;size=300x365")*/ //TODO: FIX + //onclose(user, "pipefilter") + +/obj/machinery/pipefilter/Topic(href, href_list) + ..() + if(usr.restrained() || usr.lying) + return + if ((((get_dist(src, usr) <= 1 || usr.telekinesis == 1) || istype(usr, /mob/living/silicon/ai)) && istype(src.loc, /turf))) + usr.machine = src + if (href_list["close"]) + usr << browse(null, "window=pipefilter;") + usr.machine = null + return + if (src.allowed(usr) || src.emagged || src.bypassed) + if (href_list["fp"]) + src.f_per = min(max(round(src.f_per + text2num(href_list["fp"])), 0), src.maxrate) + else if (href_list["tg"]) + // toggle gas + src.f_mask ^= text2num(href_list["tg"]) + src.updateicon() + else + usr.see("\red Access Denied ([src.name] operation restricted to authorized atmospheric technicians.)") + AutoUpdateAI(src) + src.updateUsrDialog() + src.add_fingerprint(usr) + else + usr << browse(null, "window=pipefilter") + usr.machine = null + return + +/obj/machinery/pipefilter/power_change() + if(powered(ENVIRON)) + stat &= ~NOPOWER + else + stat |= NOPOWER + spawn(rand(1,15)) //so all the filters don't come on at once + updateicon() + +/obj/machinery/pipefilter/proc/updateicon() + src.overlays.Cut() + if(stat & NOPOWER) + icon_state = "filter-off" + else + icon_state = "filter" + if(emagged) //only show if powered because presumeably its the interface that has been fried + src.overlays += image('icons/obj/pipes2.dmi', "filter-emag") + if (src.f_mask & (GAS_N2O|GAS_PL)) + src.overlays += image('icons/obj/pipes2.dmi', "filter-tox") + if (src.f_mask & GAS_O2) + src.overlays += image('icons/obj/pipes2.dmi', "filter-o2") + if (src.f_mask & GAS_N2) + src.overlays += image('icons/obj/pipes2.dmi', "filter-n2") + if (src.f_mask & GAS_CO2) + src.overlays += image('icons/obj/pipes2.dmi', "filter-co2") + if(!locked) + src.overlays += image('icons/obj/pipes2.dmi', "filter-open") + if(bypassed) //should only be bypassed if unlocked src.overlays += image('icons/obj/pipes2.dmi', "filter-bypass") \ No newline at end of file From 70524cb214bafb81cc4f6aaccf2d580372ae0506 Mon Sep 17 00:00:00 2001 From: Mloc-Hibernia Date: Sun, 23 Mar 2014 20:11:54 +0000 Subject: [PATCH 088/102] Re-adds the crlf-forcing .gitattributes settings Signed-off-by: Mloc-Hibernia --- .gitattributes | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.gitattributes b/.gitattributes index 8a313292bb1..97d06f3bc8e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,13 @@ +*.css text eol=crlf +*.dm text eol=crlf +*.dme text eol=crlf +*.dmf text eol=crlf +*.dmm text eol=crlf +*.dms text eol=crlf +*.htm text eol=crlf +*.html text eol=crlf +*.js text eol=crlf +*.py text eol=crlf +*.txt text eol=crlf + *.dmm merge=merge-dmm From 41042d5efd01825d43bf2d36c1b01aeb2464a027 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Mon, 24 Mar 2014 04:01:27 -0700 Subject: [PATCH 089/102] Small rewrite of crematorium and morgue so they work right. Only issue is that the damn things don't GC. Also lots of duplicate code between the two, still some other shittiness, but this is much better. I really just wanted to fix the bug where after usage you can't use em again until the tray gets deleted rather than GC'd. On the plus side, they don't constantly make and delete trays every time someone opens them. Also, and this is important, I uncommented the crematorium usage logging. It didn't runtime in testing so it should be good to go. --- code/game/objects/structures/morgue.dm | 286 ++++++++++--------------- 1 file changed, 108 insertions(+), 178 deletions(-) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 338293fa588..e66e228e64f 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -12,21 +12,33 @@ /obj/structure/morgue name = "morgue" - desc = "Used to keep bodies in untill someone fetches them." + desc = "Used to keep bodies in until someone fetches them." icon = 'icons/obj/stationobjs.dmi' icon_state = "morgue1" density = 1 var/obj/structure/m_tray/connected = null anchored = 1.0 -/obj/structure/morgue/on_log() - update() +/obj/structure/morgue/New() + connected = new(src) + connected.connected = src + ..() -/obj/structure/morgue/proc/update() - if (src.connected) +/obj/structure/morgue/Destroy() + open() + if(connected) + qdel(connected) + connected = null + ..() + +/obj/structure/morgue/on_log() + update_icon() + +/obj/structure/morgue/update_icon() + if (!connected || connected.loc != src) //open or the tray broke off somehow src.icon_state = "morgue0" else - if(!src.contents.len) + if(src.contents.len == 1) //empty except for the tray src.icon_state = "morgue1" else @@ -43,31 +55,6 @@ src.icon_state = "morgue4"//clone that mofo break - -/obj/structure/morgue/ex_act(severity) - switch(severity) - if(1.0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - if(2.0) - if (prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - if(3.0) - if (prob(5)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - return - /obj/structure/morgue/alter_health() return src.loc @@ -75,31 +62,14 @@ return src.attack_hand(user) /obj/structure/morgue/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.connected.loc) - if (!( A.anchored )) - A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - qdel(src.connected) + if(!connected) + user << "That doesn't appear to have a tray." + return + if(connected.loc == src) + open() else - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, EAST) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, EAST) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" - for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "morguet" - else - //src.connected = null - qdel(src.connected) - src.add_fingerprint(user) - update() - return + close() + add_fingerprint(user) /obj/structure/morgue/attackby(P as obj, mob/user as mob) if (istype(P, /obj/item/weapon/pen)) @@ -113,25 +83,24 @@ src.name = text("Morgue- '[]'", t) else src.name = "Morgue" - src.add_fingerprint(user) - return + add_fingerprint(user) /obj/structure/morgue/container_resist() - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, EAST) - src.connected.layer = OBJ_LAYER + open() + +/obj/structure/morgue/proc/open() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) var/turf/T = get_step(src, EAST) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" - for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "morguet" - else - //src.connected = null - qdel(src.connected) - return + for(var/atom/movable/A in src) + A.loc = T + update_icon() + +/obj/structure/morgue/proc/close() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + for(var/atom/movable/A in connected.loc) + if(!A.anchored || A == connected) + A.loc = src + update_icon() /* @@ -148,22 +117,22 @@ anchored = 1.0 throwpass = 1 +/obj/structure/m_tray/Destroy() + if(connected) + connected.connected = null + connected.update_icon() + connected = null + ..() + /obj/structure/m_tray/attack_paw(mob/user as mob) return src.attack_hand(user) /obj/structure/m_tray/attack_hand(mob/user as mob) if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) - if (!( A.anchored )) - A.loc = src.connected - //Foreach goto(26) - src.connected.connected = null - src.connected.update() + connected.close() add_fingerprint(user) - //SN src = null - qdel(src) - return - return + else + user << "That's not connected to anything." /obj/structure/m_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O))) @@ -196,12 +165,24 @@ var/id = 1 var/locked = 0 -/obj/structure/crematorium/proc/update() - if (src.connected) - src.icon_state = "crema0" +/obj/structure/crematorium/New() + connected = new(src) + connected.connected = src + ..() + +/obj/structure/crematorium/Destroy() + open() + if(connected) + qdel(connected) + connected = null + ..() + +/obj/structure/crematorium/update_icon() + if(!connected || connected.loc != src) + icon_state = "crema0" else - if(src.contents.len) + if(src.contents.len > 1) src.icon_state = "crema2" else src.icon_state = "crema1" @@ -212,31 +193,6 @@ return - -/obj/structure/crematorium/ex_act(severity) - switch(severity) - if(1.0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - if(2.0) - if (prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - if(3.0) - if (prob(5)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - qdel(src) - return - return - /obj/structure/crematorium/alter_health() return src.loc @@ -244,39 +200,17 @@ return src.attack_hand(user) /obj/structure/crematorium/attack_hand(mob/user as mob) -// if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH -// user.show_message("\red Uh-oh, that was a bad idea.", 1) -// //usr << "Uh-oh, that was a bad idea." -// src:loc:poison += 20000000 -// src:loc:firelevel = src:loc:poison -// return - if (cremating) - usr << "\red It's locked." + if (cremating || locked) + user << "\red It's locked." return - if ((src.connected) && (src.locked == 0)) - for(var/atom/movable/A as mob|obj in src.connected.loc) - if (!( A.anchored )) - A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - qdel(src.connected) - else if (src.locked == 0) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" - for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "cremat" - else - //src.connected = null - qdel(src.connected) - src.add_fingerprint(user) - update() + if (!connected) + user << "That doesn't appear to have a tray." + return + if(connected.loc == src) + open() + else + close() + add_fingerprint(user) /obj/structure/crematorium/attackby(P as obj, mob/user as mob) if (istype(P, /obj/item/weapon/pen)) @@ -294,30 +228,13 @@ return /obj/structure/crematorium/container_resist() - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" - for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "cremat" - else - //src.connected = null - qdel(src.connected) - return + open() -/obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob) -// for(var/obj/machinery/crema_switch/O in src) //trying to figure a way to call the switch, too drunk to sort it out atm -// if(var/on == 1) -// return +/obj/structure/crematorium/proc/cremate(mob/user as mob) if(cremating) return //don't let you cremate something twice or w/e - if(contents.len <= 0) + if(contents.len <= 1) for (var/mob/M in viewers(src)) M.show_message("\red You hear a hollow crackle.", 1) return @@ -332,30 +249,43 @@ cremating = 1 locked = 1 - update() + update_icon() for(var/mob/living/M in contents) if (M.stat!=2) M.emote("scream") //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out. //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point in this when the mob's about to be deleted - //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" - //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") + user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") M.death(1) M.ghostize() qdel(M) for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - qdel(O) + if(O != connected) //Creamtorium does not burn hot enough to destroy the tray + qdel(O) new /obj/effect/decal/cleanable/ash(src) sleep(30) cremating = 0 locked = 0 - update() + update_icon() playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - return +/obj/structure/crematorium/proc/open() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + var/turf/T = get_step(src, SOUTH) + for(var/atom/movable/A in src) + A.loc = T + update_icon() + +/obj/structure/crematorium/proc/close() + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + for(var/atom/movable/A in connected.loc) + if(!A.anchored || A == connected) + A.loc = src + update_icon() /* * Crematorium tray @@ -371,22 +301,22 @@ anchored = 1.0 throwpass = 1 +/obj/structure/c_tray/Destroy() + if(connected) + connected.connected = null + connected.update_icon() + connected = null + ..() + /obj/structure/c_tray/attack_paw(mob/user as mob) return src.attack_hand(user) /obj/structure/c_tray/attack_hand(mob/user as mob) if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) - if (!( A.anchored )) - A.loc = src.connected - //Foreach goto(26) - src.connected.connected = null - src.connected.update() + connected.close() add_fingerprint(user) - //SN src = null - qdel(src) - return - return + else + user << "That's not connected to anything." /obj/structure/c_tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O))) From 7872658559e88a989368656c5eec7922bffea9da Mon Sep 17 00:00:00 2001 From: Firecage Date: Mon, 24 Mar 2014 19:24:56 +0200 Subject: [PATCH 090/102] Update tgstation.dme --- tgstation.dme | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index ad69ff0587a..f8eedcd3e56 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,48 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +#define FILE_DIR "tools" +#define FILE_DIR "tools/AddToChangelog" +#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From 0ba94cd77fb32e4e54fdb50a245454ae4218e552 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Mon, 24 Mar 2014 17:50:53 +0000 Subject: [PATCH 091/102] The blob can now switch its core location with a node, which will shift both of their locations. --- code/game/gamemodes/blob/powers.dm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index d5c88f010cc..c17c5248d25 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -160,6 +160,32 @@ return +/mob/camera/blob/verb/relocate_core() + set category = "Blob" + set name = "Relocate Core (100)" + set desc = "Relocates your core to the node you are on, your old core will be turned into a node." + + + var/turf/T = get_turf(src) + + if(!T) + return + + var/obj/effect/blob/node/B = locate(/obj/effect/blob/node) in T + if(!B) + src << "You must be on a blob node!" + return + + if(!can_buy(100)) + return + + // The old switcharoo. + var/turf/old_turf = blob_core.loc + blob_core.loc = T + B.loc = old_turf + return + + /mob/camera/blob/verb/revert() set category = "Blob" set name = "Remove Blob" From 28973b79e2ebfca28d51c792027c5e279501aad4 Mon Sep 17 00:00:00 2001 From: Mloc-Hibernia Date: Tue, 25 Mar 2014 09:10:59 +0000 Subject: [PATCH 092/102] removes the crlf bits from .gitattributes that shouldn't have been merged. Signed-off-by: Mloc-Hibernia --- .gitattributes | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.gitattributes b/.gitattributes index 97d06f3bc8e..dd93bd68018 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,13 +1,2 @@ -*.css text eol=crlf -*.dm text eol=crlf -*.dme text eol=crlf -*.dmf text eol=crlf -*.dmm text eol=crlf -*.dms text eol=crlf -*.htm text eol=crlf -*.html text eol=crlf -*.js text eol=crlf -*.py text eol=crlf -*.txt text eol=crlf - *.dmm merge=merge-dmm + From 65602cb72d04cff7f3d205f90e10afabfefea300 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Tue, 25 Mar 2014 10:12:33 +0000 Subject: [PATCH 093/102] Added admin logging for the gravity generator. --- code/modules/admin/admin_investigate.dm | 4 ++-- code/modules/power/gravitygenerator.dm | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index a0ef8fe00ea..5af2ebb0d14 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -22,12 +22,12 @@ F << "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
    " //ADMINVERBS -/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci") ) +/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity") ) set name = "Investigate" set category = "Admin" if(!holder) return switch(subject) - if("singulo", "ntsl", "wires", "telesci") //general one-round-only stuff + if("singulo", "ntsl", "wires", "telesci", "gravity") //general one-round-only stuff var/F = investigate_subject2file(subject) if(!F) src << "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed." diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 085a34347a8..f0e7168ad13 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -119,6 +119,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 var/broken_state = 0 /obj/machinery/gravity_generator/main/Destroy() // If we somehow get deleted, remove all of our other parts. + investigate_log("was destroyed!", "gravity") on = 0 update_list() for(var/obj/machinery/gravity_generator/part/O in parts) @@ -156,6 +157,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 breaker = 0 set_power() set_state(0) + investigate_log("has broken down.", "gravity") /obj/machinery/gravity_generator/main/set_fix() ..() @@ -239,6 +241,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 if(href_list["gentoggle"]) breaker = !breaker + investigate_log("was toggled [breaker ? "ON" : "OFF"] by [usr.key].", "gravity") set_power() src.updateUsrDialog() @@ -246,6 +249,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/machinery/gravity_generator/main/power_change() ..() + investigate_log("has [stat & NOPOWER ? "lost" : "regained"] power.", "gravity") set_power() /obj/machinery/gravity_generator/main/get_status() @@ -267,6 +271,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 new_state = 1 charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation. + investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", "gravity") update_icon() // Set the state of the gravity. @@ -276,12 +281,17 @@ var/const/GRAV_NEEDS_WRENCH = 3 use_power = on ? 2 : 1 // Sound the alert if gravity was just enabled or disabled. var/alert = 0 + var/area/area = get_area(src) if(new_state) // If we turned on if(gravity_in_level() == 0) alert = 1 + investigate_log("was brought online and is now producing gravity for this level.", "gravity") + message_admins("The gravity generator was brought online. ([area.name])") else if(gravity_in_level() == 1) alert = 1 + investigate_log("was brought offline and there is now no gravity for this level.", "gravity") + message_admins("The gravity generator was brought offline with no backup generator. ([area.name])") update_icon() update_list() From 3811c9af05003ae273dbaa160398a81c63e59d3c Mon Sep 17 00:00:00 2001 From: Giacomand Date: Tue, 25 Mar 2014 10:27:03 +0000 Subject: [PATCH 094/102] Added world.log and log_game() to the SQDL logging. --- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 11439465c5d..c6771a1ef0d 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -74,8 +74,10 @@ if(SDQL_expression(d, query_tree["where"])) objs += d - //usr << "Query: [query_text]" - message_admins("[usr] executed SDQL query: \"[query_text]\".") + var/query_log = "[usr] executed SDQL query: \"[query_text]\"." + world.log << query_log + message_admins(query_log) + log_game(query_log) switch(query_tree[1]) if("call") From 1d01d07adeeaf851616adf221a015051350375f9 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Tue, 25 Mar 2014 09:19:20 -0500 Subject: [PATCH 095/102] New Hair Adds a side pony tail, longer over the eye hair, a braid along with a front braid, a bun, an ahoge, pig tails, and a over used anime protag hair style. DMI of the new hair. http://puu.sh/7IAKi.dmi --- .../mob/new_player/sprite_accessories.dm | 40 ++++++++++++++++++ icons/mob/human_face.dmi | Bin 37562 -> 25873 bytes 2 files changed, 40 insertions(+) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 7bdc77290ab..a2bbf0fefcb 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -282,6 +282,46 @@ name = "Side Part" icon_state = "hair_part" + braid + name = "Braided" + icon_state = "hair_braid" + gender = FEMALE + + bun + name = "Bun Head" + icon_state = "hair_bun" + gender = FEMALE + + side_tail + name = "Side Pony" + icon_state = "hair_sidetail" + gender = FEMALE + + long_over_eye + name = "Over eye" + icon_state = "hair_longovereye" + gender = FEMALE + + front_braid + name = "Braided front" + icon_state = "hair_braidfront" + gender = FEMALE + + antenna + name = "Ahoge" + icon_state = "hair_antenna" + gender = FEMALE + + pigtail + name = "Pig tails" + icon_state = "hair_pigtails" + gender = FEMALE + + protagonist + name = "Slightly long" + icon_state = "hair_protagonist" + gender = MALE + ///////////////////////////// // Facial Hair Definitions // ///////////////////////////// diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 28add802a82fe0eb9978db9d3908c0184a2e6063..515a69547dfb22dfa95ccfc0035c486c5263da92 100644 GIT binary patch literal 25873 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
    {9CUq+8mJf{{HkMerD(|f|%bvRUf|W<$ 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

    rGbcIi_f*CK^tl`;l4EI|lzI2b`P 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 From 9181752ca3efbc54b08f7fc31ba083da5a83f250 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 25 Mar 2014 15:46:43 +0100 Subject: [PATCH 096/102] fixing the cure description for Pierrot's Throat. The possible cure will now read as "Banana" so that people don't think the cure is to eat a single banana. --- code/datums/diseases/pierrot_throat.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 619e0f988af..7bcda683a8b 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -2,7 +2,7 @@ name = "Pierrot's Throat" max_stages = 4 spread = "Airborne" - cure = "A whole banana." + cure = "Banana" cure_id = "banana" cure_chance = 75 agent = "H0NI<42 Virus" @@ -22,4 +22,4 @@ if(3) if(prob(10)) affected_mob << "\red Your thoughts are interrupted by a loud HONK!" if(4) - if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) ) \ No newline at end of file + if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) ) From 667a7735534f679aecbf03d59f74386f3c509240 Mon Sep 17 00:00:00 2001 From: MrPerson Date: Tue, 25 Mar 2014 08:44:40 -0700 Subject: [PATCH 097/102] Make most mobs del() instead of trying to GC them. Don't try to Destroy() objects that get del(). It was causing infinite loops and other problems. It's now ok to have something call del(src) as part of Destroy(). --- code/game/atoms.dm | 6 ----- code/game/atoms_movable.dm | 4 +-- code/modules/mob/camera/camera.dm | 6 ++++- code/modules/mob/living/living.dm | 5 ++-- tgstation.dme | 42 ------------------------------- 5 files changed, 10 insertions(+), 53 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7b8854eb22a..8df6edcb713 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -44,12 +44,6 @@ /atom/proc/CheckParts() return -/atom/Del() - // Pass to Destroy(). - if(isnull(gc_destroyed)) // If we're just straight up calling del(atom), make sure anything in Destroy() gets called anyways just to be sure. - Destroy() - ..() - // Like Del(), but for qdel. // Called BEFORE qdel moves shit. // Also called on del() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 02c1879151b..0c06a351d6c 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -23,9 +23,9 @@ return /atom/movable/Del() - if(!gc_destroyed && loc) + if(isnull(gc_destroyed) && loc) testing("GC: -- [type] was deleted via del() rather than qdel() --") -// else if(!gc_destroyed) +// else if(isnull(gc_destroyed)) // testing("GC: [type] was deleted via GC without qdel()") //Not really a huge issue but from now on, please qdel() // else // testing("GC: [type] was deleted via GC with qdel()") diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index ae68c995671..8116544117e 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -12,4 +12,8 @@ move_on_shuttle = 0 /mob/camera/experience_pressure_difference() - return \ No newline at end of file + return + +/mob/camera/Destroy() + ..() + del(src) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c1b235d5efb..f46e52a0aa5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -5,9 +5,10 @@ cur_area.mob_activate(src) /mob/living/Destroy() - if(mind) - mind.current = null +// if(mind) +// mind.current = null ..() + del(src) /mob/living/verb/succumb(var/whispered as null) set hidden = 1 diff --git a/tgstation.dme b/tgstation.dme index bb19c9d099b..9b4686ef59c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,48 +6,6 @@ // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES From d03563ffc73de9e362448817288080bf1ea23b89 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Mar 2014 15:46:20 +0000 Subject: [PATCH 098/102] Changed the relocate power cost to 80. --- code/game/gamemodes/blob/powers.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index c17c5248d25..c539b57afaa 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -162,7 +162,7 @@ /mob/camera/blob/verb/relocate_core() set category = "Blob" - set name = "Relocate Core (100)" + set name = "Relocate Core (80)" set desc = "Relocates your core to the node you are on, your old core will be turned into a node." @@ -176,7 +176,7 @@ src << "You must be on a blob node!" return - if(!can_buy(100)) + if(!can_buy(80)) return // The old switcharoo. @@ -259,4 +259,4 @@ if(isturf(BS.loc) && get_dist(BS, T) <= 35) BS.LoseTarget() BS.Goto(pick(surrounding_turfs), BS.move_to_delay) - return \ No newline at end of file + return From 2b168b3ddbf2452f024b0c72856abcebcf63f9d6 Mon Sep 17 00:00:00 2001 From: Nienhaus Date: Tue, 25 Mar 2014 10:47:56 -0500 Subject: [PATCH 099/102] Genderless --- code/modules/mob/new_player/sprite_accessories.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index a2bbf0fefcb..8682335817e 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -285,7 +285,6 @@ braid name = "Braided" icon_state = "hair_braid" - gender = FEMALE bun name = "Bun Head" @@ -295,22 +294,18 @@ side_tail name = "Side Pony" icon_state = "hair_sidetail" - gender = FEMALE long_over_eye name = "Over eye" icon_state = "hair_longovereye" - gender = FEMALE front_braid name = "Braided front" icon_state = "hair_braidfront" - gender = FEMALE antenna name = "Ahoge" icon_state = "hair_antenna" - gender = FEMALE pigtail name = "Pig tails" @@ -320,7 +315,6 @@ protagonist name = "Slightly long" icon_state = "hair_protagonist" - gender = MALE ///////////////////////////// // Facial Hair Definitions // From 22bac45a9358e6868f27519b4ec3852a3b790eda Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 25 Mar 2014 11:04:58 -0600 Subject: [PATCH 100/102] [CHANGELOG] --- html/changelog.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index b94fdf4bfb0..b941b4220a4 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,17 @@ should be listed in the changelog upon commit tho. Thanks. --> +

    +

    25 March 2014

    +

    Ikarrus updated:

    +
      +
    • A security review committee has approved an update to all Nanotrasen airlocks to better resist attacks by the enemy. +

      *New internal wiring will be able to withstand attacks, and panel wires will no longer be left unusable after an attack. +

      *Welding tools will now be able to cut through welded doors that have been damaged. +

      Unfortunately, airlocks are still not fully resistant to attacks, and will not be able to operate autonomously until the damaged electronics are replaced.
    • +
    • ((Hair sprites have been given a visual lift. For best results, set your hair color to be slightly lighter than how you want it to look. For dark hair, do not use a color darker than 80% black))
    • +
    +

    22 March 2014

    From 9d13a85092bd614aba959932975e5347282cf420 Mon Sep 17 00:00:00 2001 From: ikarrus Date: Tue, 25 Mar 2014 11:19:13 -0600 Subject: [PATCH 101/102] Changelog: The Second Edition --- html/changelog.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index b941b4220a4..474612e7494 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,11 +57,12 @@ should be listed in the changelog upon commit tho. Thanks. -->

    25 March 2014

    Ikarrus updated:

      -
    • A security review committee has approved an update to all Nanotrasen airlocks to better resist attacks by the enemy. +
    • A security review committee has approved an update to all Nanotrasen airlocks to better resist cryptographic attacks by the enemy.

      *New internal wiring will be able to withstand attacks, and panel wires will no longer be left unusable after an attack. -

      *Welding tools will now be able to cut through welded doors that have been damaged. -

      Unfortunately, airlocks are still not fully resistant to attacks, and will not be able to operate autonomously until the damaged electronics are replaced.
    • -
    • ((Hair sprites have been given a visual lift. For best results, set your hair color to be slightly lighter than how you want it to look. For dark hair, do not use a color darker than 80% black))
    • +
      *Welding tools will now be able to cut through welded doors that have been damaged. +
      *Damaged electronics are now removable and replaceable following standard procedure. +
      *Airlocks will not be able to operate autonomously until the electronics are replaced. +
    • Hair sprites have been given a visual lift. For best results, set your hair color to be slightly lighter than how you want it to look. For dark hair, do not use a color darker than 80% black.
    From 3db5e0d1378761557bdb12eb25adfe1a4d3b70a3 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 26 Mar 2014 15:36:48 +0100 Subject: [PATCH 102/102] Changing cure description to "Banana products, especially banana bread." --- code/datums/diseases/pierrot_throat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 7bcda683a8b..e014e901902 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -2,7 +2,7 @@ name = "Pierrot's Throat" max_stages = 4 spread = "Airborne" - cure = "Banana" + cure = "Banana products, especially banana bread." cure_id = "banana" cure_chance = 75 agent = "H0NI<42 Virus"

    a9-eho0C`- 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 diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 2e59c8155b489b351afed46867fe6092409ac86c..2d624c5cbf8b81530509bd014abfd256cb586d91 100644 GIT binary patch delta 5076 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 P^=(>qY_Y?o@67)LVZ7!Q literal 6917 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 %l5H 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 diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi index f0393979b54dd9d3b52a657f9715294350f1738f..7b559aad6349601f1e0380e3fea25632a53d6fb2 100644 GIT binary patch literal 48259 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℘S2+9{%#m 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 R_xHn}dzz0lD%7kZ{tx4{bx{BS literal 12174 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 egESH3oW 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 literal 77941 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 VP2LU$8gBsn)7H>aFS-p6`ait12VnpJ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 3beb3b2f2b11cb62f8399f56392fbfbff03bc60f..89e94d21bb19fef5d0ef6f0cc92a7cb3ec9174d9 100644 GIT binary patch delta 41071 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 E06sxvApigX delta 41113 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%0Ahj@&YhqOVTw)1JaQT?}{Ejv4%hLcDoq-`!C1 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 ZpLxUjJL`gP{N2O=1fH&bF6*2UngA%k*#7_k literal 64002 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 delta 7037 zcmW+)by!qi6GlqXl~j-xgarx7AJW|^4YHDpbhG3I1*Bm?Qo0-I2I&sz?hwhPd%yL& zf89IJne&`?-ns9YnQMW4ffym+Stl1k;O-8%wCeTa3`Zf3o4>C3XS3K4UWusBSZZVH zp+wN?Jhk1)G+jsGv}U%NL{$~}`2rk5s+m{XBP&0@VqXer3!cv)s?291#>JPvy{PIl z(C+;Zj9pjU6i4Hf3{Yi(JB%1keOY3MBMvlaCO%ktDNA-GgFDbe9+1M&`jrGIS`1S4WwJKta-xWHQfIup zpMGEr4UKYML0Uo!mU@`xZTspfZB2}astpW}z4&=B7rG&r%3`;n)5ah``L_UT8Yi=<^k)u7WGw8Fp={WF@QLWBEhRT-=U zpDa1)`ej8sZ=va!pHQ`e20kM>Z!3}Mn3J{jXO#$5Snl%M3fKEu@gAPcEWBLlVrybN znb%AfC2!XG+dUVZ64}-zwUou#?m8j@*+SzVKFM~*Z=qZf^3D2fHD8>Xo10}kJg!oR zS~n=TGKMko1A%F}V}VV4nG(hOm?yffXLS=bwY8zU>E5cvKDnp#+NM9uGOrx^x!+lO%SQej_*)o$_Be6+G0wIljM_ zn#=(d97L;d#Q?RqB~ciSD(=@$Htcdc2$5x-p%I2PNcq&MUlh}PXj*N>mn!(w$tA@2 z>iDgi_s`~LZ;6{3Vv8~Vf3ZgGgxa2g((>=J$D!@+_i{~&e^H$yilo~!?(7_E{%ZjU zEeht9NMqM*Raa3bQH%|`tL_cPKdDIAn~@~f8oV(dEuK}!8VI1cdDeCt40|kkdTq6a zt|oS?-m}%rXY@^6iiPs{%^SPlE3myx*qY($PG=t!_Gh4AhRB zz#Z(TKWo>M>v%h)nd-EviMeatjv#39GOcc$8&lCvZhXQ;cN%xo3}pEU-Dw-VFR@-;Aw?giaR3-TL))Frg_T<57DnpQ;@98K1F6HU5XIi1 zZRhNQf~Wq_bWd3$mCpFiTRIFF@bG>C12o1a<%B%8A$BZ>={U^(Md+k7Zs@muEa@}k zNHy~!U%bx`)G>7E)YI$LR40{j_3&`HTK1@R+t=~(@+xOtH|Tc_*O+MEw?;XwD1xeg zb^iZ_usU^S{h6f~&_J$x-os;B6cG{e_RdI2vV>s!I8gX}YciGxpTk}C-I%@>=NvI- zmD5wS^q4??>!_aw#Koc2WQXhMsB}P!apjbqOI`oTC@fT*pe+i$bcxzq)`(HQ7*5?k zfax8!Yi_cJF{Jxm>f1N0W4B$DIee_8{x9+9$o}{0s+yr8@M`sbM}Y0rxCJpGvHoze zk7flDHge{H&Sz-vPNjqd!->HJ+H=&;*zVvg+ZJylU98zlZxj^t1GDG<8MR}DzDr`e z-p@+*Mg(pT`k*zHEBQCL?rCbA1|&a$_#kAQZcevPTQdd!VVZbFSL$3eR$b~b9IGbX zg(e>gd>0wFEi|3+cVVi^V1no+xfv@CE?|sE{!wn�b{((WE#9xgI}Y;?Bx-IwsSa3{OAiWX_S^Q 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 delta 41012 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 %15d# zvZ^|;Mrlv$_aZ{A3N4S-?c9%lZen=4?>{SR^kajXcMKoJ3plO6Ls{NPcv@lJTp|%* z7&^u04Npw&h6XyWY$0B>P_9;__Ahjba%w!r8Ayz>T@SvnJDDR+PZbZ!)g8F+}! zjbgBrzp{DH#_vCWtZ#D0&$8#I4K-BX=jjSzqs97;)9IIqyNEUs{$&F>+NAxs&&3FX zqoRN`%z4%}XSUvv5#)9QX%+zHw_O@*Pw}4e<_%=_`yuCf)r%;zKi!ukH*fMz6C5eB zr3SNU92@}_vG@G!!)DF2!FYA#zC3WBnRrA-sG)wVJG=)nJ#D#&>TzkMc$v>(zdJo; zA0)z4A^7KJE#gx_qVIrD>vxM~g3esAR_v=Mvi$-Oxk?xR7O#v4os1cMhYGXjy1qxX zjzCJyKH)rm&+(@AIer02wU=^dk~G{hZ+4@o;Ku>JpRz>*Tt3R~1`!6gWHBMG$k=qy zn03bt96Tp_YG~B=Sg2TQy2`$z1a_l1s_7SPGI(+u72rbKp5!p+7zWVW)c9x>YXI;0 z%RIoQf9iCf3K118#3=ZMoGp-rB}hWP*9w*(uW*K>@7ChH5b=8i{O-pP3ZiD#eh^4i zJkBPyhLc;SK*$C?E^Y?S&h9Q2Hg-;B<%TFW9$umj+_+Wv&6$#j`X1fpAK7&p7oMx{ zl6yDPZc_(rXzg!x6c4H&`z>4}X+^y>8SyWB>{4npFNnuypH8PI`Zxq(^8{MS+o0`d zhfn=xKgL0CMMp<254qXVJZDzO%1-xN_Iow0xm+Jc+Ut9R*35;c@6RRueY!v3f#;B~ z_lHM&KQ-&|{3SAyDS(m-^YTB*^Wo(U+UR1H*AIhOh zhQe)pGaf7x#KD~IOonxLzkq-yO4-CDC(d1PYp&)A5YCx`8t_+f>1tlCy34CdK))@s zt4lHMPpApGsVie41^K%)QubfS)uefj8AvbzC4C;Cw^uam41BF4@_%tfOH|^mzTlK9 zqr_{kS0mRG&J;2wp4>Y9`T5H(`AGQ_(uXRm$$cFosFsB z0s==PvUqGH$dCt!md}GUK|cpx(3aynt=su2eu?K9%^NSX+^frL)YP?*+rN0yI_a11 z!W14}EIxM4Jci*RmOFkNbi5W?eEeWR4WB^vNNbXKP@ z6^Ni(xD(jC5OO%`+8p)vkDS|4g}1Kj*1p4wKA9Dr9sYzk@uTrZP`}=-UO2z??6&8~ zad�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 diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index a38a213dec5560741ef8af5e3d6670b07cde9a6d..12791090e09e87b4a8698118943c216c99a23adc 100644 GIT binary patch literal 28058 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 ByW9W( literal 34755 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 ufkmj)a8;<-5~1?)%(1cLH#-{ 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 z zB!!zig|@SC^;=^+N zFQwWad*~C-|MiZ2Ohz?hAkT%KcckV(tX#GCA}u@^7W36&vV3A+4Hs`=iaD@zcU;UI z|B0X3_{70X{S!X#yv4;`oijW$=U+4q=(+D`nSb$P4`HXw_?x%Wxo=S8VsKUodi_U_ z9>M3IfBu|xNpHC+l^?eT2icn7NicIMe~rTY41~q8wCv8yu8Z%0?7Cb_VDaR$GWly1 zmc+mR0QWh;*N&^u@i_{EMtXo!=USEm}E7K@URzB}b@h}^o z=VufbDY?yVeaQIwvRD78K0E#AC8tTT?nlso}w}^QiCbB1DHMjGrgx1{D;%2Df17r z@l)CSBdymz^?z@UeXM!0`-`Wt)8}95^DowB(vr{mNBaEBW!LaDPN-=cOt(tPG<*I* z%V4#-vuDpjYTpRVlWaEnonpQc=)+X1I69;pt6Zr#_E9UvxhsR>Y4Szb*A}H%@UpYghbrKFs2o&$mB%_#j8=#d+8@^4;OGa+%MU!-rWs^NEKz zp3d2!29uR3_WAPpFrSX$k?##mzHC0s(TFr)qP_0D*B zOD|Lob9|UxGkg3o`~J)HV3u#T{OS1V^B*(kKW4W->i2BS<;MVajeITl1b(dL!#oDV z=CA3+<;xP6FUP~%m|_m>oX2Nj^0nxfm8sQd_*(P-SMsF>{Syav7}*y1I%i?#v-)H_ z$oB>pzI;B+@Y3gBOcUz;zyJOlh7KK?d_O7m#h9AIQn+woVUw&9B}zbabhJR`&Ye4k zkYdZ_=!Q=>Uf!kSr|aL0_NTSo@!#pQ9UuAj>@LjrgI&9Jxl5WXj>k+E!JVk(!ex~V zD#4V@h!?eT(Sxa#ixHSoT;z0OHa^eQ2rhDR^SDxBJzTV6O7Wm;O1P-StW>Fzru#0> zMJ*;j{;>P7)^SiyS5nudaA^}&a=biJdA)T_tgE1)Afafp@B@EYgcBE?+GVaenc+l&s=3a_3sP=)u&=#RyC(E^<0C8=vQD z1Q$8Ed0eTm9xhrjrFhUaC0x{EruF&P%$YMa8?Z>%O6o+eKFzpZy?XUzuqeFKd8YGM V+j{qm+(I!8>Nc&jx>l#r{|DCKE+PN` delta 10640 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 PE(ZO3#yZtnj?w=I>t9Pd diff --git a/icons/obj/doors/doormedglass.dmi b/icons/obj/doors/doormedglass.dmi index 250a82be8558ea7ea4569781630585e6298be5a0..38681ab3e25879159ecae38ec7ce4a98fc0f2f85 100644 GIT binary patch literal 232658 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

  • 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 diff --git a/icons/mob/screen_cyborg.dmi b/icons/mob/screen_cyborg.dmi index 8fad55192be469880d5483d6eb9368ca688d5f4e..3492672b32e31af3de938cf692fd9b4eafc1f977 100644 GIT binary patch literal 20810 zcmYhjby!s27cV??i5Qf0htyZ4r6d&T?ovdgyI}?d0YO433279hrE>^r2?+`5mTnjr zX6`<}_r1?^|G@yx*=O&y)+g3F^Il8i896B(DGUZ9f3B>k1B2m!zrq%Y3BlK$C-qw3 zKdk-rj64->JgnXATs`evoMABEjF_YW=Z^nwDNP<48ddP?g*|KP|B9>6zesccuI7Q> zp~BsSPw*g`k2Bv126tZmyO{EkN>e)>*z-b+|LwFmm1FGA=4*kQ6)xjBc{h$07u;u9 zoL+PLZIkfC&|kj$Wkz8Kn^)s#!F{@iOx^n~_fug4s$LRzD)e@5e0jmT+W&V}hl<+d z(WZ*a>vUv#vOG$qxAfgCLtsB1nV9lhH2G-D39`_a(O19uW;1W7X7l|}&4)Bt;(LK< z1Ft;h*W0S6rO6t;{hi(VR^D$caaHHUK7P#j$UTrKHbYp(a`58{^US>?T;p^jVufK# zGKFE=pCiWv$5xf1=xTp491o7QJoFMht1`hU6+j3gvD94!BZ1=GfdDY1{>+$JQyAHA~}9`)fv zd~hT?NmLs*j*^>#5)lVaEKlykD4zO?$QM*1saHA&VL7dL*F zY{A#vKVB{RZd$ihsxm3PG3&7}-Sa6aNlE{yzkj2&-fY$D!5?8!f5S+E?MF2#=-;AO zC`7OyssEZ?)!ZEzC>G=M*iB&|T~QOf5ye#GJ8bi9A=f*1L*&lTYVxF0W4ZLdfB(F7 zi9Zu_@*5i)mv!4#O}~}5uQ3TZdP=K;IXUrc8ox;2b6}=~e-xs{%`PnL`eQhvr4n(=v9b!`LH>y1CuteTELC+82IYfze+{Qm8o6)`L4 z(p{cH^hGn~a{E?T+{kJ<8a=Vft?L?ikSa?5eCUUx@fQx`R2^wQ#>z}FO4xOZP|xeC zhO#|F``WHpFFfvQUMu)pU)gJ%#ggJb7atB( zB5@@7Ej7Xizw#)SkeYI`t`@@{zF_<8dKWhEWyWyc$Dj&!;ATmF2l2gR))X%>rBB_p z;Gx9N7ft`#+_NiPEuP2s)wz>B`DY@cLDJXPN5w=s*x!HDU}<+`C=I6|lPfdslBxBz zs3zs;c9gnWcaJG0DEL;#v*VED*OVouJYyMVHq|TA%JbjaTs+5#7vfVw!tP3U%%h9y zHF58q&)YJi&nmokO(rhCX=aI{)ZsojR(BZ?T4jCJ{i_?}u{F1T-6j%IBO>hWPYjDe z8>tfaG3K)6Gb4`I2OG0=$rZwHxLpySw5^smqM4}W3Uh=TZ@o!mAZ71w*mq&g|9Y*Y zaa%M!=F4Lr+>r_=Q$tj@rmWX41;#7h0kPL52J_v_i9kPWeshF9y?A89{Ng(c-Tfq3 zycjjR^#xUXs#)aCk(P;{@98#%zC3;(6~)HQ9Wgh=+>)IQBPBKST0bIu@ZiA^dyn_t zYy-bhMRv!q!;zr?TmiQ&{T^Qqn~7;@<>t}^S-}Q9rSu(B7~yvF>2;ELljlENISq~2 z;*#uaxx52h&iP3NA#_>Le#Dk?Y4rUKxWupt8Aq>w zJ-sOCCbFu*eVbcEik2e%b37zF9p_hc98d#WJ>G2($kU_4Je-N-3#}E~ilmH?>H2}> zzkl|{@)AuiD1gxuiqX=CDW_Ss3Na3RBFhzACR(iq_gWdNFj3{!N4wbppG}@ z)Z_#xDJkoJ$s$gkBwaYE@=i8Ju>8}lc&g6`w;)JA302{$$ALHPbXFD$_i7#Rk-`d+ zyhmkt9K1w!U4Gsnp5O^4c1bghGcZh(vZ2gHai1M4Dr;nCWH6Z2*mnsb(KSqico|t!0u$L4GB2M@qyP)47dG5$ zqimQcxn0z%V=l5(P|I+U6T$Qngoj)MSNvmq4|jKQw`Kfb)g#2o?`Pp$xeQXiT9vb_ z!wlerCFz4qoPse{i3kcJo=KwRq@7=jeG?1?T623 z{bQt%_w z#>yWa(5I2`Se{0>@?YZIf2$RTdqMBaM^b7q@mzZJnU=Q9VNXiA_*kQ$7Fs1|=51g3 zd81YJYk9w$US4Qt-Y>zSBU=cE%8W8Ve(7A@-Gm6)m0a zFEAf`Xb_4(G9sQ{w4k^H-vJ^!8g_O*A23|nY+C0mb$v31gB4WA^bhYJNrg*F*cM)J&TDZH zQDw2m8&z0^F!tLb2v$}ep@hgW@i(OPxIX`DSJ$)A^TV;qwP%->p0mh%NP6vO6#N7;k^|o2!>T<7R^?SY zKAQ%0>GW8T7bKjB0#Z^sd;Bpvtx*gY;sBMGn=6jMG#57)7DhIDZR==h$*HM*FfDX; z2&0O6m#(--tg$SBH+1ubY{&1#yxjh8!SB*!d2q8IZahn22?}ig%x+a<@?2B1E;^=d zm4Y1E{A9e;G-ahHu8Gc)C9}uArcqpBkl7XI))smb=8pn!Q{H?;YG@f$V~Uz@xk+!2 zzBq*YG1X8m-NDN0U0_e}5HyTv{eRbMbVlRNN1lf|J`#L-qV!{@rSts8ia@PE+y|&%N?H z{rT1{%(WI6nh-l<;}YB-_!=bAHa5#urwLC_ykWQ8s0WP45XKQ1_n>Jfab;emNr~cO< z%yKop)_p*Mzlzw#eOoS!7j{4Lcw_i#g0y}SJyv|m_63m>o470VzuT7+CM!IzQkiMs zz7)V|LA%SiPzN_>)+cqU!}Pk)o9?s|a7-;MmUbK-^TiZlj6?MYqr;`*(!SZ!ws|$+ zmNM2*r}*vMY_!e0i7~n>w=g7WQ9w9z1{HNMAkvUVz~-iE5Q)xU5X8~aKhC>~deIq< zQ(-eeedq37a~rA}{1baw-ZKZx@%#TCq};_HV$P-?W?nHu2Etxu$r9eRCSS;9n?ZQK zWP4v~iuYfAb)sKG1D#=_!(xghJQZ-UWPW4$8vFJ~A5M?X^`^H3bhkh0g|e)2Pu_~i z85$PsP+nMgU3Hs@X{gM+N%{Hn_SaP(KYi*zqmF}e2u}i<>G57kMvOiz71pR}sJ#k$ zJ&D5DqrP%?-=W_Xw?#1U|Mu=o4$eGBs)~m3*j;IQcr@@yF$4poeIzJlHg+do_#m8| zeyZM$9aJ!zzE7OtnGI~jgvimz5PS;lyF2Jr6?7}xXH}=+ELlxEyP|F1fnU1%b1)e2)ouf z&w<>MqAn%Qgg^c7V&W2;%>tAE!rbyuVSEq7a@gaV7~(#larLT+uQMQ$;e?zbQnAtLY1F%gc29kWle$W5nId61!cDBq@%!;`3+`0j;!N~UF z%N6v-WqyhoBqI7GP4A4TeTg=Sm%?b39Zqb8xX9qR(5W6>gjVefnZQWT51TX>JzEv3 z@G6HUB}LUFHv-GhM;@&gu;vy7^u&nt?eU9GSfz3FXahLAaDiZ}JT|odGrAkbuv?et z%_J%vB(v5y<_-s68;$Rnk@Gd&B|Z@M!Y@|N)0$4T^QOjbnXg%hk?s7vtd!KO$QIi* zHYv6sNMM(uTclzi@*xp1A_^D4fHF{<0d3=MswqoZbNbDYE(s6Lzu$-HyP zrY)U0gHn^qmt9e$8&9iR_Dq?3Kj9lVbh%gAJ(=G>Cv@{{Bd+F$xtJ`FcWeePuo%H| zyHl8%w>PHFZ8+r030Uj{QEm=+>^QlEGCmps=qKvw{$oGpxjMGi4AV?mTsG~gLl%y4 zFCNLF3h-;-$eCqo%XQ*6CNPz23?==qx?~pu{0Us;n);_Wu+MMM5#^Bt6+d5l#NY;7 z>&cOQB1|6c)eW7Y_Y2T<336pen_$&zj>7|CIYV)oU+g-U6<%pMeEss8&qWNLqj7^? z^p^t?SzVpj8A0K(mSou2ANWuAyItFBo|CHx37G>0>NnoM)@Obc&K?oh5@>1LS>7gF z#6M{KFDidyuArOSYZm}Oke_4u!E45geisgYv2Zyzg*4_nmcV z>V*BN9f#a=JW-cb{Pr$8-5k%KKbSN(mpWLxSH#uC zB#px7@TNI0xv}Q~ zrd_Xp0vNboE6m1{(;*X#^oO5By#zQQC>u~HbHY^=i7vlPp1 zF=FcAYd4exR%^2cCh4=c<5tE-EeGhX?@=GO@sC#|%70K56P;CU|Ko!hXXm4p(mty<>8#6jmVo`qO$!EyjXu@ds{hsc`M% zKpZx+G(@gPSld9$ef$?)mVT*NxM-;@wITYwO{@H98+9~6)7&2EKq&#c3;!Q=4Glup z?qCaefq1ApB2+0yEqdVt@hcd>FWae#7iHQoH<`v)jBiBHh8BKZ4zk1P)Q@q5RcqSq zd{o;CP~0=ZHSiiki;$@Bzu()85K8lw9or9=92AcS7A%=QJ|i92)!a-aDeNjAuhAOa zQ8`7+-mM^2uv6B&gKuw+$38L|+y%Sq@#3Z5+_F)ynfYW^X>TV14o;;Be(!>%44x)w zUkw6@{iCZAbkNw>H?CU=3tXDy3vW40$8CeDw%a0jjf0D|oca=dwX-K?o6Y1{xY7Jt_TE%JHgqR^HJGaQQ*z#GSSz z3E9TT@1Gf}z8`=4_U$iVaLTHxD|vA;Y*JDgo11S)NlC^1jyP;wC7iK&pO zOtXqf-3gj9b}8LUNuwTkiHV7>N2||=PiE;uSlgU!Qxo5x(}lfjMHO=)YP2@E%eT<;@tK*<6!-{W z=a>&agOo2ynm^cTgL`ryYl(%hZJATHNhcL8%cu}+*?j~*pnqX=*InT!J-m@ zBuF3pin<+z2GTpndv|7Mx+;QK_iKD|a<>A7w4#v_El6Rhqh9u384?MjqdGtu_x&j~ z{Wo58x74I&dD0TG79%#ln1w}iJIz$*1f1`Mqlj)YD4Uqjxgf7a-Q3*t$}PU^{;eA; zx0H=#menvbV|W(J@B(n>UzyVBmDW8+s|lJ%<%sKOaQEAcjOq)mL8z_ba^HUiDL0PK z_vX?88~Fi9kaNqa0p_d@c{pvGrHzCKVa}1*!!b?S!!8=jgVRaNM}9}Ip2pCDe+9Ph zBe5DWbRs-FJlUFAG9T#0VsA1^(k|EGDJ%FG8>_)A`up9}33vq0{^hvxms{VykmiS> z6vKkXz8+>DN2g~b6@0eS6SyiA7tj{4|2~i23<`;rJgO>Qb2JP^qLg~KX=7-&7Z;ux z7>L4*jg@3(pWL+89BuaV(8!c}?&kIY=B?ivhMzH zZ`Na2`jxG1mDjdGS@V&~cf)cGEaqAQjuv;AEVEhvm8zB|{9FwCRXtrbYv zzO)8ijpjeU%M^5??evn{duOVBwJ$*eh*sTi8eW5Tz_p>hI@`5w3&wGr{_zg5aOj{6 zN{rgi7ZAhX&f6v}^}v_=s+l!3lA{3Woyy8f8jam7(U^^lg}E=r#(~i*O_H4B#^h2t z?&u7Uh5I|vS~alz_r!x=){HgWwT9I0mwh^_H86qCzkz#_*rTRfl6YCQ(Dq&*@+3ww zT#y2m22OPWdjkV)RkJikr3Uunh3z>C5uYW!?gMYB^L5ql)}Vma>oZe25qrhguetV{ zk8jclS-e6Wt$n!nD7-I$`;m3`4H@)-g8gKfIzWJ_O6!Q6Zlc%)>zQghVdvS;pcGqI zO<#a0u^TVE9ZE>P94*wE{UnqSB;ze+X3gu%)9ID~F&i733~{%&gyeMbDJeZ0S%@L< zV{gQ9dQu&N{L~=R>wOQ|KyGkwasr|Rpf=a+t;CTPsN$zsRfBe|~`GK`ji@ylS z4w<iibXpNW_Q;{)~@BDgbs-x^oFuJqW@pyoGf18H5Djs;O*3wCGLwUaz7 zBBH6o7IC#(Cxy9K$^Z7P%J=Z4VM%1Bbb$NTIIl_dnM%+B*E{(BGy48FFXG6{|FDxn z)^*a{r_yKN0$?^KuDMxieK>0vBuJ5V9w9hfGdOAu+9Fnka1i`NFj6wIRAIY2mWXQ+ zU@zE=WIs_SL-1rjT$kiEzDOz=8{ZRK2z+#unltZuu=oTVW$$>A zF6v?>4#eP1@C%&gP2K<Xkiej_x7c5%4hWOpJgB`YCz&D7Fu`6tQNL~&2#ZT6|wpvSgD8B2#f%-o`) z$)MQ&=sLQ;Xj?Nu`2Aur-AI83E>H@n2JT&wSAV%`QlQy4>sy6-) zDtvv#fgfu=7XUvSY4_O=k-bGj1C*1%XqYs zo;-$TZUjBCjMiJ@Ma_rZ^s_ zGV^qsfn>M!U-$N!k2Pd47uFDM08lpo5CH-m2wPTrKQ+P^KOM29M&g zivDZ=0&Q4Lqd&+MLS9^C%@HWzg-Bh1jQk**1H48Kv!=C2&C>qC6$O$27&(#{s zb()1+{_7V)$*!VX{ZXe6zMr2aS>=~eQwv%AYB`@*1#v(^MrI9Kg&-wEKzHzCa`ICP z3#Pl=8h{RyHq$S> zX|FLF?4P9fPH!yZbN+(qKg^*XIk|+}uRzgWceE1Au#cmhj+e^4VXn{p-8}H3oX)Sxby6 z-)hRB!t$QQK{p5tlwyAtyBb2oleKEeBrw6LD%a3@Z6Lh2nE;@wVRO5%wj=lb5 zJv0dTa2y>o{gQWoUv=YW={WX$f~dlMO$BgfNT2~{VDWfZ_8TZAP{vi+4v$t^KYJR- zGzgGQ+++R50s<=yFlhxG8|W5=gZOh>>L7r&SVQCH_GG!(PsD`2VI|mM2%z7Q(G&u* zjliI|cV}v>fwigl>{&u;YM)Jtc{eD6Js^>d8{9dwg3j*s#4&HQUhU-}uo$S&Lg(bV z)L*zw@qcFllg&1Gpa9zdC@A~4&Se7vJy7&A zB)y^_h5~-@rM0zjleYk9kiI@#?g~7eFa)6VR17(DLxv=E=(yO;2-p5JzxKN%1&bc4 z@AP2cQI4`!TBy}H8(^4Dt)bW;9BE4P?&$b>bvvuV#VVkwi?s!9cv| z0_x(uKR*c0SQ8LQil-lF+xwIF?4~MMp$K5cUJ#Md2xQ0MJ2-50DE=YU+nT5(c+;;^hij_N4tSXHl z{tFn`*OHPCEdl4FrKVyKxt$N#m+t83=>7F;wP7Q31qwi*!G5KS#Q~2T${(4_O?J>w z_X7;O2xKYH&ghdd%|?{NpOWWb<9z|QLjef`X|Q60(p+Gp2ObZKK_Zii&j5%4O;Gka z07{Aj5Y+vumIGKH;OyWYjQrGO>`y-|Rt?KMI>7+i_F{j&rEL7*SsYWBbKO{(`C|at zodD;=1J3wCX?qOrwhZuMc^`p&EH>+k7fmDd8pzKK>40P)CrF~Zp`h4k3&Ddlt|c7x4)h$g4Gg*$+e1O0k{D1ZR#2Bf)ZGE3 z3)m05yu7TOobMoV4Px&h7zzRB-);H( zfGURy8dM2^1Y{EuiUZQjZF7XRtbUmk7zB!XdXx~v$;xI~wD?0T$^UGp@2?B8G#vr- zF{D%KoXsJ13byLaWEmq^DW`gxFe}Iiu;9a9_P7yHM*twJ*xB&{Qn(1n&MUx(Ja?u( zg2r1C;3^|P$|_(H1%9wWT^(ijy}GZ>j11XR*uNkBAomIsVOtP?kWgFD4Rtklm= zWkzdQO^zKkeJvq2#Dh54SbOKqwFpQJv_@`?jKwIvvc;jt`>#OL9*SSk*l>etx5K0$ z2&89#Nj(Q19spA`*r^-LG8qyc>jwiu$dM)=7bgEr)~KkcsTzkAXAG!E4;=pRgH7%P zHMM>v_OUNWREVX3Mrs)?4rnVubQ6Hd5%8cYtb1-A9Ub|C1oc}_wWWRZ`bGkm`b!Xy z;qyrSVgm*V_b~9xaP;9b04u-Bkr)-=b-j;^+nDoNC{T)~2I~m_mgye_2?}tLNA}}9 zkf;E?h-uJ5D=I322ylsc)1O<&PXsJk1D}^?nOrf?ZHQbclne0H!6=Vn_3F1zqeUS1 zP%Zo&t(m81nB_^j{d1QE%MN=nm)5}KEPUy;)(iYvmjw;bYx_4*Oapo(8}GR@tu{w; zC~0WM>fNlt4gD5Fhc2 zZT35+{m%*p@G}o6v@#3=utz`u&_@G8Tlg(ysxGZT*|7WY2pV!}jpuC-D8Tyk`_=dvgOKlV+X2QXlyN6hiGa z?H7W;0i$eeph`f22#VlCyHO6znV5A$T%vHjSzr`(u+dlV7Gf~t#3$R3_H5o#2AXyN z!%mhck9%JtvQsP@>oWLUk8%A+I#IZz1{wE=`?oP`Zn%M8$Y~iF2O(S0scxT2z)GKjf)p7OV*{SK+IcQ*b@dexXAnt>lRl#bKoAIqio)K# za|4fimx`(jV8?KwcHWJErTvBtrc4CJ4-mHgWC2sCwgKL{0*Jz_?@A0rxIoH{RNLtS zX5fcGZKTQsNdmE#14=&{K&qL~oEKzp0M6{aGcww@r}YEo4fE;mzqx344{hk(lHdH( zWy}VLwokK6^k!Lj)cP~S?SSGK+|AVTMLwjb3rac(0zerU>H2W(Op= znfz97pY1OUgL9Gyx)e68b$kI*1(Ft^*lGb-YV_V!@%9##kdSbkYfSp^;l@y=^Z-aj zh;ABzfhblC2q5ip3u$mcMG&FyBO|T4qNrwpBFfLtuWSfg{sUNgGj%S&JPz^&Bnq-r0IMl5EVuZ;An^%)efe+QaBMME{0~my z6FYplBF1`tSRSe`NygpsC}DdkWv^I-dO@Mkb{zM={&GK%wWU~a#8%KbX3rx_T zz~FqYu0Fx#y$q7-8^9jNzqK)7;Ot{&rUqcB5PgMGMn)zR#Fmbp-p|syd6lP62_g9e zRFdOt{YMZiIsnbK{*(@Yf)0`_FXw!r)`?#B`s6NUwMM)QJmOmRhh}thK`2!n5xnBSH9wKGDB!>SvK? zD9g#t4LIA$d7i)p2^(;RzrSfRgVjF;RvA$0`9RA98Bx}-P6xJZ2x?l$%i{tjnhQ<| zlFz`S$)tB_{y0w)bM0~7q>MVg4idK5MV7!5$8|4Mgh z?E~2b2_DGt1%qQ7z-HnEZUhi7kl_Z%#*0V<$TOgzjt0dRK;v`(hyYq(#e?;&K@}Vj z2;kNp0wDP>=+cvojjetuoWA~e=<)lQm;&g)fY}bXu*YuAr2Ai|x1sOlcuYy3+gBV z+%plw0-k>XSjPpJvV!Cph|<*sEJh3*dpmGCfr|l76m*;12^9YQ&LaXN$DnrtIw2ylY|`HlbjL_nXH$fT0ipK z)cR3X1@4p!Oih5|p&*>@-oE{$+@j?IoZSF>oRmBueb6(jCi5==c-TmDD1$sT$U*|C z30d5otnFaAC{TBy#E}3KDv(I_ZkiL}-5i$1t^!*ND90xG6z0d?H=5>#fZw1AcG?%T zxEesW0bKY6;Gy9cWTd3f?gL+bSG^4 z$nXc{YYlS6K;sQii|#cJ;YR8wPB)Q}z^HI1?Li021YN>hXB#|?!$c%feW%YiUi`1> zPfo85qc>GfP~QY7!4A+9 z?Qihdpan*rQ1byU6itBFtzK@Ia{~hjknH%hw0=O{H2@ifm?}t{(=DrHYv2(>rh@0@ zNC@b{R0NzmJ2(F00;Vu&tPdW11l0l}_CQR_0a^l3_vKoD5)_G`x&lhe4|N$KwGH*V zfGO9%`8yBlbpow5F<34dVacHSkw5s4oI}o1bQP@J0}c~;b*^0l`>p~%(K>ce7-$_? zF5jM&l*zFh`@p$i0ZbLhjs!w|5p-6YFP5Xn%Pq4&)TaRy5_O*K1$e_ND7X$bW&>mf z#0n#r{39VtxWp2f3B1d@OiUV3w$(bOvO*8_8EVx4dIZgB0m0M&$_hj|07q!P+$x4# zbztbY9WE;Yw%(QhJVD&|fCW^rZy-NQELtE3@D?MZ(-aXTnjx70z8yiq{2COq8}}ZD z0kg;*7^6UvKLNlDm38ps1uhG%pa6ip{{=w>po!qXZ!k%H22wG-y!EpG7M3oN9j%PC z4gPY&7UNV05|=;i0q}c)sQz3%$*5V?KYdEAuGw zCuxxi?#%)XedhS>3!cYP|70|Tq(j#RsO;mm?#gI7?sp^nD?$;D0X7(c7nrp;Om#~- zES?U*f?r15S0vzO?~McM@A}yi-&%7@N{-h0HfaMOIv>9zby;g*^yQK@G!Rk|=xfeG zx92^WqgiD%Xly@xAs`)!Hor#EE2E7Cg0F12X(R^b$HcphxsVoet&DrACi55h;aUgp z5cHXJf~%d@3IixaulqsyVAOHRhh5HU8+@gKZ@RGL%7tG1}<>l==>erMHJs(UE6y`H8O>3 zn{n0TBswZ{mGP~k^NnLjQGtyV6;t>4=uvCwXeEAStI;0$?U<$9V;o0OdeaVr3Kx}o z0-0`RLc9CvI_utF^tdJxwxTv_v>xA{+OQCmT!&8Ae zsh^+Fz6;9h?eBkCGqy@apFDa!(a(Q@xp8zpxm-TgEbRq%n+rh))zlsZSzZ`(NCj7y z`|vFof-SLMd4q038ifoRC%g32xZpiCBs&&oG8g#JT41yKH^;>;b=!zP1>5Jw$}Ct+ zF45#v^0@Ua8LEx$SwsCW-J6G^zfQT!xy!5eFCW%vg7dy3(16kin)~k;3I@ zjLLA1K4E_`CEul5`|?pYcbs;%x7m{Iy>)bgE3!mw+h_%cgKY7G#{#JlmVYwevbTS= zNAq38Z`x<6o*J|EPkz7zGu?LZT=^JUYS8!CT785(?9NTUY#cO~bv=49@>zvU9fxHS zu7XvK?r25IVEDhCop%@2{YtUb@%Tjec7Pt4c|IXoMvTa2W?8sd<0xvFwLsWxJovlq z>9z6t=!J^`nXYtl*+AW6emwl`CuB57tlz#4whSW)(*n1A!}CH1`fHl1cHU|Ys~7W4 z9OAl72^z(Vlbgc0)bMdX5sXan3M&qlew`@TrCECM%j4{Pjc%ck;1;XBgLc)zmK{#8 zZs&kV>nvO0&k;(PiQAq5j-|{c&th-E&H7QED?I;;wF6tVR#0+T$I-9uC!$6I2J7(N z_E?TCF1OAY6vd7PH807_lyuImEWC33tQx9%rQY4xG`MO*^J)@B+D9S|qT*3J2Bwaa zy(Ybf!|-M|^4a~NBEzdJdJ)yr1EM=Q>yz?@DDx-(lr9b$ME_j;#}S82Hnen+mSB^g z(iD=Q3=i}(%Kj33=i67`1=Sh_zWiYM zJFR1)0bJNKON71My+5+jJ?Bb;`_T_63JCt=@#heoxIl)ijoaY(rYmv92J{qsy-Z{t zu|)e8ZSehnziiz;N3oc<^u0${$j-NI@QxOr7_KyR+wb!e z;s!5e{QGkZf-AfP2h7F2;TYHsc>Im1F%Txtp%HgEKcxTiLYRVule4Sld#@?8u-5VN zqelZyL*IML&#!J$BKL@te`8_(L9nt*!l8d5Ok~+z=Wp#6jIa&;H?r{C7~f7alL~oe zSa};NVUST9mSNyUnXLN6>RQ>Q1Q>D6#`G%1gG4E;{m3*qcoh6QISd3w-j@PtcQUM4 z+%>ZBZf=*y1JEk$D9-m@;7}Eh{TtcMx;+@ z>@iks<7nqr7z&S;66QaN8+<8+?> zMhMA8xX8sUq!TQP_Au*l&e6VjZN;2)FXS-js?wBoC_A~<8I&-Qzb*@>_qm#MkHt`W zK_ZKT0#}vZagULsFSF$o&R?>)T(5)f?TE=|>;m-O4ONH=o!InAZD9~sSzlZf21eO8??*9&Q!Gn%_1}#P2w~^{3(q zB1;Ofl)@UWpZmfZ2w2hy3cHv${a|M@*RwBg_TPR}I@?f^W&7(1_x)3MD-i~1e@fS3 z&*J=$d}fOomFJ@ONjU`*WPQ<5GZr~&LWt~joS)~rM2Xx#FBXgbMV;cVRU#V-9%G}K z?;oprJ#-XxvF4)+m-<_iN(bKTkw7Mim_ero{Y??!Pm)iVpr!vwHw~S$ zCYBIt(6O2gnzqDJ@?ga9WsQk~6xrkI|8mLIKVKBLui@WFBGECvQ2$&QRbf>6Cti{@ zF*dZ%#RSIn{UOla{~afY%}vg$uNV@-i7hPE)Hgq)xeyg7b80#8HVq@HuPK~BR2KF1 zhg$JO)K3zYqX=~h3Lb><(;|B0EIs`V9Q-YdHwg=?6kG@qtv*ee=3gSLOGQ4{LX?Uc zoR}Z21%j9gA+!)>qIdxU14e#e^{zRA?zVuXzLQA!^r>RnktyMU6zb|R%7+Z?2VZ=~ zjBV1u$cG?DDA2=OEBgxz?Lq}e#lD2xV%Z0_ATvNA)qZ}+?7q{Vi@T0v-* zzykAfqsGEMcBJkmCKQo)%zTlzypP<551$);A>k46*S>{+S0|5#;K_ehb=y@PdtbIC z_MHzE=2KR{tQVE+Vx<<}T`m82 zEh$}L`&LOI@f;Yu(8wYfS0p>I?3^TPsyeI+sAI2bIKlKg{n=Ga%x+HS9S7!b?rlz+ zX597(_W`I zcG|aySf9*0=W=|@&2O?^dxSeKt)g}Hdn zB|<>f4Ws4vkF|?#rrvct2Q?ww`uWKwT5#ApuaK~x^*wGWN(r2eoCCb(KQ-tzpt9}l zKtz9@+FOF%qt7EKVG4M}n zC=(slfFEb4%U<41m~F+?wY3L+N2}Rl@Zc|tBbaR6n5#)#p81Uy^^OvV>VHRPsGvg*(8Y(*2Y=!Wx6X^(4H3bE>+u+S z>R_{~Vv)eZ=C0g@I~7holQPo@F=Bzy1n>;}T7?;}HQ?OoIxe>VAau+fdw@^fR_4@x z+M*XaLda2g1I^ZKw`XMp8?`Z^4%X9D@9ZDm4q|Y4bZ#wB-g0NhdsFzXAl(kukg)zb zUET^uvF40FLF(GX0-op9&I^-I&1!yl5KWvW^q7}&=g8?EId#}o}SGRkI|2p2f zml_;s^gDE+s1fYIZDzUDv3qaoQY>kVEz@P=m6er87z{kGCeV&Jid>5Jt*xK9EiW}r zeNinFF-^0_SeKi4{fp`z2-b{a8>V0x_^zaX&t=RRHfI($K5lxOk)U3jLXh4Z!*6qp zPsTa*I+LRC1GU`!=dVn6(T+6%6Fa$QhK+HbFb@cVZ}?yBJ>9?o1}x~m=7d_(v=~NG zhj=1;d-2)WmVZ0o1UGeyjb_o5|Mj2hvy=^qq?j(+Sb6z| zHdh@iUj~_v0&aCt=t53=OzZ+5>*#4`PnC~QwPS->`a*;o!+73ZREW$&gLf&&muEV+R82G}5X{U=^h>3MW z^P3EB-Utxgj+S}V( z0i4J=butJWcrMhLgM-05!ev*&J~?;^8;rB0g8wgA6e9>`Fp#ZZXnEog^_psf!c&=F zU9S@R|6E&X3YRZfM0)~NYEZmasMabs@bl*B6;b*^H4Gn2h*7q-5V`skLblYmtBI1L zThCOx(2r1G&>HwrmV;>T!-&i4&|fa3Fctv;b^SFk!1dR*M-6(%%V#g+{x@NUH%IB{ zoMo{TJTm3E#tD(iM+FK*hJHjZ77TxaDS_-Kc$0@f7E5jEdBG1A_7|VQ?YOduA1qgd zX(7RL&GEy)hYWOoU0ml*$*Qsmi)CiG`*=+R%o6WvmzVsS8Y#GFe=i%>S5A&N*j6fB zkex!mw*POVgvaHz5erKe`Ty>|=wm~4)60EG>oC0m2fRWGy+{gPA|>qvAGScXW&7U? zwpYY|a5MTzJ!nV5NWMGM82!d2uGSMCbiSKJ031#I8IrvhIAEyuZ*+9@G-wLR^_Cj& zL7%R`$*M&)X`PNv3bnKkY*!wh^Rx^Qi(yuQi;>Cw(w6a9SF0mKTr3g6WUfziky7~C zv>)=mui1*B6b6KhVLEbY^q$=sCsYeH?oy#9av4^~0Yj4H@VD3%cz*K{Qma#?>7EI{tuNsoxtnxEQ!Bf)57y1m} z5d1{#IifJ+HMl+d6C@YFH>7pGxH?xjUT>BCoXC8wYMVSOWlU@Rpr?_FPu8@?qYTf; zsUP)w&2@l+VzCE(;yn^L3Z}K1M9?NR==1H#Vna>c&Kab4D|SDYzdgBWV!`qkRd(VN zF}w}*{y zDm}SHTu2JDq(jOYxLJskE(lMlXR1rf`io9;eEiwpkpxUU=HPNNr1viO(saL*oC9O3 z{_IgF9&bkjN^+q+#X&KWZhxHj`d=@Ha@yTRFyAZcxjS#km}beVP{D9S+_4NFt!iB( zf)2N6&Sh$3u3?g z3T9E}=&EOD4Y#R#_j3pf;ypwDpiNj00h8d=P{PU1zcwrj%amrkilGa+K%Uv6!`IJC>!HSzgXs}W3RrH(XJ?MH@b(QQ?7bMOKZ zxh0&!MP801WbH~X}RWQLo&gL!3ahL z1yd?5OBNa_ja4~&$sSMVo_uU1NX)?_f{v2=fh*5Sj5~M0$pb#epcQ+t6ubLfzu!D~ zeQ-b^BnrLQRJ-=1(zbzsY zkKHDZhL_%;M-7HW{PBa!XP6hk{7cm2_awgdT64r+Th#brI1p)u)-?20X)FhS4xCC& z8YcAL>iE{niTRht`vRuIcewonMlHxci4icBj7hYHx#- zj(b%6Yvp;s_F{^zYMSW)uGZ+;k;6$?fbJM(d1MEe#*_olz*3wHa`oiUJ7- z8y%VGS26D$UgyoGzZZ!L&=5=iEpsym;Wds=9HME8h1|ngjddYVTae9=5=&Ut59es> zGi(^*(3z^8ctERi<&=6rOyODrN!aT@M^1;2b+Li3pC1=30GimOpYpNkf<}jHcIKxc z@3RJS6fu49?HGew^%0pMAPkN0To+wy6USKPk85^G^**JP%g}|OzU3;O4hiU7Ah7V( zKqI-)>@<5bkQ!;<7Zn}wcwfXFy9+ZVG?}`oX&0FRmyE$Lk3VFm;Vfh5!NT(T`hynB zCx9u4U-sU0F64Dkzc%LiohuIkWLIaIeSB#U(OZr_W8Rdld^*~jifyY>63H9cq{-{Y z)C%GO9IB+Gw0_BY-V^rVrOdMTJRw@JU+q5k-g5}&6qxv&DJl0^W1!+f3q??=H&WG7 zuP@yG^163cl)I0-`O8`46@aqPhx&|k&WHnHeW2_6$(D+!t)lRWL*{i2ecfwSg`C6g z4ibC?R`U3ZM%9_crYb6J>&VU4aRSuN*&Z_#k{2AAn6TB=Z;ndNu@QA7N0`?9{OC2# z{RLeDm;NqM9U%B_&9&Qy)O<+F*crGM&s-`ht$%xI>FxQoeb=u% z_?E_;c~i#DKNoUw+unRD6Q~oKe`PfAe~~{zE*n=>QbI{e7S3}jE?|P-_8G|cym?FQ zu*V7FxV?Myx7zYGkW3HtX4qL2WI>KNL29`M zlru9fu79F`m2J|De=vEzym}!XW*YL{$R!#t=nnAzAt{nz2%nHNqZk5t48qPvq_{$H z{Nm2vCJC*Z3qS%HuS)K{2putA0Mi*LL^gytu6YXr@Gu~Kot!nl+bMe2U@ z;CG0N^42>2G=vc<#O}OZ$IrxGI zN9_ske!UrW7h8zO?rV|5MQor&@9 zkJ=bJPMkd7MCy-hM584&A#g8-$?g+1*ha^1eP8kPtNDOKAyjOg&eeAz1?@U0JjkxI=pUN?V-jo22G%ps}B&8K(8q$LVVc+AQued0V=d# zbnTo;?HX$A(wMbZVGyTbnVy73a{i}c>pq9cJYcdHOPWe595>Q}3=TR#ba6f2oN?6d z{+~(9bO9Y{3UGzx0t~}K;Z{qewlHLZUb@_PFc0p9+rxs<*tgSXDd;ePT?u<76-opp z2~yNid_`ut;*M_==*f5i6w&I};^E*Gg%Ye=k3Lg1acYZStu>#m{7j--{SKcRZc2|> zP+lMtZzkU?R+%-+3X64ETN+K;phIvDHwG{`M$a6rLK{ffl`Y+#+-8jR{=AUZUC||s z8lw)x-_p2oe1>NQCo=8&Qd%rEHZbApi_jFIpw~pLAdw+t4kqkt0ZACL;V|skdl^&g zJz8*w=RqqSvfNo`5ER0G>L*E+fY^W(b3Qdb$K2_D&*U1Do2I-Y$f4t=-RWx3RLnG)XzVNfQz8RYQemTebwp)Ows{zj19)PMk5uM1eJe~#T@@#8n zj@}}fKrry>3QlEYW5R3{L`Ezw^9w7KEG8Hhh~s3IY1TqYauft`Iog8C?Q`e5RvbvW zWa&meS!oK^0OzWj=LNrRYa>my@6vv;@KoOPk)R|^Oj`>^AtPG)W=7RAKPUOz!4abd z!6cBt8Yk9xQ*>g32&U3l^i=lrjag)x8>A~ox!2O;E*8`r{|+H=i5zhRPKzsa<;w;<}<~mP=naa^nyM-Rlnf`|;`$o3CG>XcA~lOxy$6 zh@G;ZU(nMiFU(>fG$jpT{rDD1_W~?=?%w6@Ayi^VXJ@(7*QU7i`wmk_2IB6QcCN=( YKRBbYuuX0PJrW@sD?7`_c&{7(0yizdf&c&j literal 22340 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 diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 98fc2ab41f8f130f0243038ef5084e1e4047f3c0..90a6095b3eee93e7cfd276fae1780abd65c3c4cb 100644 GIT binary patch delta 25578 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 delta 25690 zcmcG#^;;EP*fuH7S3OllJmu z=62d~+RKqM|JISK)DkRN$9t5W;vu@Gq>8Y#=4PTA$5v%Zs+>qhnOIWWcwA8%gQbu9 z=W#SeDIg=CSrsXUD?-X`-M3NHh?R-8WLFz^zTN}B@5`b`j>6fjWy45O(!?0Zx?T*;nx~cBPms(b~eZbI7oiHP8*~STuKIA^H0S6 z@jerp1MOvt7YL+U4diW`UdB{A8-D}`c8iA!c=U*;9HZG1QDAnz7Dwx-HCmH-(doA}D5-)& z>jS+^xax@5ysAHGeen`nvj)Ime+9wpuKYZ+^R$n_TMcXLheDPLJa(fbY3#L@9W@>F z^C;u|3+?KBXJzklF}6F-tND1ju5-_0s^y}s|OFcq(OoYcz~pYs=|zT zQ7&@c-&Z7M*&{w&F?C-lPGq;l(uCY;kaB`gpPb{%~3!*|%F$ z4qlH2If3<-R~hW(-B3gP<7{NcQmKxsC`5KZ4eeia2BsNBx6%#X+ZQ4%IXSHiuy=gX z!PJY>upSQK0SWC^y-dAWzwOac@P%*+_4YQaPq8GOVDY6S8slxza6udo%Jiat$w zA+VrytyvEQW7GWAsSFG}5B%ytHJdlhEpmDyJf8oDHXZ93#tf{X+Q`YTrNwZr?5Uu8 ztef2MK&I;fi`;OAPTo=Y-`1(WZ0+Q~&TL!zPcSY^Zb8iDyKUK?>KLsr6_Z-Cg4yHu z^K}&IN6D$~J$+;1A6N+25Qz^xy=B^Pg6^`1W>e~15t?t2v6Kr4u_wvUV@rQsik~lP zAKXvaUmx5j1Ao(2gJ6iW=WR_svw4^BqczLf^PaS^9)>Z)nB_~iE^jg}Z-d+0VVq6( zjB83UUt{<)pDT=BsCm7vWg*_CtoMmgNr}Ec?g2j4(V;<1X%!VKCDTbhR)Ew|Ggk$8 zl?*s2f5=1c4r9zN?(izU^q%VFiPY!^CZ{#w!^*a2p~=R}QX)Nz&k+5|BI zbX~n2oqCSkvh312$2q|`EFm9Znhwou_}Ns|j<6IJa>NDB-X)L}YxEsO9no2d>)`tM zO@wro*WK0AX5JR!DYP^^g#EH?v&R9=+uXYf{`z%>jm9tX7wvXb9G0|8cgrx~az$Ny z(mvitK*UD^wGMto$v!|6%skAF2EB>WG8B0>t zU}tSHE3SpQG5DC|Nz^l3I~dhpgyNp()#8@6hO$42J2##B0}Y+7ERE>hz4(|9$4IWk z5))ZzKFEqzBGb~0?|#efh7lttASuk^jpsg>|1hW8w35#bGxrkr3|#M$Mn;SK(3JN} z)zXqy$AdJ-@haf=n~UyR0OUjahKJX2l#knQj)p?@BR$y!@id;Loo|Dct4&5AK=2nm zv1WX$5BhZB%k9H((*!XTb~mX^cH98@D=6}m4uAZ-knEc8GW3y|AuCY6@OUMbb=h5O z3J3Q}ON-y*_LHi@_;ls_OE;Z~Bro1grwGV&D}5K{)5O{~`6Do0K-;$>{~f1^{v-DD zun4F1f3Q5Dx#FAAR%u8RNvx$|Z`DTzuHDb=qxL6HTW<6U~xUKubnvkf& zbljI%+zTQCTQT!Xg(ExafO&CS0n%tbB@dlHFv-ey!5MSE-6fs%5gT&a~Zzm#utU!zOmk%$d8dG?ZUZ4QeK(D{W6hKB!0sQt_Itl`}|w&Ri+QR`tfH&II+PC)s*iBU+Kiposqxdp~xB-ZE(xC)9H+y%LaO?9y3?B@It!ch)nJb2h^dhJ>@-_~1(2kuN?vI+{}o%pcuaR?7gR-fK2{woWDu;Hor*Cv%0)UEC0&NC|Mh6y^zz^bGgvu zNLb!0L?sc8^jysNJGBBQ<&VrnDE$6xL~Q~jMD7&sXas}B<@)IFapgns1TXUB+ceHh z4ZznifP@2*sXd%mdU?}@_fqQvY3*gWZs7}LEF0I>7Ty-qN@LAZTq*rXFo1(0KPH0D zn( zxwST>xxCYQwkIz9N7m>bo_CsXH+P^{WhehjMJfqf6#(dfH!_l%)V83Yb*LTt?dCx< zJ1^rG@5~kLON%>>dV_fru#qO}72}lFAFE%B`ea>9xUS?LkuP!6(+P?gVdiNl;%2^yyri)8-8h zGoTJ>ZQ?t%=A&tyGxtr?tNOZzPqZ8M@UrJs%zeS3i>2kg+l@lV#g!L7GbBcwSOO1r z5tvUCktl^#)TOW=Q*=ui^j52zQ~%bPIRl3V#A4ar)x?9WyKEhEbW}s^guxhcFX=y~ zw?Vmo-NrbrVFhQ4@lxWwfa(l#+tA3_maVgkMQR%1quVv{PfX`3v=nb# zZ*C_4o$is?N7UU5`;v=hSfnBf*F0C8I8xUR1&#AHUvQEzXdEJyN=iuvjmz$MIN6Hg zQ(!V1lS#c{Ik{$Vr?pcY2&LEM$2sCMSd=pmD7wP829vCoPML2W{cFeB6)3ToCtBNY zcWG_>BC24Q`0LoFf8v^>?yTAb$5Ct{pgBLo6RLIxd#^yo%vD^Gd7xuw#PGW8haZtA(PUy>te4k{ywRkz}2Nka5g?uF|%b zWZ4b#H{)AElOp6Rr(Z@(XIbNTr zBJ}&|cDTGGM5Yh`2X2MvvcOH@tV?cz@e+tm)Uf^e2ruU*O>ND+E4^Tqh6fP+;U z%C9MV6q@N#m-f8vPs?ZY}uq2cJgcr!!FaIlHDg6UF-X(Nz-eZs!7H^+#x?eM+c zZ3@*BeHv8|ho^v3$`%59wzk-;B5tpqmLgAAB#b+2i<8V!HgOoI0wo89jM;z!usjz0Q=$3ZmY-n4RO664FfiEZ2rFZB825KJAoz9rA3*PdJ)?H$Zw2W zu>q+QNmYEQ^1-xpjwYS&r^Xa2v~1Hv2Mv44yLO25Vh*>N5q`y)!Xb#ycew>>8c3^X zL+eR5W?pe{{r4&}FOAS8C_;OHp$XEWB^-y0+IYy8o|jLrMST19D_Pzik%6q%w{7Ef z8TGKn34IuQxy%q(n<@Nd1aWeZJt8pzEcvTFVgs1cJ|T@8GRF`dynNX|0!OtRaz(WI3hBFcPokFSy@|eNH)M`|OXs^P0&q?fLabmabp? zkZeD>@IG;Nz9YxdDGO4UlsF%d2^fOKIPR6}wW+=Eul#yVzqIsi#9a`01HJi(zlE@z zi5M{IbBhpYZXyK>-b^oWJo9{b@F%_@9LMAMU+v^6b2pn8!GVwvf!cj1A+qqW$$Jdi z<_A$@kxT40Hdl`1J10b1Fo)D^H6dy-lKJg412hbvo(Lj^v-l&b%)cT(D0}nFqer0W z0bb>U4Ds148Pq@{IA6hi+wTu|-CTZIz>C|5@thOiaj$EDH?U3osIZi=Age+bB&LcSARzM26xVU&nto`l- z-a`EYEkHaX-aC}a`)g?CPbx1_&sm(Sn|<^}X2wl?*S*S!pS+rXJ1O$Fw@g&uFKCA? zc+6G@c%@ccZKlEcVPtwEnqW&7E)-zrQMS;2SZYhoz}w!H6Qk$MTAZ0kKFQnevb-T| z1<(EJPo(X6re=2|GZD})pD}k2{N&2>>zQXUIpqUZd~P2tugW@br>}2n z-=vI|zB2c4;G(=cZe<qy@Z1WidQ1$29z;o4}Be?6gV@A$1f1n*A0*gxz5aU9ss8dun{vg(@aRmy_x4paq z^X5RAVX;sBvuG=GjqvEh&xwx`kSClrzRmdZ>^MU!sLz`kzY71{$9Em<^YNQOsJGVY z=a^Mkt}4YJBBHIFaL%|!e?E^%G8NY(9O^w%gpZiEcGFiM_F|pd%EB;P10nKwLG|HJ z6};YR(vNHg<5~r3T!0XUSY%@UY7Q19-7Dlj$WY_EpS3eJ!15^C)6DJK*G$E z(SG6&XD^;EOI1hio1VRgdvvG>_^k-9iZZ%gn$0M&R_!t$E^dwAi`yRaK}ymm(QnbT z>c`zuI=V`^y$to zE+k-@{LTex*E$7gTlgr*X1fcxK>#lbbsg5m1r2fzuov<-G zWIXau9bM`KBBtCWw56n%tcCt-sR~U81Dh9v2mn(eM%T=8M=E%nvG;G=iw$@pXhrA* zH)Vp97-V3_-87;?<<46tdr8Hu-t*K6IPj%LSn1+7>56b}4TokS_~mmsE|!aca4x?_ z>6Y6@AO56rAIep%Ozmz~d^Fy+w@r9V8tJ1*QZ3bX@oD(%Y3_1fzrzG>%~-fd=1dm$ zk%5n^c%~cYpg~rTBX?5rz<;9C{dIK&=aSNOg8I5#husUTLzNZ}NOKZ?afcx5**zNv z-B`IC&im4&FT%iTRi$vkpca6Wq<)LPS* zErV-)v=^RyC?=e#+BdNpCZToqgy$nV6n&)o+M+f*23F7sX8nm^zk=8DJaZ$Yyyn#Q zv%DRH|9^^B_`h-O!{dX8Hs~>BkKkq1;!W_uLFg8cel?YS3!lB#t6GA8v{=t?_SHry zz+H!2qZ$5{gHh^&>`0G9o-d$CK7Zmd!9zz1(BdA$VV-y~Wj!2F(TD^Jh`~$YH-iZf z#6$Z!Hykk+&*6sZKfJSZ-`13M+x9tSh-3D;ftG2l*t_xS0d9W^hphE=T<>crZ<*fp zzSn&L(ue>h*O=tu0U~0l4XDX8ToD(U`++y$SEFSM9?4(3N^c#+;)Vcan&HZM@yZ*K z*12=0w@ir#;9Q_1I%)M~pCx4LuK+0NCDggnh|=SI;Hl5c)I`1m+uKoMJBrJzGD5D>v&t9D)?3ql9*j9kjr6DTY3k*v!4t# z7s;z`*}vx9qRP8|tXJZSw`Wi}tl(HmFOt#!1vngVw=tf)w!IwzX`W;Uh2pq(n`ec7 z-uLJR99EN{S4wmv3~mtj`kx!B@gsVJY+)`P9%~4PE|#x&47>6E!PPr^!Ij*aR1jbm ziQ_j@cHdTLv{*XRR)62eB>T?|%@|T0AbgC(>Y>!)Qx1n`ych+n+!k6o*M`dZaQXz#Iejw6L#Mt!-bYB zIOQUoF>0H3Jx7P>pRutqIxcSbZwskCXD}}9_#tLx#nixREpwkZ9fkdaB?Il-?kB(a}LJ@_cG@@d54GO7iehfGG;{R!`bz9urze{-}91hzd~lt+I2D49SQO!xqsX+yM0N60=@AcRnS zGO7TS$rx3ryN8R|h)GBg_?xsN#vz5c#_HBJ)Wfev|K$iU>?;bXM=AfQN1^9U`CHy& zdd?c&xF|cZ_F#e$oO-?twXJsl|F0-biaZ=mKK*;YOydRDIX2eR)C^5YAqOO&0mcJr zS90ZJPP)E&x?HO2&&*!l-(KYw6vzwEmaRae_TBhLnC*^pGKUL6k)UesWjg_+xv<{M z29klb9LT7D%L5k1q-M()l$?dC!TkH(Mq!*7K`r-#LUKsMNg1-rpD~cb+HAsXdYHXf zPM;Bbtu4L;zCCx?OF^z{# zR#rBO6JVJ-J_yJ=Z^{|`wyf@TN{sqHEFRj>l||e7Jb{RIhbj1|AjBYGNj&oI|5$#w zT?G*O-`-6i^$;jB*@oL_JwWXQMnIp{7O;v=1sy zluAZYb;x<|$#FHr;NemQ2Jp)w0l4sMj==qq_xbJb{yKUi00ClppNhW!npt$^CjVr@ zpXjB$$x2*G_4q%-N!yKpl4;b?(9k)-yQL)x zO>J$7+*5=WWo7HMa}fDtORF?KUe!$e9$wNDHBUUs99}}x+jf+P06e#;mMX>}twzI} zUhPjn>9+^~PNs;uR$J;g&hx31%!n+1`kvuxCl^Gv7y z8ieuctwT;t3w;@vr{n>!^IaBpc4;dsCP)RrCn5@osVgP&uzC=P;9_G7o^^Qr`ZX#8 z14D)F1d|?>ha4=h)?UV$A9ww`aEnTZ&j3%E`xu08@y*|@hhob}c3}L-!|6+4MDckN&x;ooKV(4Qwewsspqwn$2XzPp?xvnY`Lnz7T$N-nw0Y=Miq|S#0 zTCtGSUM3w4(3K{z8Mo{ey6bD5U_4A4g^Oh*$fhj^S>7Ne1T%`ywah4W(R&Z`8?FsB zUB5eP)5^Pl!*02_cxPGcFD~Oyb!b3`D*|LKn;P_Ts(T9q2BTi0$n=j>PYG|L>_>g= z_m6E)iI;^#1QibtFYR07H_GeZuUZ=#o+L;UuI_`hk+eTK5ypYTp?4Opq3OFOry?xP zKjkJkqIT;n`|#>Go0;aEyMsuYKlinsNbtZrKgnBA^R21|ASo|iK8O6^7}9TA+Z`sEf_!uNJg@Jn2DG!%U$w6#e^L`B2sLbFzK3kxxJcX!dT zu)01HFx{wxyE+S-bajxO=$4Td3(lp&{7 zGAiw(y7k+lGg}Y7`j&|ZLJb4PKD)=@aoj|{3RWzqV=fv%e+^klb%he=j}AG1f6=}D zeb=+mpw8udmCW8O$&jpxU7;ja*Dq?cHJ|d7-@K{x9UdC$*%`~-{OW;;5)$i>FgHhH z(?1qhAvh1jr~9MR(`U1=2m~D*NI!0%_+Vj8i&)lrBnQOAXh+mgKt2tcGIBW9pWs`| zY)mG9Ub2z>kgMf#j$m;4jE@iZ_wUN8eZgQJy2?sdFUh}-47W*i7qzESE(kzhtW%9I zszZm|p5uBLT$+^W?A%2*8neGgcEb~gq=1vXFN?m5s#T84uRbc^M$PHC&c5<$zDB^v zhddt(Z+$HfYlq(ly~qw6&MDe@4h7NY$h49Ks{n9JXJWuzd*mbr*{QtY`{cF5%=&+v zk4IT6UBdk{!#^Rb#Ox|9vK!7>UZJn|*$s9v^hleLK0yGie>!bd^T&0}jnE6gTi7t6 zH6?Dqj+R>Bc;~wU{wdSL?SDe;vFD5tPjesx>tuA3&jHP0p*mUwKfFE(R0Pvjo3n_Y zB--A!tNc9mCM(ssyY==S`ylB&8kKz)iNx-+Tj{Gs^1Db-WC`tAIF>xE)fqd*xn<-q zIlBn71p?2_9#~!&wx9UW%3h?}?~nQpoB@GL8X0o#j_Elt3B_Inz{B5nR&?S<73)+m zd2XB^d?tym-lzbj2jp#&@);!H`}gnM{xA;+OJT(APUPnn{{HGezJCG1gvjVyxBIx_ljl>m*jMTO}rh|Ba3 z{@)UIIMt65%HR7Q36US41gE6X%R5(_OXiXoKbQf5-@j8#PU~At*y9!XA^==)?&tLs zKJorSMn4=n@TWAvG{O1L@6n^s`z+bxps3ho$<8Iv2B_K##YswsOV+V`r1ia;$dZ#o zB)}AUy?BAWBMA%2_79^&24L5rn0Qbngn)cbXViOB;9@Y&?L2Fw9J2i$MKaa9y*R_J zFuT>i7>b@P_@R+VFY*MvJlI*TD>P@Y=6~0QV@~LN=UmPF_w1rO7{{ zud;%R7wS-;07>AsO&p3_ZM2+?6p>XlfPQwXR{-_k;S{WFcs;ynyPL!?o8M`j_1W2? z!ARnps`&g?qy z^r?VyYggvQVd-7A-@L!*zRO@iG^+o%6FM7s_8saU*rm4K5jcDfnX^m4ffW6bN0dsz(tfPB&o*Jsb3N#Qdji=oi29Rzon z;?p1>=F`b2cXz0&sSzl1^sn35+naHdKU(;oRDL{-pKm*Uq-z-2fyqetXNwvy{O+lx zR9)WRyEWZ2w-#=Q@U`sj_0|4{3{bj!rptn-V`gT?i57)+RpVznM2yS98LZffG}!s< zTDD2HSsT#<>2b0FE%5K(aCMbj$>#C#@hgeM#DP>NM4(&zG*ns`XrJL~7!=y@pp4N% zkD)-s^ESZiE7bUajO@e6&8_MKZPzDR4e-Jue7Qnj;{=WAPCb)LIggIQJPiH@88~F~ z1*J9Z^9CVv`dB5?ASyB{DrWhZU5J{dCQC7+^5oRcJAIY*UbF^={mDi;@R zM*{CRY{*Q>XqXZYt>*ifiItRaI(?yZjfLk*x3+WE6BKdnukJtKqBW1(6{o_| z+}yZyTVN89RBT@$p(;~v#4SA+%fm6At*XEGB+o^*SY zU7B`osF}v9`8KmaK;y65l9_#6Chgq7WA7k%$$S)i$wZZz%DC?xlXfJ1gA<(S3z>vi zBl;?MO!12ucatAIwn7~SsD8E_4Ank}ScEI=&R6Rzvr@CC$IZN^9OHl1!AY(jwKXSn zuJooI%HpL5E*ADW+^Iv5|B;Y{b(AxoKr0`qZGn~D-H(q)YHDg(blnbo-g=qAc!jOR zm13q?QqVG}u;9vp0R?Pdu9))ja(780n) zf-Z||CkCl4s9W&asW_(|73s5^{BTYbprgazZcKg0LkOrXk?tB!KY7BBdvo08d_@6V zW8C;z+cPZ9l8-FHF0FNBU?RX#p{!yU-H*-_5TLu`%5O~y4Gq$*x$FW-Z)I@Xz7JbJ z+#WMNd}NNV@nAivt0|3r0_+XRjUt6uj!i(ep{CAqerfPr8^Y`nJ?11<-9?4A-w=wc z{)td1q0aKq={s_N>Sap}NPL2Tu+%B$I!b`Q;y4)U1M9F!Qpv=xs~pn}g92mcAC17n zX2=8|IfafJDdzzA&&PLuPmE0g6UATySE~P`qn(|^Y=b#HaQg3`q=rUFJi-aI^DcL& ztjfJ7a)&ks3X7{At7flGYc&!~OtFU9bp&WAOCck3PpZipLC~+Ffh?***A4+l=DcUX zZu`8q4^crQ*XG@q2m;h|mW5?xJa}s}>~DNOtV!&GuXA1$(TIN64~|!g4(L6;O3o&?K3;OQhyCZ4QY_9DDFrd7`g!M2e^X+?+k7?1LhQtjHg2+zIikr~A$XKhr99jGBn<8I zO&K_8E-?PcIYN|bmpexj0I{G7BPahC*^EI6aBuBv6F)Jp`xC5T{>?%j>_NsXJcX)& zZq5;tgM+MhG~3>!w{nPoXL-}Bo+7Y*!SdgO!G8q?5z#Yx-C7cc z*=yTkTF0yBH&)X*bKyf*7H%6Gdlw(*=d)(^6W|ZGCs$W}8qr_P&qTkaUHhkR7JlRC znbx`R6{)d-R4@!n37dJSJ4fa4J-^_2o+_%$T>}_!@C52+MMOeE0V!DoG!WC3(IDcI zqzM`-Z zcDk^&xDFJ(EKEl&UPp4iCil|P&|nk+=3Pqgjj%^8NO`zrWy7k7-)#@ijy#Fc%8C%E zhZu^go*q3F*rr}Xr+F($p?R%5DwrQ(C>bws?K0s~@33hGSxPV-?6&GlL~6J+ZKi5c zI(zM4sAic!=U6TWhjmxhjx(Ewvz=XFoi_m0V}vC}-F_akm095x4Gw5|UJB=IKaX~A zArgE_@JKaQSA#&m%|{YqminD9ZSN(eAWgI@STy3GRnzl`{>U=1YVb3!2+*`yU@eW{ zTYSLu-UzK8BBP(ES8?0<4*D6h;_&^TgIK7oq-`HS1GxS~c0X96UXxHAB>4xRpxxXL zV*8lA{vqw3^$clEKJ(x!);NPNkd^F<)En#4_m|+P$XY_a4muQz_QSeOegam2-#Uh; z%S`!F&3L|r{^=@2c~2G7nq7h}+JAF-aY2%HR#3o_^7f~)HN8A75Z?M_@AJcGo%(yg zXgpa8A)>sTE4(GS7pb=7(0sUk06o0p`HtHJ#<6ycm-ex}BY!X<2n?4d`0C!VF00&$(pp7~R2V zgEOy%04M?-sTlYuOHSPavnHhx(XvN>5R z$mcM1Gg189N=)b%vpg>>w;g`5PVs7*s&;dym{t^vXIb;(pn-7iv@!vQtJce4Tx-?W z7NhZI=)s`lWwAtzBPpk%r|9zve|TQ3z{NviYw_qO1IMAC&xXTCPtjyUi@zfjaN6u&n-IG5<=XK87TlySl<&fhc+v|t6Kp&Wn$|ubp-0xxbE-S{w zGoPf~-G8w)s{h!Q;%F^@V(Go)TI{B;xefgNFz*fCo9@3)wvup|H>g5{I0gRDw=q_> zOQdIaC=swge^i+wu37_JDLKSzaf9^VST7kWVYGP#FK*E z-g1#%R@ju5cGSDdcFz0vrj?K6NCe*hK38ftARi8 z05Cf{yY#$A{z6(>T1{Pj{F%SpH4G{}*F$m^wt(A4B=;+&yMw*wx}0cqArW~DkZ4Vl zx)j={L+P?%htNpg5N?WqKSPGDF^X7GjFR2yocKG`cJQT-pQHHG0`^Ed1x^juPOE%+|+tU{PHB@)I|9|55Wnyq5k-IjvKb@QlRZ zC|%W?BU_)}*?IcW8u{mr(2{b8SK6~U3429iqdZ93UYGRA3Gs+b2t>*C@rbIRk2t*R z&j^X@KRJiyOf*w6KOeLk1{MY?2r1#l=~46>jY#%?D@<*GJp7~wUPBV#>}SDm9u#noDlH{)UiM;MkiCauJmQQTav&viBEhNA?c`N~u>J^`O>}og} z07R6{u_e<8PCd>q9+d##?d|=Ek{?&t`$$GY;&EzUI4uZRSXr&L2O%ZXe@3KHC0&}Z zM3V7(L^xHIq}#H;3^Z~f@z@?5pYE#2 zS8egDxUc4=vOhp<#Vxy zaE7VLNr^NR0u1=eprRDFQmyJ&|@Xu3|mP4=x8r!%8)$5%fv`lN<^dvmrgJ6LLrxY z6d$de$dR(1VdbETi&ua7Pk#znakyJAzH))Wzvdl(lNLwlg6hd8OMet;dfZEmFV%>L z8E254^sB=W0AY4Cbnr^)jf7HA_9C|YauV{vAC$mf!MRI%V#`Jxf9a>t$}Z1M(&OKj zfMWbA75=ix&nrM?kEa#xzwQMau0tF>i_VnZ@1%YPz8C3Wzj;MUfbb}R^G&XbJc=L0ip{w5|SO{>a~v}EJt zR6CK}YJzK1ipT14_u|Eilxlaj;{g~W=gVfFd69Imy0zVO#2t@2!kKq(`XI6IZCkqVDk>TbYv!k`TQ~ zHaO{}5rFJgdQLR@aWmDBaBS(*-^s7OAhLjv9+(yBqHAgbt`D4|%7&U;>BT#nTe&`J ze~+H^;9kIdL>_?glApx@;LMY?&pv$9K`(F4HcTuu31hM%t>b!+0ne1?Y$D=($!kXY zc&;~}kl6CD!vQ9w?T!xiQ3eInVt4D3pZ?1b>6ir_s|f-*kknS!IWVP!z&7q>NF#Q6 zl~<~9kC)+6q*BA`HhvQ6KPt!fB$W$EskTH_6XvMAwCMTa#s}+3KD)8Djp%~v>bq3p z*XX3QZ;&9#*~`&Y%||xu@PP^<5m8Z?P?-rm8W_+zKYRR>hpfZ0(6O2-z8VWxA9x85tmIVp$2FE?(GGf1l`@yaSO2y2+9BW#r7)Y4*0E2x< zdCTk)LLQ?nuk<<0DCs%@#phvI250qzT&#BEy z3gsFq3G42dFu?DxXe3{Bg{{0B`-R6&;fLQL>{l;40*YZnn1r3hO5ov@t;pjH55#9+j6)K5_wO4y0VPvp22|!OC~2~>vmazIqB2Vm zkq0H7#i1W3xbv}%<3*7_#qJ5t&s@9#0`I|_*OkYC*T2Htk9L`f7tmy}35SEIKCIFB zpMuNdQ~f<~#bqL5g4pZ7#Q77)3JIiv8me?O|4=0U%3Y9;-;cKmNBQi0@sX4%q*hn@ zj_Wfr8Aogn!W?$-1qwwqJvfd3sI}d(%uKWWn<08s?|ueMV!_;KG{pDv>`ungt3A`a z`LtbNZkyXrMw8F#e^quCQoGgmR6=V*!TuX~GThxTW|jz2dTS>|4L$#PLr~p#DOVP1 zgZ~3#_dR*hclM$d7E8H$CS0&H!rwtY7+7#VkFRr%@o6YI`@*HGKK_@0*KzVf+g+x{ zf&Mjg#f8VK_lBi~O?Tn+ZVg7V!;sZ>>#`x@V4At`!(Svk?&C)Ss~;c)VWezqSp59` z2`DI{e*R=i(~s}7w6vsWVtRdv0`$O|^8JS1`}j!YPhdc(6Yn77UyV7;yw{;2f())C z`No=zL9=x*C;HD(Q)t&z38P>gm)KbW_p?&Sa>A_$yy5@2BU=CMCsVSIwV6a_9q;e6 z?_3>|1-pyu43u$MfyZ6qZWFD;D{aj}2Ss2Tb@0!gxuQGr(!f(I)`1X2#qDBsr!0jVM#ujIE_h%ArCZ1gfyU;n|Y@ zEUU=*(pua&{v@}Xy&P*lKB*?4Jg<=^=^|eEmj2JHVy+rmGgy{#AAer)|b5QUgkUKa!l0Oeuvx&)hwtu4US8=I)E|=`Owtx0qRtlm{ISD}P^h z6?>38m5cGX8wCm$)eL;2#MPP>)c;eGTetbJ^i6ztH99H^sK%E3oQwK{V>Egls*tI#;o8Bzwf;KBRD?4?h@yEXp!q@*8F zt!-^>(*6{fd8j|$unGuT8|<+J1qB6*rQL^EB8{ZuJgDp4bd$H_)SWVfYl9fh`K)YP)^16hN9 z8T-5WP;-ouLBm;I0M;!=vg=T-+7NWcGI)L7r(nx6NP3DaKE8q!sEWVzwS_t;{E>u6 z+&wqSLv79<2Sia{8#wV(j~5iW@N3qdf@!u#P3I9Z?u zI25Px^YgEt95|FUH0bGa_(P3RJBp4^E{!Q@@$u=1yGFkAD(Z%GPmMHfMVJaodSBPG+u2oWCjph3r;p%JI@uuG!1Sa&tz@O9 zflVxNvs6+~u5)Ej7Z-a>N-p0X>YIT=OGgybGR2dMBjO#wIK46b_wRy3pAn~GIkuvnmc&Sdz7bli10ChSpj8&iloh1}h<`E1 za8N@My$2Mb+S}*EM2HRrpPzdqefiQcI9PnoFSOD)7#N?ZGBGy(OMh4#EESp^J5->{ z2-byax{a41FQJ5R5Ub~qNJ!l3lJZNpL~2BQN>Wv=*4P9yx~ItSzGv#oY!@o7tZFyi ztM3kEzPY~xvmzzYDFrmAZN2A%!;RENvo~CYgXa(fO(XP|J0PXaY|?1tuOlT?g_nw# z_!g(SjNje&6a9jg$f>|GTyTDhLBc~Lp|~O~dSeb5nJGU>`Dazrr=n5vbt)xL@)R@sC;sg0?F%e>5Xt%;rDmlqgG{(jHZpc1ZRq z)fT*g+}Q@JQc2;zwG8a+SnuDz&kB10=KrWdoUwlp9F&ICuB7ilQRio7hLM|pY zHiiC13rkD06S9Yc(Tm*#2;E{KC~F?A~Y}PvN|M^=CWtw{pE;_^#0048cdsa zfg$82w3WO)q9v>IXYgzr^N_yw4Xcf%M>;1VBx@E8I1#V|O4OfS6XJQhRi}p=YE9}$-7SpS`pi=b zZLk39scPP$A?o*6EW$e2A=%iQQ_Na*+0C%0*x@{o!1TKC;nqo<89RJj6>wp&V#DQ| zX?F@CaLjhvXr+)l-IenA@*Vruui^PDt{PFoR(E*WnBvXpFKG>NV8L^PXJc7us zm`5Fujg3v>_J4*bkyP;f{G8Z9P2J>^&zup(cRt(gN#$K*Z|Mpu!5cflhuCTezZLBX z|H^Groxr7dkm(BOhUgQdr?8`N$g|M=d&=3XjU=QzAjBeg@aIVk7^5vI4pkh!xZ_pR zIBnV(Sd-EaPfU+y$6_PA<0j{4s>YS|op;i_KbrIi{qFVS=g*vy66~?DF)v;^s8R^k zv882XLRGQLkj>1@$i@5wAZ=-YpLcf8>9GWPUaA>zeX$uc$zfqy7dY48Ff}gj2ix0oTK=s|HCIPA%oa}5a_=dJAN#(?{c-!#eQ7iYDP8D-NydK&y)GEcp$9EU-)0_u~8Wd!FC(eEzapfM3V}Nfnon5YpSLEDwf+j&D_% z_axFwKyKcNu;`-$eW%Mve5PL?A1IZ3RoU}w_N9rKc7J@}xrfA8hrwcnY{$Cbd^ePU zHF;J%omq!npC!%0&%nKh>HboC1S~2|#8KhxTe|lyF7YWTAEKg&wOj)dUE<^80|4-) zH{cU)?$=gi4{i+lv}A|z7SA3&%pULBi5l5^GVDwR0nM%8>Q=x{TvRb+wNUrc?zFmT6-zjsN)xnAD551hA;=V)vMvtUMFj<@RVcoG-3~fqPkB52TD$Gp_lN5fBq3Z|GBCdA z(mmBOU>~r#XcMxYKJ3?gsgW{ci2m7EVIxC21}g$LEgdUtf=_tOGvrtzMiG&yBd zW%RC1O~Z3GuBW^fx9~&IO=lShmmPb=5XMmsRL`k-n&0hh-S*Ygqyi0R;2b1_D5|Qy z(AB;BKV;aAKjuimb7STe9NKX?k#XvkhSjCCrhV`V_u-D;?l2m)2XU&{2>c3Q-NAeJ zvzjvek^KnRpG7xu!!U5(Zkdx{|2m_KzNJ%YfXr1&8l0FQ;N|7TY)?{3d1L%XZM5WI zHj&yzA+@z4l9G~Y`uaqWr*zSUc+zG#5L{f`ED#w*6DhAw-_=cacpxWls!;@4=>JTx z-NTKOrA*E|n)LNY%OBFfAHbEiP@2w@6AD|gsuvDj-PcatFFY}$VfuKG9}H?7AT~@% z{VmJ}|M}Z&l>C7Wo{R~%%`hdLE~J*0|sF z78$GClOpwAR^>{nJ!jtylktB&H%0`L=_;ZIF2bw7Opd6F3*i=h`-XdXc$my@P6(n; zK!J!Cg!HehLI(HTaJ#7b&ZW}ZEdpD^xlRQ zv!%PrAIR^+2&H3aHE*Af4w4;Up2g+ko3veIB}y|?$G#)x zOy&xX&xHz`Xv+;fu@Jz>#Ey<^CSxOn9LO*Cey#%>zS-9U=C8Va588fMV^kA#oSA~xFp?Ofw zLYv+*R?gdbRG?GKYk)8YbwhAO`f>3rJogawh%p*hBVw-($oKs5_{_C8rjoY^bt=J0 za_e&?Qhjfci`kki3C_m}LK;<5`0>!IeQlo~X@K#=Age`c5FONg{mKeDynnT~KkxS@ zf8T(`tVQ1fN>UYHyLroQd9K!L%AP zfGRkEgTP!!T(reX$Ly7>N%Hv!pPih3{XSG^MgB&|@)jiQc{m-`2R5n75W7!A6=>Az zYG@=aZ);y)-$u|;4>hjn@R}&8b`do=Pp}{c4X!V{e7j0`tL2MEzj~nN)+ehtd5oIE zL0`S6r)L2TL=lG>w4s1*`lY4z$eUaM6dNVsBtTJW-!UpDKoym-K7<2i9NIq-{Ymr= z%V>T61zRKKwz7=qPbF%9pvqOKkqB2Zs0|P_@(_M zdhuiIznWeGA{hw8pQydiTbSq?=0Owd!_<}`nqNY~OIL5IwpGeCui^c0bTZZ|2A=54Wb8M^I(1#~??RFx+ z6~dF@2V^`F$kNSNhgWjI=OLJ9l*21c&HuGY;_YK<1EzC)`o&$7~`jP2k{Jfv6;LzS1tmZeH@s5boX5(oP_PI zAw&zPt&p?LH}XHQvQ(L-V|P%yjIr@-VEA&r2#}|ei3M{c;kg`+`r7JiwsR>GrM0H6 zzcW={6LZ5z7hjWTmS+b37L@Q!;jvPMck@hzaxeWXFYS+-qGRj7G>DPs6naIR8>RlLCTAchE% zb$USkg{SoSwpOQ)vJLyI{!}%s>G04zSnzoFUtEb1GSWS$mOWc5+XdAq?a0_3hfq*l z&5tWYvkzHJAqeQZYTlTRbrlD0V>Nv8k0ZYe((%o%!_FVkoC9%Se4;)m9?Yu zxyu}}q-p#7?&S;@*@JUUy}0QlUsVyZ0aQlPq(-^!noQ9O;Z>tYaeFC1E%T!N4JX97 zgPXC*8*MbxY|3335mEd#^(`)O(f}B`UcXA8kUGa+N$@Da{D_Kc>@?Qk;@G?m_Ofo* zgYg1Q+pOD?qvvxOX;gd>J9DVW5v0grYD1yMb^Xx)l=k}4FvptUmx<>NFY>{B!5<7q zyu9LfuBv?FiWrCG7F0IiJP*20zEU3Llp$|R7>Qp!{Zifr#|V8XT>pdOtJ3H{Xnyse z>D2=jEmzj$9pq~i5T15*0@Uq$#LB{tX&{5BMJ=k&|7%~n8zIdT{wN|i7BgM+(x1HL zH_YVz^C%H}5=A3U4`#wLN1D{K7CMQs6Tag@y$O#2J_ztLMhGql^Ai&1HTZdc?ROWV zd@tl-@AdYl94niGPLPx0U*@a*{XU3Fm#D?!l#%&>M!MwvrPtCPUx4b6d7raF{99Ta zdea5y>9u!THDqQ8QEMW})NXon1CBqz+X#{;9`AO)Os;Qj-GX3_ldSA)tPNMX)I64Sm7tOVr^Z<|D!dKXw@lejC14|hiXXqJwwuU|3q~u! zSsG_!?1YOvPV^*Z97H4;$&!@WVmonar%MnX%sS-eReBRU?z^W7Pp-U62b-WhrQfRr znIKJW31_ZP)pav!OW){P@Ci69UavJ%jT=+|z+B`bUfwYD<9q!@9X~RAlgpb94i0+e zd%+kt%-hrf1!%D*;%TT5607)js>FE~RiX|;tyi|JL#7 z8p$tkttk&O(^V&ab}%W+C-Gpa?e*P}!4+6OqJNimag4TRO9LtQ&a1Yi+;3*y_Rl9E z5hnnG9pG;iEGR6D4Jn=WYSz}$!eg#g^PAz8b$E`B&A4JQ^4rNj`B6>snB7jdo`@bs zXwpe1<8QEEv7gH}&wXFes`z>nmo*&_ex4xz#!v5lRSdo6lAEgN zh)tI%^4GKoxKLnGzOK z9BZfJyUj4Ia#~t`f`J~=5VI=1X2`pc*uuhs;^N>oB!Y6&NfZRGd`CC}FF#_i+0**o zcYoP-i0{+P_g+?$9Pc5oE)ThY3|L$Hfq_@(&Ta` z>?zh=`qksn9MR|j6jOhs?KT@!*ZUCj`y$XoCJkFiV4T9@SWcNSy4gKk4FY-HciAkla^^BOj^%h4p9xM3iQu7P ziuIt=r`QX19yw=%-e!QVMT{?;q|Gy9YGpbHYmXQ9`eXowpY$CP(It7SM*YYzrjh)> z53L6imQsv4n|$e0t_Ile4nRk(Vp)NhXEH% zR+ECO%IA;A=EZ{1@stpM@SqE8{VzHTipT3w!Z-xbV-czVw%Y;<#{RiOW7{@i%K zP^1KuDu7%81MZHFyhkjmdKw~%3N zK0KNp{9`v~$#Um>Mo1{Kb`Jh8J$IqMnlEJ~wJ#!8^KmXM%h$USv&DD2&G@0ygF{2$ zCu1B=e5I{YZ@nHNCk>+@K1d7f!VP*31h>7D8ec>lrY_NF|Il+X(U zM4LZ+w$=zJ?$6w87{kvs^MQxOP~UHRS!1c3MrhW1-M)%*((hs$F?XE4Hnu>UMwXl* zb4NQ$F8nt}W{{P^IyD|}w%FiAy-2l47N#!HZ9y%O`m-M7H|!K0DHbQ!Ep7}0sxy;Y zA&q7!2?*Bm6{RwIrVr)geZ5Q{Y>yr8P@8+N7BEeYjg7IA6D-tBJIFGV|NQ>CGdE{z z{?i3qM*3s{2a-fcEnuGv&-^n#9t6^T!hHpPahB$|mw& z`NP=dGANH4qB=1B&_3ldeB~HGgxPUK+i`>hSP_$2I`lLLDB^zbbeIDq<69FaW1UWe zYU{6_e?Nzk(@Wa2GwUSJKAC618k8Z*@9AR`j~)3tCgTCA(`k`4L3ssPM*s0+3GX{3 zi#ZptiYWcmpDux))|bay8Pjg!J%p@*b6=!#$JI>QEl-hp)cJy0C?GIFC7-2--%KyG z&q6>55Vai0XfM{Q!o(o*tjni&;>__kES1J{k*79icPVhsEXBrqZGQ9O&CX-47`Z!IR&FI^ zuQpng$L03R1U|=enqW^oR!`&Ib&=od@>6ht2_-)xhe$M%juKYzcuR*p2?CQW2 zp3~f^1iOKs%lpO!2`E{noa`}nNygZ6XwUVtNKDG{aKRGN(Q6Uy%{RUH)2oaYAMv+6 z%6bF>$@F5#^SB~HW3Bu>Z}LSeRoh0f55sB*#-yGHZSiRO_{v6lhe$JAy7x6!o%qUtb zdp*l?=J0GmYZD}kmR=#?83c?+VNwNSm@IkRuninT%Rx49YQ8sICV%GhdgFoyjcJM= zHdcNPtS*fVq;Aw(la;;~DYR)SC@u`0WpTLs$eSTt^2F)HcZ)pQg{@ioV*xZO^dsK(xV1DHkiI6o6YMpYb zSDuSpjMksEXw@r-nD9C|XPk|dfH#QqUdLpXcI>)2It}ntpXg(#iWm2chzG>aAcOID zV7~e(j_nRQIqg-^h-;+jiPK^K4DF(z_;2q3Cx^|+up*D8W0||xpR?XfU<%ibcaMQf z-Z#;Tn3ibI-!ULfcSp)X^)D{Lh1J*Ek61PLpw6LfdNy6(t~bxP;*jZ?!=E5-xwZC1 zSCf%|X?5rKL@G>k;kISd-3 zM@t%3ze0O(>Kn)YlK0s}Vv|vs&IBEK*?5s-Gtmkm`OA+B=zUn^;3!kr9o3w36a15j zeV&K=f(>WOGgT$Myh6jwo6WI;pVkT#8+apixkAm>a;^0$bcs7C?odRXvH}J#Ig8OY zTUCvk82R^U>pkoBpDY%}C?zH!!yuH%2!cPA=;~4Es)c_PX zk@{Zv5_sDIQgCXFh}Q;DELNOSPpP5dn*J-}tg7FQi$<0;elU_etSvx}H9Iz3^gik3 z%L~tZ8R{O7#@TfgYFzaS6hk)`9_#!92sIZMfzZ%UAgJ~pO}IX-rg zi2mY7b9s4bW#1>Y(QQ#h5CTUu0sXk}9zbF;+-t3*(#4GR3 zhXjKD>9qmbktN%q(b1G+z3|q9uR(mSZf;+#_p6g-03##%zHfzv(#>7V`_I&=*zepf zD2$L}#R3&wig-|O8mav$v|7b9DaKU1_p}A*wK-@Nshy>AvIO&{%MU6Bx`%f zoiAQPDjRLJ*tl8PM#>)w9L0g-T(q2<_o7UNhH}br?h1>M* z{#D08(>N($DuzAx^d`-L4eus916D(Z60BJQHJeb!(BQ&U{@yP<+3umiI;aaBNrYXd zIUBWhF&1B2fd|q=qxkF`I3EH{dx-h6%+THA^LnmlmT$hZt7LXlKN~_OUzwI)2Ex;8 z=jNn+oeu;ieh`ZX<`2y})4citQ*`IgHr^Pv@N5=vS>qEm#{{2|Geq6?xrR8M^@_>i zo37tJMDBd%&1jXPR7w&~Gs3NGUjRd4NJvQH{wkdhRGHK@HQlcSxN^YF2hw=(Py4*~ z8vQf{VMv@ZM};vG`$oUra20nHq04B0Q4w`;@c!F~^-UrX4Hu|Mue`;*M;mlZrHplF z=rohyw7pcXg50kTZ(ULbXW0a!EDHQi2ydUKWI;?+`(!pKozTUBC)Bw+67T&^EdsU!+KyMmG3d^}d^Kd*V{pzTltSKHuRxEfTvx2Ae0HK425| zMaPExrENSKYn35@;qcF>z;Z5$6`DQPZo@fD20Kx)$ua)5jt~c6u8>w?KNK`NsL=hp(_4@Vw`*P5Z=5Qm4a(z>LtV-eXk#YG5g`6{F zkZ>BwhHL6MfpYdt{e5T6hGH@D{!QPUTqWO=ve+q3L+wX420@864x5pqry6>eY52hO z6_qS_KD;<;PANYPDLohP2fp~~wY_AG_7{m-@p1-{)T_09+ei_v-|TJ%SZ!jdneKR z4~QUhk>w@*yuWBx@PnRbGhFAb1L7OXPPM|omG8GVkFwXuXHe6RD$*0b(BeA{D1-(( z_}PMMqTFtZaJ?x=%&j|Mp;t;XFk`M7|d=X zsueYm{&VN}9PR!qwKsx>Nsb_`Pq=iv4CAXXBFO%!duGN%W$U#9R7^BlQXLl+>6IB@2^Ncf6u)kbtK9&Gb2bpVu^?9o<^uyK0hC9*{Im2yMbJ36`ZpkoA#LT`b_e z>!lCnsz|Uhsb!(NEx5uA3X&8SvZnR1ru5p2dF{@Km6v3ut8m&0r_J#>T3hp(8wTId zOart7Z*JOLs>v-UCO3@--i>@xCQ`dsn3s182M1?;cbBGtCWIVHz@n4K#|^b?G^~II zAMfgz*(l|{@y-WCJI2#hTx!1oKg1Dgl8i4T;nwuJ%j?Vcw#PiFv2L2u!F80;*r0Gt z9&}TS#&|Lzc_<+nD^y=!e`xFVklS#Ii*LTf>);FMkd>zEN^loPFgdhqHPG`xFM1S~U^nc}p%KdB$nSmk&>8yLa5z{G`;U~?dFR-Ow>}3toa|pCQ|`Z_VP*puUaL_(C?nvrrTY5k_@0AQc*<#x z{U^oth?biHDfr*uQKme4k|H1Le>b0APwKF%&`w_6>NoYjdg_;w`SFUJaD$UtIWIyO zoaS;U+glJ?Y^*rE?$mwh57`9&BRrKrA$G8vgRO|r>T9%fy+NyZ%O51ilYf~jzi+08 zxf^|WNFf4d=|=hQwOv%u{K@|Y9vYmD9h|g=#8#sLKZz7NEoqT?!_yaJx7{o#BS8L8D zr^(LAZp)bkXDoe_M3P_*tHIxa98{cXe}`!);-hF3vL=jQ`tF%!McLQ0~ESqg$Fxn9W68=;69-8NJU9`MP91w zAMdqj`{whbZ|-rz)cLC!-~a#vW=TXrRCt{2)oEAaFc^m6s-WY>B8woRpaQbZf3!L+ z0<--8e>E*Io;fW^I!#LPcwZj+;Z6D`d5CIR00000EbHLlK)*+#p|!)qL+$k?9bz=s zKfk0$jOP01m-L9!oB#}LfB-a_6M%vB2_Vhp0000000000U`LJuX)ci4e6n)1`6PZn z#>?_Kxt#v_B^^}FkKP|iDPLAie=za=3wtP==Yxmd9ap@qY<{e@`dZ=uPQK)WEovo@ zmyRl%ADV3ncRP69YS6^+Ddu6YAa^qTKM0C~kN)}m~lJJtUys2M=U zvi&ar00000000000PN1$S+?t+pJ%&10RR910000000000K7)&ktalK&e~eK{$vy;7 zC=?^LVxeHDd8xFsFq670M)r7FDjM2$saPzT>6D@^-?pg>;73{5`x^iN0000000000 zU{}g9DrvfkQAty!8YxvPh9W4}YRXRa>qzOkZYYAQMnl=DQf*d3rCPHZE+y2wxoIk< zT(?^FP^sQ(MMFu%Z{AQ&f2u_fTdtW|-zrzi>KhQqJVOovz>QhUc`q-DoI@_|5NCQ#uck^&dKh)_;6@ zdQ?u@l2O~x`qpi`t^9S$dVK%@0000000000pG7Z5B~ASpl{5{WeD7=NsVpr=R;7i1zrl2|yT-6$G$Yhyz$G_Bw!NkbvWPWlO=hKm5c05eBs4A95}l zn@hrpxyLwk0`TUZIDn=1(+}vUaQs*BaOF3^eV@38mhPH3fHl$h@8IFOvK!#K?-M^D lRX{7jgd}4C0001X>JP*CPt(w$=T`s#002ovPDHLkV1mtf98v%P delta 1169 zcmV;C1aAAr3d9PKBmugSC1eV=-0C=2@l06Q>Fbsv~BQ776vww?OFQ#Ec>|@$M)3qqB(c`0hnA2;vn{`HD{C4WanbH z<;;RJmcB(INifT5@OK~w6=#3iVOrWayPzCl(VHKKpi3|t5#8X6EE56Qm{h#w*#TpC z6<9hyA0UgF=yeuS5>3of5KPJSLVn%|MT|j!P!d-@tEa~Nf|GQKRFss@$V+wo6MQY& zzWF@q8_OueJvh)(e*gdjXh}ptRCt{2*=bkeFc^m6s-WY>B8woRAd7!2Gp$aGz%2j& zZ%qq~XHH9!PLsBHye|)Yc$2 zj~LDM&oAi_r#S%_*Z=`&G$#N9>k~kl%>e)a0000006<1g0%^*x7Z3tlGKgQP%8ic0000000000AKrb8 zN}9ScDrtIn*i$mJg~u439(s{dFVpq={qUS_zaI@H5x@DPYD(`Zvi?)g(E5YnaG;#D zC!?;R^{xAESNZFd_xb<;0000000000K8sO|N}8hI->QGV(KTuO94S4I4Mi{-t2+%R zk%w}JelSa`knz{hi$fue! zkAB+2a3o0$zRk1!bpikY00000001~d_CN3YIKhzZNE(Qr{jWKBQ3YVX*tY+YJRh7+ zazJ}?e#w7?*Vk9&E>$EQRL#`^1cc+8`yorf-hKYE1Qc70L)b&v-2Qt6(fEtwIFcI> zO!;nGu4vHR3`^x4fa6)7qZPnn;o0Hab*;Q6Ot`WcA!__hl`7?2eNuv&=&Sgj5^fOTn*fa7^Z! z!il-ZICKK=mYz6(wfEBx=%;Y}SMcV_Z-Dzg@c^yeEpY%_qVeCso9oJMfa|_b{D4#e jZ3GjNi~#@u0LauI;^s|KF4!-500000NkvXXu0mjfa2FRg diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 77312526ac2abcb582f49ab837e21750f7d00c13..4f0f2b071ea99e2f46fb201ecd3f92739d752913 100644 GIT binary patch literal 156447 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%0Ay88AIzs`eh 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 M(AOwZd+_}K0EH|-QUCw| diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 454630e4935cce367c203f847019425b4f74aeef..0bc19db3c47d84a765543df1c4e80b3393222aa5 100644 GIT binary patch delta 130505 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 -{2%r>Lbw#6$Tu!QzzPQeMI5SiYmlr} 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

    q&p2tw1ldz@11_;Bm5_@IP!WRE{s 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