diff --git a/burgerstation.dme b/burgerstation.dme index 5b49be4f..38cdfead 100644 --- a/burgerstation.dme +++ b/burgerstation.dme @@ -196,6 +196,7 @@ #include "code\_core\client\movement.dm" #include "code\_core\client\topic.dm" #include "code\_core\client\varedit.dm" +#include "code\_core\client\View-Variables.dm" #include "code\_core\client\window.dm" #include "code\_core\client\chat\_chat.dm" #include "code\_core\client\chat\formatting.dm" @@ -1044,6 +1045,7 @@ #include "code\_core\obj\item\clothing\feet\shoes\workboots.dm" #include "code\_core\obj\item\clothing\feet\shoes\halo\elite.dm" #include "code\_core\obj\item\clothing\feet\shoes\halo\halo_human.dm" +#include "code\_core\obj\item\clothing\feet\shoes\halo\spartan.dm" #include "code\_core\obj\item\clothing\feet\socks\_socks.dm" #include "code\_core\obj\item\clothing\glasses\_glasses.dm" #include "code\_core\obj\item\clothing\glasses\blindfold.dm" @@ -1066,6 +1068,7 @@ #include "code\_core\obj\item\clothing\hands\gloves\gladiator.dm" #include "code\_core\obj\item\clothing\hands\gloves\tutorial.dm" #include "code\_core\obj\item\clothing\hands\gloves\halo\elite.dm" +#include "code\_core\obj\item\clothing\hands\gloves\halo\spartan.dm" #include "code\_core\obj\item\clothing\hats\helmet\_helmet.dm" #include "code\_core\obj\item\clothing\hats\light\_light.dm" #include "code\_core\obj\item\clothing\head\_head.dm" @@ -1110,6 +1113,7 @@ #include "code\_core\obj\item\clothing\head\helmet\full\swat.dm" #include "code\_core\obj\item\clothing\head\helmet\halo\insurrection.dm" #include "code\_core\obj\item\clothing\head\helmet\halo\marine.dm" +#include "code\_core\obj\item\clothing\head\helmet\halo\spartan.dm" #include "code\_core\obj\item\clothing\head\helmet\halo\covenant\elite.dm" #include "code\_core\obj\item\clothing\head\helmet\hardsuit\_hardsuit.dm" #include "code\_core\obj\item\clothing\head\helmet\hardsuit\cult.dm" @@ -1164,6 +1168,7 @@ #include "code\_core\obj\item\clothing\overwear\armor\xeno_armor.dm" #include "code\_core\obj\item\clothing\overwear\armor\halo\insurrection.dm" #include "code\_core\obj\item\clothing\overwear\armor\halo\marine.dm" +#include "code\_core\obj\item\clothing\overwear\armor\halo\spartan.dm" #include "code\_core\obj\item\clothing\overwear\armor\halo\covenant\elite.dm" #include "code\_core\obj\item\clothing\overwear\armor\halo\covenant\kigyar.dm" #include "code\_core\obj\item\clothing\overwear\armor\halo\covenant\unggoy.dm" @@ -1237,6 +1242,7 @@ #include "code\_core\obj\item\clothing\uniform\halo\kigyar.dm" #include "code\_core\obj\item\clothing\uniform\halo\marine.dm" #include "code\_core\obj\item\clothing\uniform\halo\odst.dm" +#include "code\_core\obj\item\clothing\uniform\halo\spartan.dm" #include "code\_core\obj\item\clothing\uniform\halo\unggoy.dm" #include "code\_core\obj\item\clothing\uniform\halo\unsc_captain.dm" #include "code\_core\obj\item\coin\_coin.dm" diff --git a/code/__defines/_rust_g.dm b/code/__defines/_rust_g.dm index d788f64f..5f01fa89 100644 --- a/code/__defines/_rust_g.dm +++ b/code/__defines/_rust_g.dm @@ -38,6 +38,52 @@ #define RUST_G (__rust_g || __detect_rust_g()) #endif +/// Gets the version of rust_g +/proc/rustg_get_version() return call(RUST_G, "get_version")() + + +/** + * Sets up the Aho-Corasick automaton with its default options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace(key, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) + +/** + * Sets up the Aho-Corasick automaton using supplied options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do. + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + */ +#define rustg_acreplace(key, text) call(RUST_G, "acreplace")(key, text) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + * * replacements - Replacements for this call. Must be the same length as the set-up patterns + */ +#define rustg_acreplace_with_replacements(key, text, replacements) call(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) + /** * This proc generates a cellular automata noise grid which can be used in procedural generation methods. * @@ -52,45 +98,35 @@ * * height: The height of the grid. */ #define rustg_cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) \ - call(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) + call(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) #define rustg_dmi_strip_metadata(fname) call(RUST_G, "dmi_strip_metadata")(fname) #define rustg_dmi_create_png(path, width, height, data) call(RUST_G, "dmi_create_png")(path, width, height, data) #define rustg_dmi_resize_png(path, width, height, resizetype) call(RUST_G, "dmi_resize_png")(path, width, height, resizetype) #define rustg_file_read(fname) call(RUST_G, "file_read")(fname) -// #define rustg_file_exists(fname) call(RUST_G, "file_exists")(fname) THIS DOESN'T WORK +#define rustg_file_exists(fname) call(RUST_G, "file_exists")(fname) #define rustg_file_write(text, fname) call(RUST_G, "file_write")(text, fname) #define rustg_file_append(text, fname) call(RUST_G, "file_append")(text, fname) +#define rustg_file_get_line_count(fname) text2num(call(RUST_G, "file_get_line_count")(fname)) +#define rustg_file_seek_line(fname, line) call(RUST_G, "file_seek_line")(fname, "[line]") #ifdef RUSTG_OVERRIDE_BUILTINS - #define file2text(fname) rustg_file_read("[fname]") - #define text2file(text, fname) rustg_file_append(text, "[fname]") + #define file2text(fname) rustg_file_read("[fname]") + #define text2file(text, fname) rustg_file_append(text, "[fname]") #endif #define rustg_git_revparse(rev) call(RUST_G, "rg_git_revparse")(rev) #define rustg_git_commit_date(rev) call(RUST_G, "rg_git_commit_date")(rev) -#define rustg_hash_string(algorithm, text) call(RUST_G, "hash_string")(algorithm, text) -#define rustg_hash_file(algorithm, fname) call(RUST_G, "hash_file")(algorithm, fname) - -#define RUSTG_HASH_MD5 "md5" -#define RUSTG_HASH_SHA1 "sha1" -#define RUSTG_HASH_SHA256 "sha256" -#define RUSTG_HASH_SHA512 "sha512" - -#ifdef RUSTG_OVERRIDE_BUILTINS -#define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing)) -#endif - #define RUSTG_HTTP_METHOD_GET "get" #define RUSTG_HTTP_METHOD_PUT "put" #define RUSTG_HTTP_METHOD_DELETE "delete" #define RUSTG_HTTP_METHOD_PATCH "patch" #define RUSTG_HTTP_METHOD_HEAD "head" #define RUSTG_HTTP_METHOD_POST "post" -#define rustg_http_request_blocking(method, url, body, headers) call(RUST_G, "http_request_blocking")(method, url, body, headers) -#define rustg_http_request_async(method, url, body, headers) call(RUST_G, "http_request_async")(method, url, body, headers) +#define rustg_http_request_blocking(method, url, body, headers, options) call(RUST_G, "http_request_blocking")(method, url, body, headers, options) +#define rustg_http_request_async(method, url, body, headers, options) call(RUST_G, "http_request_async")(method, url, body, headers, options) #define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id) #define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET" @@ -111,11 +147,24 @@ #define rustg_sql_disconnect_pool(handle) call(RUST_G, "sql_disconnect_pool")(handle) #define rustg_sql_check_query(job_id) call(RUST_G, "sql_check_query")("[job_id]") -#define rustg_url_encode(text) call(RUST_G, "url_encode")(text) +#define rustg_time_microseconds(id) text2num(call(RUST_G, "time_microseconds")(id)) +#define rustg_time_milliseconds(id) text2num(call(RUST_G, "time_milliseconds")(id)) +#define rustg_time_reset(id) call(RUST_G, "time_reset")(id) + +#define rustg_raw_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null") + +/proc/rustg_read_toml_file(path) + var/list/output = rustg_raw_read_toml_file(path) + if (output["success"]) + return output["content"] + else + CRASH(output["content"]) + +#define rustg_url_encode(text) call(RUST_G, "url_encode")("[text]") #define rustg_url_decode(text) call(RUST_G, "url_decode")(text) #ifdef RUSTG_OVERRIDE_BUILTINS - #define url_encode(text) rustg_url_encode(text) - #define url_decode(text) rustg_url_decode(text) + #define url_encode(text) rustg_url_encode(text) + #define url_decode(text) rustg_url_decode(text) #endif diff --git a/code/__defines/liberation.dm b/code/__defines/liberation.dm index eea1d23f..79663e24 100644 --- a/code/__defines/liberation.dm +++ b/code/__defines/liberation.dm @@ -1,2 +1,4 @@ -#define LIBERATION_DELAY_WAIT 120 +#define LIBERATION_DELAY_WAIT 10 #define LIBERATION_DELAY_GEARING 120 +#define LIBERATION_DELAY_BOARDING 10 +#define LIBERATION_DELAY_LAUNCHING 120 \ No newline at end of file diff --git a/code/__helpers/name.dm b/code/__helpers/name.dm index c6758057..aa251801 100644 --- a/code/__helpers/name.dm +++ b/code/__helpers/name.dm @@ -8,4 +8,7 @@ #define FIRST_NAME_SANG (pick(SStext.first_sangheili)) #define LAST_NAME_SANG (pick(SStext.last_sangheili)) #define JACK (pick(SStext.first_kigyar)) -#define UNGG (pick(SStext.first_unggoy)) \ No newline at end of file +#define UNGG (pick(SStext.first_unggoy)) +//spartan +#define FIRST_NAME_SPARTAN (pick(SStext.first_spartan)) +#define LAST_NAME_SPARTAN (pick(SStext.last_spartan)) \ No newline at end of file diff --git a/code/__helpers/text.dm b/code/__helpers/text.dm index 27ecc64d..b8a18667 100644 --- a/code/__helpers/text.dm +++ b/code/__helpers/text.dm @@ -163,3 +163,8 @@ /proc/proper_url_encode(var/input) return url_encode(replacetextEx(input,"\n","")) + +// Used to get a sanitized input. +/proc/stripped_input(var/mob/user, var/message = "", var/title = "", var/default = "", var/max_length=MAX_MESSAGE_LEN) + var/name = input(user, message, title, default) as text|null + return html_encode(trim(name, max_length)) \ No newline at end of file diff --git a/code/_core/client/View-Variables.dm b/code/_core/client/View-Variables.dm new file mode 100644 index 00000000..eddde2c3 --- /dev/null +++ b/code/_core/client/View-Variables.dm @@ -0,0 +1,1832 @@ + +// reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) + +client + proc/debug_variables(datum/D in world) + set category = "Debug" + set name = "View Variables" + + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return + + if(!D) return + + var/title = "" + var/body = "" + + //Sort of a temporary solution for right now. + if(istype(D, /atom)) + var/atom/A = D + title = "[A.name] (\ref[A]) = [A.type]" + + #ifdef VARSICON + if (A.icon) + body += debug_variable("icon", new/icon(A.icon, A.icon_state, A.dir), 0) + #endif + + var/icon/sprite + + if(istype(D,/atom)) + var/atom/AT = D + if(AT.icon && AT.icon_state) + sprite = new /icon(AT.icon, AT.icon_state) + usr << browse_rsc(sprite, "view_vars_sprite.png") + + title = "[D] (\ref[D]) = [D.type]" + + body += {" "} + + body += "" + + body += "
" + + if(sprite) + body += "" + + body += "
" + else + body += "
" + + body += "
" + + if(istype(D,/atom)) + var/atom/A = D + if(is_living(A)) + body += "[D]" + if(A.dir) + body += "
<< [dir2text(A.dir)] >>" + var/mob/living/M = A + body += "
[M.ckey ? M.ckey : "No ckey"] / [M.name ? M.name : "No real name"]" + body += {" +
+ BRUTE:[M.health.get_loss(BRUTE)] + FIRE:[M.health.get_loss(BURN)] + TOXIN:[M.health.get_loss(TOX)] + OXY:[M.health.get_loss(OXY)] + FATIGUE:[M.health.get_loss(FATIGUE)] + SANITY:[M.health.get_loss(SANITY)] + MENTAL:[M.health.get_loss(MENTAL)] + STAMINA:[M.health.get_stamina_loss()] + MANA:[M.health.get_mana_loss()] + + "} + else + body += "[D]" + if(A.dir) + body += "
<< [dir2text(A.dir)] >>" + else + body += "[D]" + + body += "
" + + body += "
" + + var/formatted_type = text("[D.type]") + if(length(formatted_type) > 25) + var/middle_point = length(formatted_type) / 2 + var/splitpoint = findtext(formatted_type,"/",middle_point) + if(splitpoint) + formatted_type = "[copytext(formatted_type,1,splitpoint)]
[copytext(formatted_type,splitpoint)]" + else + formatted_type = "Type too long" //No suitable splitpoint (/) found. + + body += "
[formatted_type]" + + body += "
" + + body += "
Refresh" + + body += {"
+
" + + body += "

" + + body += "E - Edit, tries to determine the variable type by itself.
" + body += "C - Change, asks you for the var type first.
" + body += "M - Mass modify: changes this variable for all objects of this type.

" + + body += "
Search:

" + + body += "
    " + + var/list/names = list() + for (var/V in D.vars) + names += V + + names = sortList(names) + + for (var/V in names) + body += debug_variable(V, D.vars[V], 0, D) + + body += "
" + + var/html = "" + if (title) + html += "[title]" + html += {""} + html += "" + html += body + + html += {" + + "} + + html += "" + + usr << browse(html, "window=variables\ref[D];size=475x650") + + return + + proc/debug_variable(name, value, level, var/datum/DA = null) + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return + var/html = "" + if(DA) + html += "
  • (E) (C) (M) " + else + html += "
  • " + + if (isnull(value)) + html += "[name] = null" + + else if (istext(value)) + html += "[name] = \"[value]\"" + + else if (isicon(value)) + #ifdef VARSICON + var/icon/I = new/icon(value) + var/rnd = rand(1,10000) + var/rname = "tmp\ref[I][rnd].png" + usr << browse_rsc(I, rname) + html += "[name] = ([value]) " + #else + html += "[name] = /icon ([value])" + #endif + +/* else if (istype(value, /image)) + #ifdef VARSICON + var/rnd = rand(1, 10000) + var/image/I = value + + src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") + html += "[name] = " + #else + html += "[name] = /image ([value])" + #endif +*/ + else if (isfile(value)) + html += "[name] = '[value]'" + + else if (istype(value, /datum)) + var/datum/D = value + html += "[name] \ref[value] = [D.type]" + + else if (istype(value, /client)) + var/client/C = value + html += "[name] \ref[value] = [C] [C.type]" + // + else if (istype(value, /list)) + var/list/L = value + html += "[name] = /list ([L.len])" + + if (L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > 500)) + // not sure if this is completely right... + if(0) //(L.vars.len > 0) + html += "
      " + html += "
    " + else + html += "
      " + var/index = 1 + for (var/entry in L) + if(istext(entry)) + html += debug_variable(entry, L[entry], level + 1) + //html += debug_variable("[index]", L[index], level + 1) + else + html += debug_variable(index, L[index], level + 1) + index++ + html += "
    " + + else + html += "[name] = [value]" + + html += "
  • " + return html + +/client/proc/view_var_Topic(href, href_list, hsrc) + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return FALSE + //This should all be moved over to datum/admins/Topic() or something ~Carn + if(href_list["Vars"]) + debug_variables(locate(href_list["Vars"])) + + //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). + else if(href_list["rename"]) + + var/mob/M = locate(href_list["rename"]) + if(!istype(M)) + to_chat(span("notice", "This can only be used on instances of type /mob")) + return + + var/new_name = stripped_input(usr,"What would you like to name this mob?","Input a name",M.name,64) + if( !new_name || !M ) return + + M.name = new_name + href_list["datumrefresh"] = href_list["rename"] + + else if(href_list["varnameedit"] && href_list["datumedit"]) + + var/D = locate(href_list["datumedit"]) + if(!istype(D,/datum) && !istype(D,/client)) + to_chat(span("notice", "This can only be used on instances of types /client or /datum")) + return + + modify_variables(D, href_list["varnameedit"], 1) + href_list["datumrefresh"] = href_list["varnameedit"] + href_list["datumrefresh"] = href_list["datumedit"] + + else if(href_list["varnamechange"] && href_list["datumchange"]) + + var/D = locate(href_list["datumchange"]) + if(!istype(D,/datum) && !istype(D,/client)) + to_chat(span("notice", "This can only be used on instances of types /client or /datum")) + return + + modify_variables(D, href_list["varnamechange"], 0) + href_list["datumrefresh"] = href_list["varnamechange"] + href_list["datumrefresh"] = href_list["datumchange"] + + else if(href_list["varnamemass"] && href_list["datummass"]) + + var/atom/A = locate(href_list["datummass"]) + if(!istype(A)) + to_chat(span("notice", "This can only be used on instances of type /atom")) + return + + cmd_mass_modify_object_variables(A, href_list["varnamemass"]) + href_list["datumrefresh"] = href_list["varnamemass"] + href_list["datumrefresh"] = href_list["datummass"] + + else if(href_list["gib"]) + + var/mob/M = locate(href_list["gib"]) + if(!istype(M)) + to_chat(span("notice", "This can only be used on instances of type /mob")) + return + + smite_living(M) + + else if(href_list["delete"]) + var/atom/M = locate(href_list["delete"]) + spawn(1) + if(!M) return + if(M.is_safe_to_delete()) + usr.to_chat(span("notice","Deleting [M]...")) + qdel(M) + else + usr.to_chat(span("danger","

    Not safe to delete [M]!

    ")) + switch(alert(usr, "Do you want to continue anyway?","Delete?","Yes","No")) + if("Yes") + spawn(1) + qdel(M) + if("No") + return + + else if(href_list["callproc"]) + var/atom/A = locate(href_list["callproc"]) + if(!istype(A)) + to_chat(span("notice", "This can only be used on instances of type /atom")) + callproc(A) + //href_list["datumrefresh"] = href_list["callproc"] + else if(href_list["godmode"]) + var/mob/living/advanced/M = locate(href_list["drop_everything"]) + if(!istype(M)) + to_chat(span("notice", "This can only be used on instances of type /mob/living/advanced")) + return + + M.immortal = TRUE + M.movement_delay = 0.5 + href_list["datumrefresh"] = href_list["godmode"] + else if(href_list["drop_everything"]) + + var/mob/living/advanced/M = locate(href_list["drop_everything"]) + if(!istype(M)) + to_chat(span("notice", "This can only be used on instances of type /mob/living/advanced")) + return + M.drop_all_items(get_turf(src)) + href_list["datumrefresh"] = href_list["drop_everything"] + + else if(href_list["direct_control"]) + + var/mob/M = locate(href_list["direct_control"]) + var/client/NO = src + if(!istype(M)) + to_chat(span("notice", "This can only be used on instances of type /mob")) + return + + var/ghosts = list() + for(var/mob/abstract/observer/ghost/G in range(5)) + if(!G.client) continue + ghosts |= G.client + if(length(ghosts))//as null|mob|obj|turf|area in world + NO = input("Please choose a new client to obtain [M.name].","Control mob",src) as anything in ghosts + if(!NO) return FALSE + + + var/mob/living/advanced/player/P = M + if(P.client) P.client.make_ghost(P.loc) + /*else + spawn(5) + P.PostInitialize()*/ + NO.control_mob(P) + P.update_health_element_icons(TRUE,TRUE,TRUE,TRUE) + P.add_species_buttons() + P.add_species_health_elements() + href_list["datumrefresh"] = href_list["direct_control"] + + else if(href_list["delall"]) + + var/obj/O = locate(href_list["delall"]) + if(!isobj(O)) + to_chat(span("notice", "This can only be used on instances of type /obj")) + return + + var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") + if(action_type == "Cancel" || !action_type) + return + + if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") + return + + if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") + return + var/O_type = O.type + switch(action_type) + if("Strict type") + var/i = 0 + for(var/obj/Obj in world) + if(Obj.type == O_type) + i++ + qdel(Obj) + if(!i) + to_chat(span("notice", "No objects of this type exist")) + return + if("Type and subtypes") + var/i = 0 + for(var/obj/Obj in world) + if(istype(Obj,O_type)) + i++ + qdel(Obj) + if(!i) + to_chat(span("notice", "No objects of this type exist")) + return + + else if(href_list["ai_alert"]) + + var/atom/A = locate(href_list["ai_alert"]) + if(!isobj(A) && !ismob(A) && !isturf(A)) + to_chat(span("notice", "This can only be done to instances of type /obj, /mob and /turf")) + return + var/range = input(src,"Дальность распространения шума", "Alert range") as num + create_alert(range,get_turf(A),A,2,1) + href_list["datumrefresh"] = href_list["ai_alert"] + + else if(href_list["TtU"]) + + var/atom/movable/O = locate(href_list["TtU"]) + if(!isobj(O) && !ismob(O)) + to_chat(span("notice", "This can only be used on instances of type /obj or /mob")) + return + var/turf/T = get_turf(mob) + if(!T) + to_chat(span("warning","Invalid turf.")) + return FALSE + + O.force_move(T) + to_chat(span("notice","You teleported [O.name] to your location.")) + + href_list["datumrefresh"] = href_list["MtF"] + + else if(href_list["MtF"]) + + var/mob/living/L = locate(href_list["MtF"]) + if(!ismob(L)) + to_chat(span("notice", "This can only be used on instances of type /mob/living")) + return + + if(!L.ai) return + L.ai.set_move_objective(src.mob,TRUE) + L.following = src + to_chat(span("notice","You selected [L.name] to follow you.")) + + href_list["datumrefresh"] = href_list["MtF"] + + else if(href_list["explode"]) + + var/atom/A = locate(href_list["explode"]) + if(!isobj(A) && !ismob(A) && !isturf(A)) + to_chat(span("notice", "This can only be done to instances of type /obj, /mob and /turf")) + return + explode(get_turf(A),7,A,A,null) + href_list["datumrefresh"] = href_list["explode"] + + else if(href_list["rotatedatum"]) + + var/atom/A = locate(href_list["rotatedatum"]) + if(!istype(A)) + to_chat(span("notice", "This can only be done to instances of type /atom")) + return + + switch(href_list["rotatedir"]) + if("right") A.dir = turn(A.dir, -45) + if("left") A.dir = turn(A.dir, 45) + href_list["datumrefresh"] = href_list["rotatedatum"] + + else if(href_list["setspecies"]) + + var/mob/living/advanced/H = locate(href_list["setspecies"]) + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob/living/advanced")) + return + + var/new_species = input("Please choose a new species.","Species",null) as null|anything in SSspecies.all_species + + if(!new_species) return + + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + + if(H.perform_specieschange(new_species, TRUE)) + to_chat(span("notice", "Set species of [H] to [H.species].")) + href_list["datumrefresh"] = href_list["setspecies"] + + else if(href_list["equip_loadout"]) + + var/mob/living/advanced/H = locate(href_list["equip_loadout"]) + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob/living/advanced")) + return + + var/loadout = input("Please choose a loadout.","Loadout",null) as null|anything in all_loadouts + + if(!loadout) return + + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + + if(H.equip_loadout(loadout,FALSE)) + to_chat(span("notice", "Loadout is set of [H] to [loadout].")) + else + to_chat(span("notice", "Failed! Something went wrong.")) + href_list["datumrefresh"] = href_list["equip_loadout"] + + else if(href_list["addlanguage"]) + + var/mob/H = locate(href_list["addlanguage"]) + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob")) + return + + var/new_language = input("Please choose a language to add.","Language",null) as null|anything in SSlanguage.all_languages + + if(!new_language) + return + + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + + if(!H.known_languages[new_language] == FALSE) + H.known_languages[new_language] = TRUE + to_chat(span("notice", "Added [new_language] to [H].")) + else + to_chat(span("notice", "Mob already knows that language.")) + href_list["datumrefresh"] = href_list["addlanguage"] + + else if(href_list["remlanguage"]) + + var/mob/H = locate(href_list["remlanguage"]) + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob")) + return + + var/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.known_languages + + if(!rem_language) + return + + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + + if(H.known_languages[rem_language] == TRUE) + H.known_languages[rem_language] = FALSE + to_chat(span("notice", "Removed [rem_language] from [H].")) + else + to_chat(span("notice", "Mob doesn't know that language.")) + href_list["datumrefresh"] = href_list["remlanguage"] + + else if(href_list["addverb"]) + + var/mob/living/H = locate(href_list["addverb"]) + + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob/living")) + return + var/list/possibleverbs = list() + possibleverbs += "Cancel" // One for the top... + possibleverbs += typesof(/mob/proc,/mob/verb,/mob/living/proc,/mob/living/verb) + possibleverbs += typesof(/mob/living/advanced/proc, /mob/living/advanced/player/proc,)///mob/living/advanced/player/verb) + possibleverbs -= H.verbs + possibleverbs += "Cancel" // ...And one for the bottom + + var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + if(!verb || verb == "Cancel") + return + else + H.verbs += verb + href_list["datumrefresh"] = href_list["addverb"] + + else if(href_list["remverb"]) + + var/mob/H = locate(href_list["remverb"]) + + if(!istype(H)) + to_chat(span("notice", "This can only be done to instances of type /mob")) + return + var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs + if(!H) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + if(!verb) + return + else + H.verbs -= verb + href_list["datumrefresh"] = href_list["remverb"] + + else if(href_list["addorgan"]) + href_list["datumrefresh"] = href_list["addorgan"] + var/mob/living/advanced/M = locate(href_list["addorgan"]) + if(!istype(M)) + to_chat(span("notice", "This can only be done to instances of type /mob/living/advanced")) + return + + var/new_organ = input("Please choose an organ to add.","Organ",null) as null|anything in subtypesof(/obj/item/organ) + + if(!M) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + if(!new_organ) + to_chat(span("notice", "Aborting")) + return + var/obj/item/organ/O = M.add_organ(new_organ) + var/color = input(usr, "What color of organ do you want") as null|text + if(color) + O.additional_blends["skin"].color = color + M.update_overlay_tracked("\ref[O]") + + else + var/species/S = SPECIES(M.species) + if(S.default_color_skin) + O.additional_blends["skin"].color = S.default_color_skin + M.update_overlay_tracked("\ref[O]") + if(M.health && M.health_elements && M.health_elements["body"]) + var/obj/hud/button/health/body/B = M.health_elements["body"] + B.update_owner(null) //Please, don't question how...It works... + B.update_owner(M) + M.update_health_element_icons() + M.queue_health_update = 1 + + else if(href_list["remorgan"]) + href_list["datumrefresh"] = href_list["remorgan"] + var/mob/living/advanced/M = locate(href_list["remorgan"]) + if(!istype(M)) + to_chat(span("notice","This can only be done to instances of type /mob/living/carbon")) + return + + var/rem_organ = input("Please choose an organ to remove.","Organ",null) as null|anything in M.organs + + if(!M) + to_chat(span("notice","Mob doesn't exist anymore")) + return + + if(!(locate(rem_organ) in M.organs)) + to_chat(span("notice", "Mob does not have that organ.")) + return + var/obj/item/organ/O = rem_organ + to_chat(span("notice","Removed [rem_organ] from [M].")) + O.unattach_from_parent(M.loc) + M.queue_health_update = 1 + + else if(href_list["regenerateicons"]) + + var/mob/living/advanced/M = locate(href_list["regenerateicons"]) + if(!ismob(M)) + to_chat(span("notice", "This can only be done to instances of type /mob/living/advanced")) + return + M.update_health_element_icons(TRUE,TRUE,TRUE,TRUE) + M.client.update_zoom(initial(M.client.zoom_level)) + M.client.update_verbs() + M.client.update_color_mods() + M.restore_inventory() + M.restore_buttons() + href_list["datumrefresh"] = href_list["regenerateicons"] + + else if(href_list["adjustDamage"] && href_list["mobToDamage"]) + + var/mob/living/L = locate(href_list["mobToDamage"]) + if(!istype(L)) return + + var/Text = href_list["adjustDamage"] + + var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num + + if(!L) + to_chat(span("notice", "Mob doesn't exist anymore")) + return + switch(Text) + if("brute") L.health.adjust_loss_smart(brute=amount,update=TRUE) + if("fire") L.health.adjust_loss_smart(burn=amount,update=TRUE) + if("toxin") L.health.adjust_loss_smart(tox=amount,update=TRUE) + if("oxygen")L.health.adjust_loss_smart(oxy=amount,update=TRUE) + if("fatigue") L.health.adjust_loss_smart(fatigue=amount,update=TRUE) + if("sanity") L.health.adjust_loss_smart(sanity=amount,update=TRUE) + if("mental") L.health.adjust_loss_smart(mental=amount,update=TRUE) + if("stamina") L.health.adjust_stamina(amount) + if("mana") L.health.adjust_mana(amount) + else + to_chat(span("notice", "You caused an error. DEBUG: Text:[Text] Mob:[L]")) + return + + if(amount != 0) + href_list["datumrefresh"] = href_list["mobToDamage"] + + if(href_list["datumrefresh"]) + var/datum/DAT = locate(href_list["datumrefresh"]) + if(!istype(DAT, /datum)) + return + src.debug_variables(DAT) + + return + +/client/proc/mod_list_add_ass() //haha + + var/class = "text" + class = input("What kind of variable?","Variable Type") as null|anything in list("text", + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + + if(!class) + return + + var/var_value = null + + switch(class) + + if("text") + var_value = input("Enter new text:","Text") as null|text + + if("num") + var_value = input("Enter new number:","Num") as null|num + + if("type") + var_value = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) + + if("reference") + var_value = input("Select reference:","Reference") as null|mob|obj|turf|area in world + + if("mob reference") + var_value = input("Select reference:","Reference") as null|mob in all_mobs + + if("file") + var_value = input("Pick file:","File") as null|file + + if("icon") + var_value = input("Pick icon:","Icon") as null|icon + + if(!var_value) return + + return var_value + +/client/proc/mod_list_add(var/list/L) + + var/class = "text" + + class = input("What kind of variable?","Variable Type") as null|anything in list("text", + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + + if(!class) + return + + var/var_value = null + + switch(class) + + if("text") + var_value = input("Enter new text:","Text") as text + + if("num") + var_value = input("Enter new number:","Num") as num + + if("type") + var_value = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf) + + if("reference") + var_value = input("Select reference:","Reference") as mob|obj|turf|area in world + + if("mob reference") + var_value = input("Select reference:","Reference") as mob in all_mobs + + if("file") + var_value = input("Pick file:","File") as file + + if("icon") + var_value = input("Pick icon:","Icon") as icon + + if(!var_value) return + + switch(alert("Would you like to associate a var with the list entry?",,"Yes","No")) + if("Yes") + L += var_value + L[var_value] = mod_list_add_ass() //haha + if("No") + L += var_value + +/client/proc/mod_list(var/list/L) + + if(!istype(L,/list)) to_chat(src, "Not a List.") + + var/list/names = sortList(L) + + var/variable = input("Which var?","Var") as null|anything in names + "(ADD VAR)" + + if(variable == "(ADD VAR)") + mod_list_add(L) + return + + if(!variable) + return + + var/default + + var/dir + + if(isnull(variable)) + to_chat(span("notice", "Unable to determine variable type.")) + + else if(isnum(variable)) + to_chat(span("notice", "Variable appears to be NUM.")) + default = "num" + dir = 1 + + else if(istext(variable)) + to_chat(span("notice", "Variable appears to be TEXT.")) + default = "text" + + else if(isloc(variable)) + to_chat(span("notice", "Variable appears to be REFERENCE.")) + default = "reference" + + else if(isicon(variable)) + to_chat(span("notice", "Variable appears to be ICON.")) + variable = "\icon[variable]" + default = "icon" + + else if(istype(variable,/atom) || istype(variable,/datum)) + to_chat(span("notice", "Variable appears to be TYPE.")) + default = "type" + + else if(istype(variable,/list)) + to_chat(span("notice", "Variable appears to be LIST.")) + default = "list" + + else if(istype(variable,/client)) + to_chat(span("notice", "Variable appears to be CLIENT.")) + default = "cancel" + + else + to_chat(span("notice", "Variable appears to be FILE.")) + default = "file" + + to_chat(span("notice", "Variable contains: [variable]")) + if(dir) + switch(variable) + if(1) + dir = "NORTH" + if(2) + dir = "SOUTH" + if(4) + dir = "EAST" + if(8) + dir = "WEST" + if(5) + dir = "NORTHEAST" + if(6) + dir = "SOUTHEAST" + if(9) + dir = "NORTHWEST" + if(10) + dir = "SOUTHWEST" + else + dir = null + + if(dir) + to_chat(span("notice", "If a direction, direction is: [dir]")) + + var/class = "text" + var/list/choices = list("text","num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + if(!isnull(default) && default != "num") + choices += "edit associated variable" + choices += "DELETE FROM LIST" + + class = input("What kind of variable?","Variable Type",default) as null|anything in choices + + if(!class) + return + + switch(class) //Spits a runtime error if you try to modify an entry in the contents list. Dunno how to fix it, yet. + + if("list") + mod_list(variable) + + if("restore to default") + L[L.Find(variable)]=initial(variable) + + if("edit referenced object") + modify_variables(variable) + + if("DELETE FROM LIST") + L -= variable + return + + if("text") + L[L.Find(variable)] = input("Enter new text:","Text") as text + + if("num") + L[L.Find(variable)] = input("Enter new number:","Num") as num + + if("type") + L[L.Find(variable)] = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf) + + if("reference") + L[L.Find(variable)] = input("Select reference:","Reference") as mob|obj|turf|area in world + + if("mob reference") + L[L.Find(variable)] = input("Select reference:","Reference") as mob in all_mobs + + if("file") + L[L.Find(variable)] = input("Pick file:","File") as file + + if("icon") + L[L.Find(variable)] = input("Pick icon:","Icon") as icon + + //if("marked datum") + // L[L.Find(variable)] = holder.marked_datum + + if("edit associated variable") + var/temp_var = mod_list_add_ass() + if(temp_var) + L[variable] = temp_var + +/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) + + var/class + var/variable + var/var_value + + if(param_var_name) + if(!param_var_name in O.vars) + to_chat("A variable with this name ([param_var_name]) doesn't exist in this atom ([O])") + return + + variable = param_var_name + + var_value = O.vars[variable] + + if(autodetect_class) + if(isnull(var_value)) + to_chat("Unable to determine variable type.") + class = null + autodetect_class = null + else if(isnum(var_value)) + to_chat("Variable appears to be NUM.") + class = "num" + dir = 1 + + else if(istext(var_value)) + to_chat("Variable appears to be TEXT.") + class = "text" + + else if(isloc(var_value)) + to_chat("Variable appears to be REFERENCE.") + class = "reference" + + else if(isicon(var_value)) + to_chat("Variable appears to be ICON.") + var_value = "\icon[var_value]" + class = "icon" + + else if(istype(var_value,/atom) || istype(var_value,/datum)) + to_chat("Variable appears to be TYPE.") + class = "type" + + else if(istype(var_value,/list)) + to_chat("Variable appears to be LIST.") + class = "list" + + else if(istype(var_value,/client)) + to_chat("Variable appears to be CLIENT.") + class = "cancel" + + else + to_chat("Variable appears to be FILE.") + class = "file" + + else + + var/list/names = list() + for (var/V in O.vars) + names += V + + names = sortList(names) + + variable = input("Which var?","Var") as null|anything in names + if(!variable) return + var_value = O.vars[variable] + + if(!autodetect_class) + + var/dir + var/default + if(isnull(var_value)) + to_chat("Unable to determine variable type.") + + else if(isnum(var_value)) + to_chat("Variable appears to be NUM.") + default = "num" + dir = 1 + + else if(istext(var_value)) + to_chat("Variable appears to be TEXT.") + default = "text" + + else if(isloc(var_value)) + to_chat("Variable appears to be REFERENCE.") + default = "reference" + + else if(isicon(var_value)) + to_chat("Variable appears to be ICON.") + var_value = "\icon[var_value]" + default = "icon" + + else if(istype(var_value,/atom) || istype(var_value,/datum)) + to_chat("Variable appears to be TYPE.") + default = "type" + + else if(istype(var_value,/list)) + to_chat("Variable appears to be LIST.") + default = "list" + + else if(istype(var_value,/client)) + to_chat("Variable appears to be CLIENT.") + default = "cancel" + + else + to_chat("Variable appears to be FILE.") + default = "file" + + to_chat("Variable contains: [var_value]") + if(dir) + switch(var_value) + if(1) + dir = "NORTH" + if(2) + dir = "SOUTH" + if(4) + dir = "EAST" + if(8) + dir = "WEST" + if(5) + dir = "NORTHEAST" + if(6) + dir = "SOUTHEAST" + if(9) + dir = "NORTHWEST" + if(10) + dir = "SOUTHWEST" + else + dir = null + if(dir) + to_chat("If a direction, direction is: [dir]") + + class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + + if(!class) + return + + switch(class) + + if("list") + mod_list(O.vars[variable]) + return + + if("restore to default") + O.vars[variable] = initial(O.vars[variable]) + + if("edit referenced object") + return .(O.vars[variable]) + + if("text") + var/var_new = input("Enter new text:","Text",O.vars[variable]) as null|text + if(var_new==null) return + O.vars[variable] = var_new + + if("num") + /*if(variable=="luminosity") + var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num + if(var_new == null) return + O.SetLuminosity(var_new) + else if(variable=="stat") + var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num + if(var_new == null) return + if((O.vars[variable] == 2) && (var_new < 2))//Bringing the dead back to life + dead_mob_list -= O + living_mob_list += O + if((O.vars[variable] < 2) && (var_new == 2))//Kill he + living_mob_list -= O + dead_mob_list += O + O.vars[variable] = var_new + else*/ + var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num + if(var_new==null) return + O.vars[variable] = var_new + + if("type") + var/var_new = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf) + if(var_new==null) return + O.vars[variable] = var_new + + if("reference") + var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob|obj|turf|area in world + if(var_new==null) return + O.vars[variable] = var_new + + if("mob reference") + var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob in all_mobs + if(var_new==null) return + O.vars[variable] = var_new + + if("file") + var/var_new = input("Pick file:","File",O.vars[variable]) as null|file + if(var_new==null) return + O.vars[variable] = var_new + + if("icon") + var/var_new = input("Pick icon:","Icon",O.vars[variable]) as null|icon + if(var_new==null) return + O.vars[variable] = var_new + +/client/proc/cmd_mass_modify_object_variables(atom/A, var/var_name) + set category = "Debug" + set name = "Mass Edit Variables" + set desc="(target) Edit all instances of a target item's variables" + + var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL itms) + + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return + + if(A && A.type) + if(typesof(A.type)) + switch(input("Strict object type detection?") as null|anything in list("Strictly this type","This type and subtypes", "Cancel")) + if("Strictly this type") + method = 0 + if("This type and subtypes") + method = 1 + if("Cancel") + return + if(null) + return + + src.massmodify_variables(A, var_name, method) + +/client/proc/massmodify_variables(var/atom/O, var/var_name = "", var/method = 0) + + var/list/names = list() + for (var/V in O.vars) + names += V + + names = sortList(names) + + var/variable = "" + + if(!var_name) + variable = input("Which var?","Var") as null|anything in names + else + variable = var_name + + if(!variable) return + var/default + var/var_value = O.vars[variable] + var/dir + + if(isnull(var_value)) + to_chat(span("notice", "Unable to determine variable type.")) + + else if(isnum(var_value)) + to_chat(span("notice", "Variable appears to be NUM.")) + default = "num" + dir = 1 + + else if(istext(var_value)) + to_chat(span("notice", "Variable appears to be TEXT.")) + default = "text" + + else if(isloc(var_value)) + to_chat(span("notice", "Variable appears to be REFERENCE.")) + default = "reference" + + else if(isicon(var_value)) + to_chat(span("notice", "Variable appears to be ICON.")) + var_value = "\icon[var_value]" + default = "icon" + + else if(istype(var_value,/atom) || istype(var_value,/datum)) + to_chat(span("notice", "Variable appears to be TYPE.")) + default = "type" + + else if(istype(var_value,/list)) + to_chat(span("notice", "Variable appears to be LIST.")) + default = "list" + + else if(istype(var_value,/client)) + to_chat(span("notice", "Variable appears to be CLIENT.")) + default = "cancel" + + else + to_chat(span("notice", "Variable appears to be FILE.")) + default = "file" + + to_chat(span("notice", "Variable contains: [var_value]")) + if(dir) + switch(var_value) + if(1) + dir = "NORTH" + if(2) + dir = "SOUTH" + if(4) + dir = "EAST" + if(8) + dir = "WEST" + if(5) + dir = "NORTHEAST" + if(6) + dir = "SOUTHEAST" + if(9) + dir = "NORTHWEST" + if(10) + dir = "SOUTHWEST" + else + dir = null + if(dir) + to_chat(span("notice", "If a direction, direction is: [dir]")) + + var/class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", + "num","type","icon","file","edit referenced object","restore to default") + + if(!class) + return + + switch(class) + + if("restore to default") + O.vars[variable] = initial(O.vars[variable]) + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + if("edit referenced object") + return .(O.vars[variable]) + + if("text") + var/new_value = input("Enter new text:","Text",O.vars[variable]) as text|null + if(new_value == null) return + O.vars[variable] = new_value + + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + if("num") + var/new_value = input("Enter new number:","Num",\ + O.vars[variable]) as num|null + if(new_value == null) return + + /*if(variable=="luminosity") + O.SetLuminosity(new_value) + else*/ + O.vars[variable] = new_value + + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + /*if(variable=="luminosity") + M.SetLuminosity(new_value) + else*/ + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + /*if(variable=="luminosity") + A.SetLuminosity(new_value) + else*/ + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + /*if(variable=="luminosity") + A.SetLuminosity(new_value) + else*/ + A.vars[variable] = O.vars[variable] + + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + /*if(variable=="luminosity") + M.SetLuminosity(new_value) + else*/ + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + /*if(variable=="luminosity") + A.SetLuminosity(new_value) + else*/ + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + /*if(variable=="luminosity") + A.SetLuminosity(new_value) + else*/ + A.vars[variable] = O.vars[variable] + + if("type") + var/new_value + new_value = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf) + if(new_value == null) return + O.vars[variable] = new_value + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + if("file") + var/new_value = input("Pick file:","File",O.vars[variable]) as null|file + if(new_value == null) return + O.vars[variable] = new_value + + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + M.vars[variable] = O.vars[variable] + + else if(istype(O.type, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else if(istype(O.type, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + M.vars[variable] = O.vars[variable] + + else if(istype(O.type, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + else if(istype(O.type, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + if("icon") + var/new_value = input("Pick icon:","Icon",O.vars[variable]) as null|icon + if(new_value == null) return + O.vars[variable] = new_value + if(method) + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if ( istype(M , O.type) ) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if ( istype(A , O.type) ) + A.vars[variable] = O.vars[variable] + + else + if(istype(O, /mob)) + for(var/mob/M in all_mobs) + if (M.type == O.type) + M.vars[variable] = O.vars[variable] + + else if(istype(O, /obj)) + for(var/obj/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + else if(istype(O, /turf)) + for(var/turf/A in world) + if (A.type == O.type) + A.vars[variable] = O.vars[variable] + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/* 21st Sept 2010 +Updated by Skie -- Still not perfect but better! +Stuff you can't do: +Call proc /mob/proc/make_dizzy() for some player +Because if you select a player mob as owner it tries to do the proc for +/mob/living/carbon/human/ instead. And that gives a run-time error. +But you can call procs that are of type /mob/living/carbon/human/proc/ for that player. +*/ + +/client/proc/callproc(var/target = null) + set category = "Debug" + set name = "Advanced ProcCall" + set waitfor = 0 + + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return + + var/targetselected = 0 + var/lst[] // List reference + lst = new/list() // Make the list + var/returnval = null + var/class = null + + if(!target) + switch(alert("Proc owned by something?",,"Yes","No")) + if("Yes") + targetselected = 1 + class = input("Proc owned by...","Owner",null) as null|anything in list("Obj","Mob","Area or Turf","Client") + switch(class) + if("Obj") + target = input("Enter target:","Target",usr) as obj in world + if("Mob") + target = input("Enter target:","Target",usr) as mob in all_mobs + if("Area or Turf") + target = input("Enter target:","Target",usr.loc) as area|turf in world + if("Client") + var/list/keys = list() + for(var/client/C) + keys += C + target = input("Please, select a player!", "Selection", null, null) as null|anything in keys + else + return + if("No") + target = null + targetselected = 0 + else targetselected = 1 + + var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null + if(!procname) return + + var/argnum = input("Number of arguments","Number:",0) as num|null + if(!argnum && (argnum!=0)) return + + lst.len = argnum // Expand to right length + //TODO: make a list to store whether each argument was initialised as null. + //Reason: So we can abort the proccall if say, one of our arguments was a mob which no longer exists + //this will protect us from a fair few errors ~Carn + + var/i + for(i=1, iError: callproc(): owner of proc no longer exists.")) + return + + var/actual_name = procname + //Remove the "/proc/" in front of the actual name + if(findtext(procname, "/proc/")) + actual_name = replacetext(procname, "/proc/", "") + else if(findtext(procname, "/proc")) + actual_name = replacetext(procname, "/proc", "") + else if(findtext(procname, "proc/")) + actual_name = replacetext(procname, "proc/", "") + //Remove Parenthesis if any + actual_name = replacetext(actual_name, "()", "") + + if(!hascall(target,actual_name)) + to_chat(span("warning","Error: callproc(): target has no such call [procname].")) + return + //log_admin("[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") + returnval = call(target,actual_name)(arglist(lst)) // Pass the lst as an argument list to the proc + else + //this currently has no hascall protection. wasn't able to get it working. + //log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") + returnval = call(procname)(arglist(lst)) // Pass the lst as an argument list to the proc + + to_chat(span("warning","[procname] returned: [returnval ? returnval : "null"]")) + + + +// ||||||||||||||||||Atom spawn|||||||||||||||||||| \\ + +/client/proc/spawn_atom(object as text) + set category = "Debug" + set desc = "(atom path) Spawn an atom" + set name = "Spawn" + + if(!usr.client || !(permissions & FLAG_PERMISSION_MODERATOR)) + to_chat("\red You need to be a moderator or higher to access this.") + return + + var/list/matches = get_fancy_list_of_types() + if (!isnull(object) && object!="") + matches = filter_fancy_list(matches, object) + + if(matches.len==0) + return + + var/chosen + if(matches.len==1) + chosen = matches[1] + else + chosen = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches + if(!chosen) + return + chosen = matches[chosen] + + /*if(ispath(chosen,/turf)) + var/turf/T = get_turf(usr.loc) + T.ChangeTurf(chosen) + else*/ + var/datum/A = new chosen(usr.loc) + INITIALIZE(A) + if(is_atom(A)) + var/atom/O = A + O.set_dir(mob ? mob.dir : SOUTH) + GENERATE(O) + FINALIZE(A) + +/*var/list/TYPES_SHORTCUTS = list( + /obj/effect/decal/cleanable = "CLEANABLE", + /obj/item/device/radio/headset = "HEADSET", + /obj/item/clothing/head/helmet/space = "SPESSHELMET", + /obj/item/weapon/book/manual = "MANUAL", + /obj/item/weapon/reagent_containers/food/drinks = "DRINK", //longest paths comes first + /obj/item/weapon/reagent_containers/food = "FOOD", + /obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS", + /obj/machinery/atmospherics = "ATMOS", + /obj/machinery/portable_atmospherics = "PORT_ATMOS", + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack = "MECHA_MISSILE_RACK", + /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP", + /obj/item/organ/internal = "ORGAN_INT", +)*/ //Well. We are not using this, but thought that this can be useful if someone actually needs it + +var/global/list/g_fancy_list_of_types = null +/proc/get_fancy_list_of_types() + if (isnull(g_fancy_list_of_types)) //init + var/list/temp = sortList(subtypesof(/atom) - typesof(/area) - /atom/movable) + g_fancy_list_of_types = new(temp.len) + for(var/type in temp) + var/typename = "[type]" + /*for (var/tn in TYPES_SHORTCUTS) + if (copytext_char(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx_char(typename,"[tn]/",1,2)*/ ) + typename = TYPES_SHORTCUTS[tn]+copytext_char(typename,length("[tn]/")) + break*/ + g_fancy_list_of_types[typename] = type + return g_fancy_list_of_types + +/proc/filter_fancy_list(list/L, filter as text) + var/list/matches = new + for(var/key in L) + var/value = L[key] + if(findtext_char("[key]", filter) || findtext_char("[value]", filter)) + matches[key] = value + return matches diff --git a/code/_core/client/chat/_chat.dm b/code/_core/client/chat/_chat.dm index 38934c17..4b3cda3d 100644 --- a/code/_core/client/chat/_chat.dm +++ b/code/_core/client/chat/_chat.dm @@ -20,7 +20,7 @@ if(all_telecomms[A.area_identifier]) for(var/k in all_telecomms[A.area_identifier]) var/obj/structure/interactive/telecomms/TC = k - TC.add_data(rustg_hash_string(RUSTG_HASH_SHA1,"\ref[speaker],\ref[source],[text_to_say]"),radio_data) + TC.add_data(md5("\ref[speaker],\ref[source],[text_to_say]"),radio_data) play_sound('sound/items/radio.ogg',get_turf(source),range_max=VIEW_RANGE) diff --git a/code/_core/client/interaction.dm b/code/_core/client/interaction.dm index 8badf2b9..66704559 100644 --- a/code/_core/client/interaction.dm +++ b/code/_core/client/interaction.dm @@ -67,6 +67,9 @@ store_new_params(object,location,new_params) var/click_flags = get_click_flags(new_params,TRUE) + if(examine_mode && (click_flags & CLICK_RIGHT) && (permissions & FLAG_PERMISSION_MODERATOR)) + debug_variables(object) + return TRUE if(click_flags & CLICK_LEFT) mob.attack_flags |= CONTROL_MOD_LEFT if(click_flags & CLICK_RIGHT) diff --git a/code/_core/client/topic.dm b/code/_core/client/topic.dm index 3c0b4ab7..cdfe4046 100644 --- a/code/_core/client/topic.dm +++ b/code/_core/client/topic.dm @@ -95,6 +95,7 @@ edit_macros() if(permissions & FLAG_PERMISSION_ADMIN) + if("vars") view_var_Topic(href,href_list,hsrc) if(href_list["var_edit_ref"]) var/datum/actual_reference = locate(href_list["var_edit_ref"]) if(actual_reference) diff --git a/code/_core/client/verbs/debug.dm b/code/_core/client/verbs/debug.dm index 48d17594..40ba0480 100644 --- a/code/_core/client/verbs/debug.dm +++ b/code/_core/client/verbs/debug.dm @@ -293,6 +293,8 @@ var/global/list/debug_verbs = list( /client/verb/generate_map_icon, /client/verb/stealth_test, /client/verb/check_lights, + /client/proc/debug_variables, + /client/proc/spawn_atom, /client/verb/subsystem_report, /client/verb/reload_badwords, /client/verb/force_save_all, diff --git a/code/_core/datum/gamemode/liberation/liberation.dm b/code/_core/datum/gamemode/liberation/liberation.dm index 4c56bf3f..6aa77f9b 100644 --- a/code/_core/datum/gamemode/liberation/liberation.dm +++ b/code/_core/datum/gamemode/liberation/liberation.dm @@ -22,6 +22,8 @@ on_waiting() if(GAMEMODE_GEARING) on_gearing() + if(GAMEMODE_LAUNCHING) + on_launching() if(GAMEMODE_FIGHTING) on_fighting() @@ -46,7 +48,7 @@ return TRUE state = GAMEMODE_GEARING round_time = 0 - round_time_next = HORDE_DELAY_GEARING + round_time_next = LIBERATION_DELAY_BOARDING SSshuttle.next_pod_launch = world.time + SECONDS_TO_DECISECONDS(30*10 + 10) announce( "Central Command Update", @@ -63,13 +65,9 @@ if(time_to_display >= 0) set_message("Loadout Period: [get_clock_time(time_to_display)]",TRUE) return TRUE - state = GAMEMODE_FIGHTING + state = GAMEMODE_LAUNCHING round_time = 0 - for(var/k in all_fog) - var/obj/effect/fog_of_war/F = k - F.remove() - round_time_next = LIBERATION_DELAY_GEARING - allow_launch = TRUE + round_time_next = LIBERATION_DELAY_LAUNCHING announce( "Central Command Update", "Shuttle Boarding", @@ -79,6 +77,22 @@ ) return TRUE +/gamemode/liberation/proc/on_launching() + var/time_to_display = round_time_next - round_time + set_status_display("mission","LNCH\n[get_clock_time(time_to_display)]") + if(time_to_display >= 0) + set_message("Launch Period: [get_clock_time(time_to_display)]",TRUE) + return TRUE + state = GAMEMODE_FIGHTING + round_time = 0 + for(var/k in all_fog) + var/obj/effect/fog_of_war/F = k + F.remove() + announce("Central Command Mission Update","Mission is a Go","Shuttles are prepped and ready to depart into the Area of Operations. All crew are cleared to launch.",ANNOUNCEMENT_STATION,'sound/voice/announcement/landfall_crew_0_minutes.ogg') + allow_launch = TRUE + SSshuttle.next_pod_launch = world.time + SECONDS_TO_DECISECONDS(5) + return TRUE + /gamemode/liberation/proc/on_fighting() . = TRUE if(!length(capture_beacons)) diff --git a/code/_core/datum/loadout/new_player.dm b/code/_core/datum/loadout/new_player.dm index 366d1870..60f36e78 100644 --- a/code/_core/datum/loadout/new_player.dm +++ b/code/_core/datum/loadout/new_player.dm @@ -423,6 +423,13 @@ /obj/item/weapon/melee/energy/shield/blue ) +/loadout/nt/halo/covenant/elite_player + spawning_items = list( + /obj/item/clothing/uniform/halo/covenant/elite, + /obj/item/clothing/ears/headset/covenant, + /obj/item/clothing/belt/storage/colored/black + ) + /loadout/nt/halo/covenant/elite_minor spawning_items = list( /obj/item/clothing/uniform/halo/covenant/elite, @@ -501,25 +508,14 @@ /loadout/halo/spartan spawning_items = list( - /obj/item/clothing/uniform/halo/odst, - /obj/item/clothing/feet/shoes/halo/combat, - /obj/item/clothing/feet/shoes/halo/combat/left, - /obj/item/clothing/hands/gloves/colored/padded/black, - /obj/item/clothing/hands/gloves/colored/padded/black/left, - /obj/item/clothing/overwear/hardsuit/halo/spi, - /obj/item/clothing/head/helmet/hardsuit/halo/spi, - /obj/item/clothing/belt/storage/colored/black, - /obj/item/storage/pouch/triple/black, - /obj/item/storage/pouch/triple/black, - /obj/item/weapon/ranged/bullet/magazine/rifle/halo/ma5b, - /obj/item/magazine/halo/ma5b, - /obj/item/magazine/halo/ma5b, - /obj/item/magazine/halo/ma5b, - /obj/item/magazine/halo/ma5b, - /obj/item/magazine/halo/ma5b, - /obj/item/weapon/ranged/bullet/magazine/pistol/halo/socom, - /obj/item/magazine/halo/magnum_socom, - /obj/item/magazine/halo/magnum_socom, - /obj/item/magazine/halo/magnum_socom, - /obj/item/weapon/melee/sword/machete + /obj/item/clothing/uniform/halo/spartan, + /obj/item/clothing/ears/headset, + /obj/item/clothing/overwear/armor/halo/spartan, + /obj/item/clothing/head/helmet/halo/spartan, + /obj/item/clothing/hands/gloves/halo/spartan, + /obj/item/clothing/hands/gloves/halo/spartan/left, + /obj/item/clothing/feet/shoes/halo/spartan, + /obj/item/clothing/feet/shoes/halo/spartan/left, + /obj/item/clothing/belt/storage/colored/black ) + diff --git a/code/_core/datum/species/halo/elite.dm b/code/_core/datum/species/halo/elite.dm index 52c3fdd3..e09d2a83 100644 --- a/code/_core/datum/species/halo/elite.dm +++ b/code/_core/datum/species/halo/elite.dm @@ -34,6 +34,7 @@ BODY_ARM_LEFT = /obj/item/organ/arm/halo/elite/left, BODY_HAND_RIGHT = /obj/item/organ/hand/halo/elite, BODY_HAND_LEFT = /obj/item/organ/hand/halo/elite/left, + BODY_EYE_RIGHT = /obj/item/organ/eye, BODY_EYE_LEFT = /obj/item/organ/eye/left, BODY_EAR_RIGHT = /obj/item/organ/ear, diff --git a/code/_core/datum/species/halo/spartan.dm b/code/_core/datum/species/halo/spartan.dm index 42902294..f1a4aca2 100644 --- a/code/_core/datum/species/halo/spartan.dm +++ b/code/_core/datum/species/halo/spartan.dm @@ -1,67 +1,45 @@ /species/spartan/ - name = "Spartan III"//they're more-or-less all dead by our server's setting,\ - but it's whatever for the sake of gameplay. - desc = "Spartan IIIs." - id = "spartan" + name = "Spartan II" + desc = "Spartan IIs." + id = "Spartan" flags_species = SPECIES_SPARTAN bite_size = 10 - flags_chargen = CHARGEN_SKIN | CHARGEN_EYE | CHARGEN_HAIR | CHARGEN_BEARD | CHARGEN_SEX +// flags_chargen = CHARGEN_HAIR | CHARGEN_SEX flags_flavor_love = FLAG_FLAVOR_COOKED | FLAG_FLAVOR_CHICKEN | FLAG_FLAVOR_MEAT | FLAG_FLAVOR_FISH | FLAG_FLAVOR_LOVE | FLAG_FLAVOR_JUNK | FLAG_FLAVOR_FAT | FLAG_FLAVOR_DAIRY flags_flavor_hate = FLAG_FLAVOR_GROSS | FLAG_FLAVOR_RAW | FLAG_FLAVOR_NECRO | FLAG_FLAVOR_MEDICINE - default_color_eye = "#000000" - default_color_skin = "#e0b19d" - default_color_hair = "#000000" + default_color_eye = "#FFFFFF" + default_color_skin = "#FFFFFF" + default_color_hair = "#FFFFFF" + default_color_detail = "#FFFFFF" + default_color_glow = "#FFFFFF" - default_icon_hair = 'icons/mob/living/advanced/hair/human_hair_head.dmi' - default_icon_state_hair = "hair_c" - - spawning_organs_male = list( - BODY_TORSO = /obj/item/organ/torso/spartan, - BODY_HEAD = /obj/item/organ/head, - BODY_HAIR_HEAD = /obj/item/organ/hair, - BODY_HAIR_FACE = /obj/item/organ/beard, - BODY_GROIN = /obj/item/organ/groin, - BODY_LEG_RIGHT = /obj/item/organ/leg, - BODY_LEG_LEFT = /obj/item/organ/leg/left, - BODY_FOOT_RIGHT = /obj/item/organ/foot, - BODY_FOOT_LEFT = /obj/item/organ/foot/left, - BODY_ARM_RIGHT = /obj/item/organ/arm, - BODY_ARM_LEFT = /obj/item/organ/arm/left, - BODY_HAND_RIGHT = /obj/item/organ/hand, - BODY_HAND_LEFT = /obj/item/organ/hand/left, - BODY_EYE_RIGHT = /obj/item/organ/eye, - BODY_EYE_LEFT = /obj/item/organ/eye/left, - BODY_EAR_RIGHT = /obj/item/organ/ear, - BODY_EAR_LEFT = /obj/item/organ/ear/left, - - BODY_BRAIN = /obj/item/organ/internal/brain, - BODY_HEART = /obj/item/organ/internal/heart, - BODY_LUNGS = /obj/item/organ/internal/lungs, - BODY_STOMACH = /obj/item/organ/internal/stomach, - BODY_LIVER = /obj/item/organ/internal/liver, - BODY_INTESTINTES = /obj/item/organ/internal/intestines, - BODY_KIDNEYS = /obj/item/organ/internal/kidneys + emote_sounds_male = list( + "pain" = list('sound/voice/spartan/pain/pain1.ogg','sound/voice/spartan/pain/pain2.ogg','sound/voice/spartan/pain/pain3.ogg','sound/voice/spartan/pain/pain4.ogg','sound/voice/spartan/pain/pain5.ogg','sound/voice/spartan/pain/pain6.ogg','sound/voice/spartan/pain/pain7.ogg','sound/voice/spartan/pain/pain8.ogg','sound/voice/spartan/pain/pain9.ogg','sound/voice/spartan/pain/pain10.ogg'), + "scream" = list('sound/voice/spartan/scream/death1.ogg','sound/voice/spartan/scream/death2.ogg','sound/voice/spartan/scream/death3.ogg','sound/voice/spartan/scream/death4.ogg','sound/voice/spartan/scream/death5.ogg','sound/voice/spartan/scream/death6.ogg','sound/voice/spartan/scream/death7.ogg','sound/voice/spartan/scream/death8.ogg','sound/voice/spartan/scream/death9.ogg','sound/voice/spartan/scream/death10.ogg','sound/voice/spartan/scream/death11.ogg') + ) + emote_sounds_female = list( + "pain" = list('sound/voice/spartan/pain/pain1.ogg','sound/voice/spartan/pain/pain2.ogg','sound/voice/spartan/pain/pain3.ogg','sound/voice/spartan/pain/pain4.ogg','sound/voice/spartan/pain/pain5.ogg','sound/voice/spartan/pain/pain6.ogg','sound/voice/spartan/pain/pain7.ogg','sound/voice/spartan/pain/pain8.ogg','sound/voice/spartan/pain/pain9.ogg','sound/voice/spartan/pain/pain10.ogg'), + "scream" = list('sound/voice/spartan/scream/death1.ogg','sound/voice/spartan/scream/death2.ogg','sound/voice/spartan/scream/death3.ogg','sound/voice/spartan/scream/death4.ogg','sound/voice/spartan/scream/death5.ogg','sound/voice/spartan/scream/death6.ogg','sound/voice/spartan/scream/death7.ogg','sound/voice/spartan/scream/death8.ogg','sound/voice/spartan/scream/death9.ogg','sound/voice/spartan/scream/death10.ogg','sound/voice/spartan/scream/death11.ogg') ) - spawning_organs_female = list( - BODY_TORSO = /obj/item/organ/torso/spartan/female, - BODY_HEAD = /obj/item/organ/head/female, - BODY_HAIR_HEAD = /obj/item/organ/hair, - BODY_HAIR_FACE = /obj/item/organ/beard, - BODY_GROIN = /obj/item/organ/groin/female, - BODY_LEG_RIGHT = /obj/item/organ/leg, - BODY_LEG_LEFT = /obj/item/organ/leg/left, - BODY_FOOT_RIGHT = /obj/item/organ/foot, - BODY_FOOT_LEFT = /obj/item/organ/foot/left, - BODY_ARM_RIGHT = /obj/item/organ/arm, - BODY_ARM_LEFT = /obj/item/organ/arm/left, - BODY_HAND_RIGHT = /obj/item/organ/hand, - BODY_HAND_LEFT = /obj/item/organ/hand/left, + spawning_organs_male = list( + BODY_TORSO = /obj/item/organ/torso/halo/spartan, + BODY_HEAD = /obj/item/organ/head/halo/spartan, + BODY_GROIN = /obj/item/organ/groin/halo/spartan, + BODY_LEG_RIGHT = /obj/item/organ/leg/halo/spartan, + BODY_LEG_LEFT = /obj/item/organ/leg/halo/spartan/left, + BODY_FOOT_RIGHT = /obj/item/organ/foot/halo/spartan, + BODY_FOOT_LEFT = /obj/item/organ/foot/halo/spartan/left, + BODY_ARM_RIGHT = /obj/item/organ/arm/halo/spartan, + BODY_ARM_LEFT = /obj/item/organ/arm/halo/spartan/left, + BODY_HAND_RIGHT = /obj/item/organ/hand/halo/spartan, + BODY_HAND_LEFT = /obj/item/organ/hand/halo/spartan/left, + BODY_EYE_RIGHT = /obj/item/organ/eye, BODY_EYE_LEFT = /obj/item/organ/eye/left, BODY_EAR_RIGHT = /obj/item/organ/ear, @@ -74,4 +52,5 @@ BODY_LIVER = /obj/item/organ/internal/liver, BODY_INTESTINTES = /obj/item/organ/internal/intestines, BODY_KIDNEYS = /obj/item/organ/internal/kidneys + ) \ No newline at end of file diff --git a/code/_core/datum/vote/gamemode.dm b/code/_core/datum/vote/gamemode.dm index c5124d94..54fd7469 100644 --- a/code/_core/datum/vote/gamemode.dm +++ b/code/_core/datum/vote/gamemode.dm @@ -11,7 +11,7 @@ for(var/k in SSgamemode.all_gamemodes) var/gamemode/G = k - if(initial(G.hidden)) + if(initial(G.hidden)) continue var/game_name = initial(G.name) options += game_name @@ -20,7 +20,7 @@ //stupid jury rigged shit if(findtext(SSdmm_suite.map_name, "Invasion")) options -= "Liberation" - for(var/atom/chungus in join_buttons["become-urf"]) + for(var/atom/chungus in join_buttons["become-insurrection"]) qdel(chungus) else if(findtext(SSdmm_suite.map_name, "Liberation")) options -= "Invasion" diff --git a/code/_core/mob/abstract/observer/verbs/menu.dm b/code/_core/mob/abstract/observer/verbs/menu.dm index 14f297ac..a430bf4e 100644 --- a/code/_core/mob/abstract/observer/verbs/menu.dm +++ b/code/_core/mob/abstract/observer/verbs/menu.dm @@ -127,9 +127,9 @@ // src.to_chat(span("warning","The round is currently ending!")) // return FALSE*/ - if(length(all_nt_markers) <= 0) - src.to_chat(span("warning","There are no available roles!")) - return FALSE +// if(length(all_nt_markers) <= 0) +// src.to_chat(span("warning","There are no available roles!")) +// return FALSE return TRUE @@ -162,13 +162,13 @@ src.to_chat(span("notice","Good choice.")) return FALSE - if(!length(all_nt_markers)) - src.to_chat(span("warning","Someone stole your slot! There are no UNSC slots left!")) - return ..() +// if(!length(all_nt_markers)) +// src.to_chat(span("warning","Someone stole your slot! There are no UNSC slots left!")) +// return ..() - if(!nt_choice || !length(all_nt_markers[nt_choice])) - src.to_chat(span("warning","Someone stole your slot! Pick another role!")) - return ..() +// if(!nt_choice || !length(all_nt_markers[nt_choice])) +// src.to_chat(span("warning","Someone stole your slot! Pick another role!")) +// return ..() if(!can_become_nt()) return ..() @@ -227,9 +227,9 @@ // src.to_chat(span("warning","The round is currently ending!")) // return FALSE*/ - if(length(all_antag_markers) <= 0) - src.to_chat(span("warning","There are no available roles!")) - return FALSE +// if(length(all_antag_markers) <= 0) +// src.to_chat(span("warning","There are no available roles!")) +// return FALSE return TRUE @@ -264,13 +264,13 @@ src.to_chat(span("notice","Good choice.")) return FALSE - if(!length(all_antag_markers)) - src.to_chat(span("warning","Someone stole your slot! There are no Insurrection slots left!")) - return ..() +// if(!length(all_antag_markers)) +// src.to_chat(span("warning","Someone stole your slot! There are no Insurrection slots left!")) +// return ..() - if(!antagonist_choice || !length(all_antag_markers[antagonist_choice])) - src.to_chat(span("warning","Someone stole your slot! Pick another role!")) - return ..() +// if(!antagonist_choice || !length(all_antag_markers[antagonist_choice])) +// src.to_chat(span("warning","Someone stole your slot! Pick another role!")) +// return ..() if(!can_become_antagonist()) return ..() @@ -327,9 +327,9 @@ // src.to_chat(span("warning","The round is currently ending!")) // return FALSE*/ - if(length(all_covenant_markers) <= 0) - src.to_chat(span("warning","There are no available roles!")) - return FALSE +// if(length(all_covenant_markers) <= 0) +// src.to_chat(span("warning","There are no available roles!")) +// return FALSE return TRUE @@ -364,13 +364,13 @@ src.to_chat(span("notice","Good choice.")) return FALSE - if(!length(all_covenant_markers)) - src.to_chat(span("warning","Someone stole your slot! There are no Covenant slots left!")) - return ..() +// if(!length(all_covenant_markers)) +// src.to_chat(span("warning","Someone stole your slot! There are no Covenant slots left!")) +// return ..() - if(!covenant_choice || !length(all_covenant_markers[covenant_choice])) - src.to_chat(span("warning","Someone stole your slot! Pick another role!")) - return ..() +// if(!covenant_choice || !length(all_covenant_markers[covenant_choice])) +// src.to_chat(span("warning","Someone stole your slot! Pick another role!")) +// return ..() if(!can_become_covenant()) return ..() diff --git a/code/_core/mob/living/advanced/player/_player.dm b/code/_core/mob/living/advanced/player/_player.dm index 11163d3c..ad6bad5b 100644 --- a/code/_core/mob/living/advanced/player/_player.dm +++ b/code/_core/mob/living/advanced/player/_player.dm @@ -143,8 +143,8 @@ var/global/list/mob/living/advanced/player/all_players = list() if(species == "unga")//forced here for names because I hate stuff. name = "[gender == MALE ? UNGG : UNGG]" real_name = name - if(species == "spartan")//forced here for names because I hate stuff. - name = "[gender == MALE ? FIRST_NAME_MALE : FIRST_NAME_FEMALE]"/* G[S_LAST_NAME]"*/ + if(species == "Spartan")//forced here for names because I hate stuff. + name = "[gender == MALE ? FIRST_NAME_SPARTAN : FIRST_NAME_SPARTAN] [LAST_NAME_SPARTAN]" real_name = name diff --git a/code/_core/mob/living/advanced/player/halo/covenant/elite.dm b/code/_core/mob/living/advanced/player/halo/covenant/elite.dm index 0be78204..5bb4e530 100644 --- a/code/_core/mob/living/advanced/player/halo/covenant/elite.dm +++ b/code/_core/mob/living/advanced/player/halo/covenant/elite.dm @@ -1,5 +1,5 @@ /mob/living/advanced/player/covenant/elite_minor - loadout_to_use = /loadout/nt/halo/covenant/elite_minor + loadout_to_use = /loadout/nt/halo/covenant/elite_player species = "Elite" /mob/living/advanced/player/covenant/elite_minor/default_appearance() diff --git a/code/_core/mob/living/advanced/player/halo/spartan.dm b/code/_core/mob/living/advanced/player/halo/spartan.dm index 71581fdd..afbb38ec 100644 --- a/code/_core/mob/living/advanced/player/halo/spartan.dm +++ b/code/_core/mob/living/advanced/player/halo/spartan.dm @@ -1,18 +1,18 @@ /mob/living/advanced/player/nt/halo/spartan loadout_to_use = /loadout/halo/spartan - species = "spartan" + species = "Spartan" /mob/living/advanced/player/nt/halo/spartan/default_appearance() . = ..() src.add_organ(/obj/item/organ/internal/implant/hand/left/iff/nanotrasen) src.add_organ(/obj/item/organ/internal/implant/head/loyalty/nanotrasen) - src.add_organ(/obj/item/organ/internal/implant/torso/spartan) return. /mob/living/advanced/player/nt/halo/spartan/prepare() . = ..() - name = "[gender == MALE ? FIRST_NAME_MALE : FIRST_NAME_FEMALE] G[S_LAST_NAME]" + name = "[gender == MALE ? FIRST_NAME_SPARTAN : FIRST_NAME_SPARTAN] [LAST_NAME_SPARTAN]" + sex = MALE setup_name() - to_chat(span("danger","You're a Spartan III. Show them how the UNSC does it while dying like your peers.")) - to_chat(span("notice","Find your fireteam buddy. Do you really need someone to explain what an S-III is?.")) + to_chat(span("danger","You're a Spartan II. Show them how the UNSC does it while dying like your peers.")) + to_chat(span("notice","Find your fireteam buddy. Do you really need someone to explain what a S-II is?")) return . diff --git a/code/_core/obj/item/clothing/feet/shoes/halo/spartan.dm b/code/_core/obj/item/clothing/feet/shoes/halo/spartan.dm new file mode 100644 index 00000000..8523dfc2 --- /dev/null +++ b/code/_core/obj/item/clothing/feet/shoes/halo/spartan.dm @@ -0,0 +1,42 @@ +/obj/item/clothing/feet/shoes/halo/spartan + name = "MJOLNIR Mark V right Leg Armour" + desc = "For when you REALLY want to turn up the heat." + desc_extended = "Leg armour, to be used with the Sangheili Combat Harness." + rarity = RARITY_RARE + icon_state = "inventory_right" + icon_state_worn = "worn_right" + worn_layer = LAYER_MOB_CLOTHING_BELT + + icon = 'icons/obj/item/clothing/shoes/spartan.dmi' + + flags_clothing = FLAG_CLOTHING_SPARTAN + item_slot = SLOT_FOOT_RIGHT + protected_limbs = list(BODY_FOOT_RIGHT) + + defense_rating = list( + BLADE = AP_AXE, + BLUNT = AP_AXE, + PIERCE = AP_AXE, + LASER = AP_AXE, + ARCANE = -AP_AXE, + COLD = -AP_AXE, + BOMB = AP_AXE, + PAIN = AP_AXE + ) + + size = SIZE_2 + + + value = 150 + + speed_bonus = 0 + + +/obj/item/clothing/feet/shoes/halo/spartan/left + name = "MJOLNIR Mark V left Leg Armour" + icon_state = "inventory_left" + icon_state_worn = "worn_left" + + item_slot = SLOT_FOOT_LEFT + protected_limbs = list(BODY_FOOT_LEFT) + blocks_clothing = SLOT_FOOT_LEFT | SLOT_FOOT_LEFT_U \ No newline at end of file diff --git a/code/_core/obj/item/clothing/hands/gloves/halo/spartan.dm b/code/_core/obj/item/clothing/hands/gloves/halo/spartan.dm new file mode 100644 index 00000000..84177ec6 --- /dev/null +++ b/code/_core/obj/item/clothing/hands/gloves/halo/spartan.dm @@ -0,0 +1,50 @@ +/obj/item/clothing/hands/gloves/halo/spartan + name = "MJOLNIR Mark V right Gauntlet" + desc = "Heavy." + desc_extended = "Hand armour, to be used with the MJOLNIR Mark V armor." + icon = 'icons/obj/item/clothing/gloves/spartan.dmi' + + icon_state = "inventory_right" + icon_state_worn = "worn_right" + + rarity = RARITY_LEGENDARY + + defense_rating = list( + BLADE = AP_AXE, + BLUNT = AP_AXE, + PIERCE = AP_AXE, + LASER = AP_SWORD, + ARCANE = -AP_GREATCLUB, + HEAT = AP_AXE, + COLD = AP_AXE, + BOMB = AP_AXE, + BIO = AP_AXE, + RAD = AP_AXE, + FATIGUE = AP_GREATCLUB, + PAIN = AP_GREATCLUB + ) + + protection_cold = list( + BODY_HAND_RIGHT = 1 + ) + + size = SIZE_1 + flags_clothing = FLAG_CLOTHING_SPARTAN + + value = 800 + +/obj/item/clothing/hands/gloves/halo/spartan/left + name = "MJOLNIR Mark V left Gauntlet" + desc = "Heavy." + desc_extended = "Hand armour, to be used with the MJOLNIR Mark V armor." + + icon_state = "inventory_left" + icon_state_worn = "worn_left" + + item_slot = SLOT_HAND_LEFT + protected_limbs = list(BODY_HAND_LEFT) + blocks_clothing = SLOT_HAND_LEFT + + protection_cold = list( + BODY_HAND_LEFT = 1 + ) diff --git a/code/_core/obj/item/clothing/head/helmet/halo/spartan.dm b/code/_core/obj/item/clothing/head/helmet/halo/spartan.dm new file mode 100644 index 00000000..9c958845 --- /dev/null +++ b/code/_core/obj/item/clothing/head/helmet/halo/spartan.dm @@ -0,0 +1,27 @@ +/obj/item/clothing/head/helmet/halo/spartan + name = "MJOLNIR Mark V Helmet" + icon = 'icons/obj/item/clothing/hats/spartan.dmi' + desc = "Don't mess with guys in that helmet!" + desc_extended = "Head armour, to be used with the MJOLNIR Mark V armor." + + defense_rating = list( + BLADE = 60, + BLUNT = 40, + PIERCE = 90, + LASER = 40, + ARCANE = -40, + HEAT = 50, + COLD = 40, + BOMB = 60, + BIO = 20, + RAD = 20, + PAIN = 60 + ) + + flags_clothing = FLAG_CLOTHING_SPARTAN + +// additional_clothing = list(/obj/item/clothing/glasses/nightvision) + + size = SIZE_3 + + value = 100 diff --git a/code/_core/obj/item/clothing/overwear/armor/halo/spartan.dm b/code/_core/obj/item/clothing/overwear/armor/halo/spartan.dm new file mode 100644 index 00000000..ad4d7bbf --- /dev/null +++ b/code/_core/obj/item/clothing/overwear/armor/halo/spartan.dm @@ -0,0 +1,28 @@ +/obj/item/clothing/overwear/armor/halo/spartan + name = "MJOLNIR Mark V armor" + desc = "Spartans! Yay!" + desc_extended = "An armored protective suit worn by the Spartans." + icon = 'icons/obj/item/clothing/suit/spartan.dmi' + + rarity = RARITY_MYTHICAL + + defense_rating = list( + BLADE = 90, + BLUNT = 40, + PIERCE = 80, + LASER = 80, + ARCANE = -40, + HEAT = 80, + COLD = 40, + BOMB = 60, + BIO = 20, + RAD = 20, + PAIN = 60 + ) + + size = SIZE_5 + + flags_clothing = FLAG_CLOTHING_SPARTAN + protected_limbs = list(BODY_TORSO,BODY_GROIN,BODY_ARM_LEFT,BODY_ARM_RIGHT,BODY_LEG_LEFT,BODY_LEG_RIGHT) + + value = 300 diff --git a/code/_core/obj/item/clothing/uniform/halo/spartan.dm b/code/_core/obj/item/clothing/uniform/halo/spartan.dm new file mode 100644 index 00000000..827f06ed --- /dev/null +++ b/code/_core/obj/item/clothing/uniform/halo/spartan.dm @@ -0,0 +1,20 @@ +/obj/item/clothing/uniform/halo/spartan + name = "MJOLNIR Body-suit" + desc = "A slightly reinforced jumpsuit for high-ranked soldiers." + desc_extended = "A sealed, airtight bodysuit. Meant to be worn underneath the MJOLNIR Mark V armor." + icon = 'icons/obj/item/clothing/uniforms/spartan.dmi' + + item_slot = SLOT_TORSO | SLOT_GROIN + + flags_clothing = FLAG_CLOTHING_SPARTAN + + defense_rating = list( + BLADE = 25, + BLUNT = 20, + PIERCE = 10, + HEAT = 40, + COLD = 40, + ARCANE = -30 + ) + + value = 80 \ No newline at end of file diff --git a/code/_core/obj/item/halo/kit.dm b/code/_core/obj/item/halo/kit.dm index f66aad2a..7dd3f2bf 100644 --- a/code/_core/obj/item/halo/kit.dm +++ b/code/_core/obj/item/halo/kit.dm @@ -216,4 +216,58 @@ A.equip_loadout(/loadout/syndicate/halo/soe/sharpshooter,TRUE) qdel(src) + return TRUE + +/obj/item/halo/kit/cov/minor + name = "Minor-kit" + value = 1200 + icon_state = "briefcase" + +/obj/item/halo/kit/cov/minor/click_self(var/mob/caller) + + INTERACT_CHECK + INTERACT_DELAY(10) + + var/mob/living/advanced/A = caller + +// if(!length(A.worn_objects)) + A.equip_loadout(/loadout/nt/halo/covenant/elite_minor,TRUE) + qdel(src) + + return TRUE + +/obj/item/halo/kit/cov/major + name = "Major-kit" + value = 1200 + icon_state = "briefcase" + +/obj/item/halo/kit/cov/major/click_self(var/mob/caller) + + INTERACT_CHECK + INTERACT_DELAY(10) + + var/mob/living/advanced/A = caller + +// if(!length(A.worn_objects)) + A.equip_loadout(/loadout/nt/halo/covenant/elite_major,TRUE) + qdel(src) + + return TRUE + +/obj/item/halo/kit/cov/ultra + name = "Ultra-kit" + value = 1200 + icon_state = "briefcase" + +/obj/item/halo/kit/cov/ultra/click_self(var/mob/caller) + + INTERACT_CHECK + INTERACT_DELAY(10) + + var/mob/living/advanced/A = caller + +// if(!length(A.worn_objects)) + A.equip_loadout(/loadout/nt/halo/covenant/elite_ultra,TRUE) + qdel(src) + return TRUE \ No newline at end of file diff --git a/code/_core/obj/item/magazine/halo/magnum.dm b/code/_core/obj/item/magazine/halo/magnum.dm index 13369f4d..80c578ec 100644 --- a/code/_core/obj/item/magazine/halo/magnum.dm +++ b/code/_core/obj/item/magazine/halo/magnum.dm @@ -52,4 +52,32 @@ icon_states = 1 + value = 5 + +/obj/item/magazine/halo/magnum_reach + name = "\improper M6G Magnum magazine" + desc = "IT'S NOT A CLIP. IT'S A MAGAZINE." + desc_extended = "Contains ammunition for a ranged weapon. Make sure you're trying to use the right caliber." + icon = 'icons/obj/item/magazine/m6b.dmi' + icon_state = "m6b" + bullet_count_max = 6 + + weapon_whitelist = list( + /obj/item/weapon/ranged/bullet/magazine/pistol/halo/magnum_3 = TRUE + ) + + ammo = /obj/item/bullet_cartridge/pistol_10mm/ap + + bullet_length_min = 25 + bullet_length_best = 32 + bullet_length_max = 33 + + bullet_diameter_min = 10 + bullet_diameter_best = 10.17 + bullet_diameter_max = 11 + + size = SIZE_1 + + icon_states = 1 + value = 5 \ No newline at end of file diff --git a/code/_core/obj/item/organs/arms.dm b/code/_core/obj/item/organs/arms.dm index 28c063bf..78268428 100644 --- a/code/_core/obj/item/organs/arms.dm +++ b/code/_core/obj/item/organs/arms.dm @@ -258,5 +258,23 @@ target_bounds_x_min = 21 target_bounds_x_max = 24 + target_bounds_y_min = 15 + target_bounds_y_max = 22 + +/obj/item/organ/arm/halo/spartan + name = "right arm" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + flags_organ = FLAG_ORGAN_SPARTAN + +/obj/item/organ/arm/halo/spartan/left + name = "left arm" + id = BODY_ARM_LEFT + icon_state = BODY_ARM_LEFT + + hud_id = "body_arm_left" + + target_bounds_x_min = 21 + target_bounds_x_max = 24 + target_bounds_y_min = 15 target_bounds_y_max = 22 \ No newline at end of file diff --git a/code/_core/obj/item/organs/feet.dm b/code/_core/obj/item/organs/feet.dm index 8a557b65..1d409cd1 100644 --- a/code/_core/obj/item/organs/feet.dm +++ b/code/_core/obj/item/organs/feet.dm @@ -347,4 +347,29 @@ target_bounds_y_min = 1 target_bounds_y_max = 3 + health_base = 35 + +/obj/item/organ/foot/halo/spartan + name = "right foot" + flags_organ = FLAG_ORGAN_SPARTAN + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + health_base = 35 + +/obj/item/organ/foot/halo/spartan/left + name = "left foot" + id = BODY_FOOT_LEFT + icon_state = BODY_FOOT_LEFT + + attach_flag = BODY_LEG_LEFT + + inventories = list(/obj/hud/inventory/organs/left_foot) + + hud_id = "body_foot_left" + + target_bounds_x_min = 17 + target_bounds_x_max = 22 + + target_bounds_y_min = 1 + target_bounds_y_max = 3 + health_base = 35 \ No newline at end of file diff --git a/code/_core/obj/item/organs/groins.dm b/code/_core/obj/item/organs/groins.dm index 445eef72..8539ab31 100644 --- a/code/_core/obj/item/organs/groins.dm +++ b/code/_core/obj/item/organs/groins.dm @@ -128,4 +128,12 @@ flags_organ = FLAG_ORGAN_COVENANT + health_base = 150 + +/obj/item/organ/groin/halo/spartan + name = "groin" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + + flags_organ = FLAG_ORGAN_SPARTAN + health_base = 150 \ No newline at end of file diff --git a/code/_core/obj/item/organs/hands.dm b/code/_core/obj/item/organs/hands.dm index 0f5959e3..78db926f 100644 --- a/code/_core/obj/item/organs/hands.dm +++ b/code/_core/obj/item/organs/hands.dm @@ -473,4 +473,38 @@ target_bounds_y_min = 11 target_bounds_y_max = 14 + health_base = 35 + +/obj/item/organ/hand/halo/spartan + name = "right hand" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + inventories = list( + /obj/hud/inventory/organs/right_hand_worn, + /obj/hud/inventory/organs/right_hand_held + ) + + damage_type = /damagetype/unarmed/elite/ + flags_organ = FLAG_ORGAN_SPARTAN + + health_base = 35 + +/obj/item/organ/hand/halo/spartan/left + name = "left hand" + id = BODY_HAND_LEFT + icon_state = BODY_HAND_LEFT + inventories = list( + /obj/hud/inventory/organs/left_hand_worn, + /obj/hud/inventory/organs/left_hand_held + ) + + attach_flag = BODY_ARM_LEFT + + hud_id = "body_hand_left" + + target_bounds_x_min = 21 + target_bounds_x_max = 24 + + target_bounds_y_min = 11 + target_bounds_y_max = 14 + health_base = 35 \ No newline at end of file diff --git a/code/_core/obj/item/organs/heads.dm b/code/_core/obj/item/organs/heads.dm index 8eedb468..4e3267e0 100644 --- a/code/_core/obj/item/organs/heads.dm +++ b/code/_core/obj/item/organs/heads.dm @@ -147,4 +147,13 @@ flags_organ = FLAG_ORGAN_COVENANT + health_base = 80 + +/obj/item/organ/head/halo/spartan + name = "head" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + desc = "An organ." + + flags_organ = FLAG_ORGAN_SPARTAN + health_base = 80 \ No newline at end of file diff --git a/code/_core/obj/item/organs/legs.dm b/code/_core/obj/item/organs/legs.dm index b827989e..eae20269 100644 --- a/code/_core/obj/item/organs/legs.dm +++ b/code/_core/obj/item/organs/legs.dm @@ -257,4 +257,26 @@ target_bounds_y_min = 4 target_bounds_y_max = 8 + health_base = 110 + +/obj/item/organ/leg/halo/spartan + name = "right leg" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + health_base = 110 + + flags_organ = FLAG_ORGAN_SPARTAN + +/obj/item/organ/leg/halo/spartan/left + name = "left leg" + id = BODY_LEG_LEFT + icon_state = BODY_LEG_LEFT + + hud_id = "body_leg_left" + + target_bounds_x_min = 17 + target_bounds_x_max = 20 + + target_bounds_y_min = 4 + target_bounds_y_max = 8 + health_base = 110 \ No newline at end of file diff --git a/code/_core/obj/item/organs/torso.dm b/code/_core/obj/item/organs/torso.dm index 326f9c68..a07d114b 100644 --- a/code/_core/obj/item/organs/torso.dm +++ b/code/_core/obj/item/organs/torso.dm @@ -149,10 +149,10 @@ /obj/item/organ/torso/monkey/female icon_state = BODY_TORSO_FEMALE -/obj/item/organ/torso/spartan - - health_base = 120//they're basically just humans but slightly beefier -// flags_organ = FLAG_ORGAN_SPARTAN//for SPI / Mjolnir +/obj/item/organ/torso/halo/spartan + name = "torso" + icon = 'icons/mob/living/advanced/species/halo/spartan/spartan.dmi' + desc = "An organ." -/obj/item/organ/torso/spartan/female - icon_state = BODY_TORSO_FEMALE + health_base = 150 + flags_organ = FLAG_ORGAN_SPARTAN diff --git a/code/_core/obj/item/powercell/_powercell.dm b/code/_core/obj/item/powercell/_powercell.dm index 51023e2f..d0cc2b7e 100644 --- a/code/_core/obj/item/powercell/_powercell.dm +++ b/code/_core/obj/item/powercell/_powercell.dm @@ -142,4 +142,46 @@ charge_max = CELL_SIZE_BASIC*0.5 /obj/item/powercell/recharging/big - charge_max = CELL_SIZE_INDUSTRIAL*0.5 \ No newline at end of file + charge_max = CELL_SIZE_INDUSTRIAL*0.5 + +/obj/item/powercell/covenant/large + name = "covenant power cell" + desc = "A covenant powercell" + desc_extended = "A bulky power cell for use in recharging energy weaponry. This one has a rating of 50000 megawatts." + icon_state = "cell_covenant" + charge_max = CELL_SIZE_INDUSTRIAL + + size = SIZE_2 + + + value = 25 + + weight = 5 + +/obj/item/powercell/covenant + name = "covenant power cell" + desc = "A covenant powercell" + desc_extended = "A power cell for use in recharging energy weaponry. This one has a rating of 25000 megawatts." + icon_state = "cell_covenant" + charge_max = CELL_SIZE_ADVANCED + + size = SIZE_2 + + + value = 25 + + weight = 3 + +/obj/item/powercell/covenant/small + name = "small covenant power cell" + desc = "A small covenant powercell" + desc_extended = "A power cell for use in recharging energy weaponry. This one has a rating of 10000 megawatts." + icon_state = "cell_covenant" + charge_max = CELL_SIZE_BASIC + + size = SIZE_1 + + + value = 25 + + weight = 2 diff --git a/code/_core/obj/item/weapon/ranged/bullet/magazine/pistol/halo/magnum.dm b/code/_core/obj/item/weapon/ranged/bullet/magazine/pistol/halo/magnum.dm index bd79f3a6..72c43f4a 100644 --- a/code/_core/obj/item/weapon/ranged/bullet/magazine/pistol/halo/magnum.dm +++ b/code/_core/obj/item/weapon/ranged/bullet/magazine/pistol/halo/magnum.dm @@ -79,9 +79,9 @@ icon = 'icons/obj/item/weapons/ranged/pistol/halo/magnum2.dmi' value = 40 - shoot_delay = 0.5 + shoot_delay = 3 - automatic = TRUE + automatic = FALSE shoot_sounds = list( 'sound/weapons/unsc/magnum/magnum_stereo1.wav', @@ -158,9 +158,9 @@ icon = 'icons/obj/item/weapons/ranged/pistol/halo/magnum3.dmi' value = 40 - shoot_delay = 0.5 + shoot_delay = 3 - automatic = TRUE + automatic = FALSE shoot_sounds = list( 'sound/weapons/unsc/magnum/magnum_stereo1.wav', diff --git a/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45.dm b/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45.dm index 63cc17bf..22b38b43 100644 --- a/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45.dm +++ b/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45.dm @@ -4,36 +4,36 @@ desc_extended = "The UNSC's older model primary shotgun. An effective close range infantry weapon used by colonial police and insurrectionists abroad." icon = 'icons/obj/item/weapons/ranged/shotgun/m45.dmi' - shoot_delay = 2.5 + shoot_delay = 4 automatic = FALSE - bullet_count_max = 8 + bullet_count_max = 12 shoot_sounds = list( 'sound/weapons/unsc/shotgun/shotgun1.wav', 'sound/weapons/unsc/shotgun/shotgun2.wav', 'sound/weapons/unsc/shotgun/shotgun3.wav') - can_wield = TRUE - view_punch = 12 - icon_state_worn = "worn" item_slot = SLOT_TORSO_B worn_layer = LAYER_MOB_CLOTHING_BACK slot_icons = TRUE + view_punch = 12 + + + size = SIZE_4 - weight = 11 + weight = 12 - value = 100 - heat_per_shot = 0.02 - heat_max = 0.1 + value = 200 - dan_mode = TRUE + heat_per_shot = 0.02 + heat_max = 0.08 attachment_whitelist = list( /obj/item/attachment/barrel/charger = FALSE, @@ -60,24 +60,22 @@ ) attachment_barrel_offset_x = 32 - 16 - attachment_barrel_offset_y = 19 - 16 + attachment_barrel_offset_y = 18 - 16 - attachment_sight_offset_x = 9 - 16 + attachment_sight_offset_x = 13 - 16 attachment_sight_offset_y = 19 - 16 - attachment_undermount_offset_x = 28 - 16 - attachment_undermount_offset_y = 15 - 16 + attachment_undermount_offset_x = 27 - 16 + attachment_undermount_offset_y = 14 - 16 firing_pin = /obj/item/firing_pin/electronic/iff/syndicate /obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45/get_static_spread() - if(!wielded) - return 0.1 - return 0.004 + return 0.002 /obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45/get_skill_spread(var/mob/living/L) if(!heat_current) return 0 - return max(0,0.01 - (0.04 * L.get_skill_power(SKILL_RANGED))) + return max(0,0.005 - (0.005 * L.get_skill_power(SKILL_RANGED))) /obj/item/weapon/ranged/bullet/pump/shotgun/halo/m45/get_base_spread() - return 0.06 \ No newline at end of file + return 0.1 \ No newline at end of file diff --git a/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m90.dm b/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m90.dm index 620489d6..34c95e09 100644 --- a/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m90.dm +++ b/code/_core/obj/item/weapon/ranged/bullet/pump/shotgun/halo/m90.dm @@ -1,6 +1,6 @@ /obj/item/weapon/ranged/bullet/pump/shotgun/halo/m90 name = "M90 Combat Shotgun" - desc = "The most standart shotgun in UNSC forces." + desc = "The most standard shotgun in the UNSC forces." desc_extended = "The UNSC's primary shotgun and one of the most effective close range infantry weapons used by front line forces." icon = 'icons/obj/item/weapons/ranged/shotgun/m90.dmi' diff --git a/code/_core/obj/item/weapon/ranged/laser/halo/cov_lmg.dm b/code/_core/obj/item/weapon/ranged/laser/halo/cov_lmg.dm index d52c1991..3e583e99 100644 --- a/code/_core/obj/item/weapon/ranged/laser/halo/cov_lmg.dm +++ b/code/_core/obj/item/weapon/ranged/laser/halo/cov_lmg.dm @@ -13,13 +13,13 @@ bullet_color = "#466ab6" projectile_speed = TILE_SIZE - 1 - shoot_delay = 1 + shoot_delay = 1.5 automatic = TRUE can_wield = TRUE wield_only = TRUE - charge_cost = CELL_SIZE_BASIC / 100 + charge_cost = CELL_SIZE_ADVANCED / 130 view_punch = 16 diff --git a/code/_core/obj/item/weapon/ranged/laser/halo/cov_pistol.dm b/code/_core/obj/item/weapon/ranged/laser/halo/cov_pistol.dm index 59f406e0..fe73b8dc 100644 --- a/code/_core/obj/item/weapon/ranged/laser/halo/cov_pistol.dm +++ b/code/_core/obj/item/weapon/ranged/laser/halo/cov_pistol.dm @@ -11,11 +11,11 @@ bullet_color = "#00FF00" projectile_speed = TILE_SIZE - 1 - shoot_delay = 3 + shoot_delay = 1.2 - automatic = TRUE + automatic = FALSE - charge_cost = CELL_SIZE_BASIC / 60 + charge_cost = CELL_SIZE_ADVANCED / 60 view_punch = 16 diff --git a/code/_core/obj/item/weapon/ranged/laser/halo/cov_rifle.dm b/code/_core/obj/item/weapon/ranged/laser/halo/cov_rifle.dm index aad2fe68..a9bc91e4 100644 --- a/code/_core/obj/item/weapon/ranged/laser/halo/cov_rifle.dm +++ b/code/_core/obj/item/weapon/ranged/laser/halo/cov_rifle.dm @@ -11,12 +11,12 @@ bullet_color = "#466ab6" projectile_speed = TILE_SIZE - 1 - shoot_delay = 1 - max_bursts = 3 + shoot_delay = 2 + //max_bursts = 3 automatic = TRUE - charge_cost = CELL_SIZE_BASIC / 120 + charge_cost = CELL_SIZE_ADVANCED / 100 view_punch = 16 diff --git a/code/_core/obj/markers/covenant.dm b/code/_core/obj/markers/covenant.dm index 0ad5bd4b..8c548cae 100644 --- a/code/_core/obj/markers/covenant.dm +++ b/code/_core/obj/markers/covenant.dm @@ -17,7 +17,7 @@ var/global/list/all_covenant_markers = list() return ..() /obj/marker/covenant/elite_m - name = "Elite Minor" + name = "Elite" spawn_type = /mob/living/advanced/player/covenant/elite_minor /obj/marker/covenant/elite_mj diff --git a/code/_core/obj/markers/nt.dm b/code/_core/obj/markers/nt.dm index d04afb21..71a3f326 100644 --- a/code/_core/obj/markers/nt.dm +++ b/code/_core/obj/markers/nt.dm @@ -49,5 +49,5 @@ var/global/list/all_nt_markers = list() spawn_type = /mob/living/advanced/player/nt/halo/odst/commander /obj/marker/nt/spartan_three - name = "S-III" + name = "S-II" spawn_type = /mob/living/advanced/player/nt/halo/spartan \ No newline at end of file diff --git a/code/_core/obj/structure/interactive/local_machine/vendor/security.dm b/code/_core/obj/structure/interactive/local_machine/vendor/security.dm index 3d7242ef..8f3bd068 100644 --- a/code/_core/obj/structure/interactive/local_machine/vendor/security.dm +++ b/code/_core/obj/structure/interactive/local_machine/vendor/security.dm @@ -300,6 +300,16 @@ /obj/item/weapon/melee/sword/bdagger ) +/obj/structure/interactive/vending/security/wardrobe/halo/cov + name = "wardrobe vendor" + icon_state = "covarmorvendor" + + stored_types = list( + /obj/item/halo/kit/cov/minor, + /obj/item/halo/kit/cov/major, + /obj/item/halo/kit/cov/ultra + ) + //empty /obj/structure/interactive/vending/security/gundrobe/halo/cov/empty name = "battery" diff --git a/code/_core/world/subsystems/cargo.dm b/code/_core/world/subsystems/cargo.dm index ad15d5e2..0920bf8f 100644 --- a/code/_core/world/subsystems/cargo.dm +++ b/code/_core/world/subsystems/cargo.dm @@ -28,7 +28,7 @@ SUBSYSTEM_DEF(cargo) FINALIZE(P) P.invisibility = 101 P.loc = null - var/md5_hash = copytext(rustg_hash_string(RUSTG_HASH_MD5,line),1,6) + var/md5_hash = copytext(md5("[P.type]"),1,6) cargo_id_to_type[md5_hash] = P sortTim(cargo_id_to_type,/proc/cmp_path_dsc,associative=TRUE) diff --git a/code/_core/world/subsystems/discord.dm b/code/_core/world/subsystems/discord.dm index 19d82951..bd05a777 100644 --- a/code/_core/world/subsystems/discord.dm +++ b/code/_core/world/subsystems/discord.dm @@ -6,7 +6,7 @@ SUBSYSTEM_DEF(discord) name = "Discord API" desc = "Handles the discord API." - priority = SS_ORDER_PRELOAD + priority = SS_ORDER_CONFIG var/discord_webhook_key @@ -25,6 +25,12 @@ SUBSYSTEM_DEF(discord) if(world.port == 0) //Don't send to local servers. return FALSE + if(!world.visibility) + return FALSE + + if(!discord_webhook_key) + return FALSE + var/list/webhook_forum_params = list( "content" = message_to_send ) @@ -33,6 +39,6 @@ SUBSYSTEM_DEF(discord) "Content-Type" = "application/json" ) - rustg_http_request_blocking(RUSTG_HTTP_METHOD_POST,"https://discordapp.com/api/webhooks/[discord_webhook_key]",json_encode(webhook_forum_params),json_encode(webhook_header_params)) + rustg_http_request_async(RUSTG_HTTP_METHOD_POST,"https://discordapp.com/api/webhooks/[discord_webhook_key]",json_encode(webhook_forum_params),json_encode(webhook_header_params),"") return TRUE diff --git a/code/_core/world/subsystems/text.dm b/code/_core/world/subsystems/text.dm index d123066a..2471b8f2 100644 --- a/code/_core/world/subsystems/text.dm +++ b/code/_core/world/subsystems/text.dm @@ -17,6 +17,8 @@ SUBSYSTEM_DEF(text) var/list/first_sangheili = list() var/list/last_sangheili = list() + var/list/first_spartan = list() + var/list/last_spartan = list() var/list/first_kigyar = list() var/list/first_unggoy = list() @@ -30,6 +32,8 @@ SUBSYSTEM_DEF(text) last_sangheili = splittext(rustg_file_read("text/names/last_sangheili.txt"),"\n") first_kigyar = splittext(rustg_file_read("text/names/first_kigyar.txt"),"\n") first_unggoy = splittext(rustg_file_read("text/names/first_unggoy.txt"),"\n") + first_spartan = splittext(rustg_file_read("text/names/first_spartan.txt"),"\n") + last_spartan = splittext(rustg_file_read("text/names/last_spartan.txt"),"\n") adjectives = splittext(rustg_file_read("text/names/adjectives.txt"),"\n") verbs = splittext(rustg_file_read("text/names/verbs.txt"),"\n") @@ -45,6 +49,8 @@ SUBSYSTEM_DEF(text) log_subsystem(name,"Found [length(first_sangheili)] first sang names.") log_subsystem(name,"Found [length(last_sangheili)] last sang names.") + log_subsystem(name,"Found [length(first_spartan)] first sang names.") + log_subsystem(name,"Found [length(last_spartan)] last sang names.") log_subsystem(name,"Found [length(first_kigyar)] kig names.") log_subsystem(name,"Found [length(first_unggoy)] ung names.") diff --git a/icons/mob/living/advanced/species/halo/spartan/spartan.dmi b/icons/mob/living/advanced/species/halo/spartan/spartan.dmi new file mode 100644 index 00000000..201ffcf1 Binary files /dev/null and b/icons/mob/living/advanced/species/halo/spartan/spartan.dmi differ diff --git a/icons/obj/item/cells.dmi b/icons/obj/item/cells.dmi index cd622e91..76bfbf40 100644 Binary files a/icons/obj/item/cells.dmi and b/icons/obj/item/cells.dmi differ diff --git a/icons/obj/item/clothing/gloves/spartan.dmi b/icons/obj/item/clothing/gloves/spartan.dmi new file mode 100644 index 00000000..a576297a Binary files /dev/null and b/icons/obj/item/clothing/gloves/spartan.dmi differ diff --git a/icons/obj/item/clothing/hats/spartan.dmi b/icons/obj/item/clothing/hats/spartan.dmi new file mode 100644 index 00000000..524dad43 Binary files /dev/null and b/icons/obj/item/clothing/hats/spartan.dmi differ diff --git a/icons/obj/item/clothing/shoes/spartan.dmi b/icons/obj/item/clothing/shoes/spartan.dmi new file mode 100644 index 00000000..6e3ac283 Binary files /dev/null and b/icons/obj/item/clothing/shoes/spartan.dmi differ diff --git a/icons/obj/item/clothing/suit/spartan.dmi b/icons/obj/item/clothing/suit/spartan.dmi new file mode 100644 index 00000000..5fa1eb95 Binary files /dev/null and b/icons/obj/item/clothing/suit/spartan.dmi differ diff --git a/icons/obj/item/clothing/uniforms/spartan.dmi b/icons/obj/item/clothing/uniforms/spartan.dmi new file mode 100644 index 00000000..7338e0f0 Binary files /dev/null and b/icons/obj/item/clothing/uniforms/spartan.dmi differ diff --git a/icons/obj/item/weapons/ranged/rifle/halo/ma5b.dmi b/icons/obj/item/weapons/ranged/rifle/halo/ma5b.dmi index 8a5fcc49..9208804f 100644 Binary files a/icons/obj/item/weapons/ranged/rifle/halo/ma5b.dmi and b/icons/obj/item/weapons/ranged/rifle/halo/ma5b.dmi differ diff --git a/icons/obj/structure/vending.dmi b/icons/obj/structure/vending.dmi index 6c6c0c84..85bf5394 100644 Binary files a/icons/obj/structure/vending.dmi and b/icons/obj/structure/vending.dmi differ diff --git a/librust_g.so b/librust_g.so new file mode 100644 index 00000000..9d65fa4e Binary files /dev/null and b/librust_g.so differ diff --git a/maps/core/bluespace.dmm b/maps/core/bluespace.dmm index 55be030e..d2b73247 100644 --- a/maps/core/bluespace.dmm +++ b/maps/core/bluespace.dmm @@ -233,19 +233,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeae aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag diff --git a/maps/core/odst_ship.dmm b/maps/core/odst_ship.dmm index 711c040d..b801be41 100644 --- a/maps/core/odst_ship.dmm +++ b/maps/core/odst_ship.dmm @@ -90,7 +90,6 @@ "cR" = (/obj/structure/interactive/chair{dir = 4},/turf/simulated/floor/tile/shuttle/red,/area/transit/dropship/alpha/station) "cS" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/orange,/area/burgerstation/hanger) "cV" = (/obj/structure/interactive/misc/halo/decor/machinery/table{dir = 1; icon_state = "holotable"},/turf/simulated/floor/tile/security,/area/burgerstation/briefing) -"cY" = (/obj/marker/nt/spartan_three,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "da" = (/obj/marker/map_node,/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) "dc" = (/obj/structure/interactive/chair{dir = 4},/obj/structure/interactive/lighting/fixture/tube/station{dir = 4},/turf/simulated/floor/tile/shuttle/red,/area/transit/dropship/alpha/station) "dd" = (/obj/structure/interactive/drop_pod,/turf/simulated/floor/plating/shuttle,/area/burgerstation/hanger) @@ -125,7 +124,6 @@ "gD" = (/obj/structure/interactive/chair/stool/covies/bar,/turf/simulated/floor/plating/covenant,/area/burgerstation/science) "gJ" = (/obj/structure/interactive/vending/smart_fridge/chemistry,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "gL" = (/obj/structure/smooth/table/glass,/obj/item/defib,/obj/structure/interactive/shop,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) -"gZ" = (/obj/marker/covenant/elite_mj,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "hl" = (/obj/structure/interactive/door/airlock/shuttle/covenant,/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/bravo/station) "hw" = (/turf/simulated/floor/cave_dirt,/area/burgerstation/tax) "hA" = (/mob/living/advanced/npc/halo/kigyar/ranged/lobby{dir = 4},/turf/simulated/floor/cave_dirt,/area/burgerstation/tax) @@ -146,7 +144,6 @@ "iU" = (/obj/decal/poster/urfreno,/turf/simulated/wall/metal/reinforced,/area/burgerstation/briefing) "jb" = (/obj/structure/interactive/chair{dir = 8},/obj/marker/antag/soe_commander,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "jj" = (/obj/marker/map_node,/turf/simulated/floor/cave_dirt,/area/burgerstation/tax) -"jl" = (/obj/marker/covenant/elite_shipmaster,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "jL" = (/obj/structure/interactive/misc/halo/decor/machinery/tower,/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating/shuttle,/area/burgerstation/tax) "ka" = (/obj/structure/interactive/misc/mirror/chargen{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "kx" = (/mob/living/advanced/npc/halo/kigyar/ranged/lobby,/turf/simulated/floor/cave_dirt,/area/burgerstation/tax) @@ -185,7 +182,6 @@ "uJ" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 8},/obj/structure/interactive/vending/security/wardrobe/halo/soe,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "vf" = (/obj/effect/temp/crate_gib,/turf/space,/area) "vi" = (/obj/structure/interactive/ground_ore_deposit/map/carbon,/turf/simulated/floor/cave_dirt,/area/burgerstation/tax) -"vv" = (/obj/structure/interactive/fulton_beacon,/turf/simulated/floor/tile/shuttle/blue,/area/transit/dropship/delta/station) "vR" = (/obj/structure/interactive/chair{dir = 4; icon_state = "chair"},/obj/marker/antag/soe,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "wd" = (/obj/item/organ/foot/halo/unggoy,/turf/space,/area) "wh" = (/obj/structure/shuttle_engine/burst,/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/bravo/station) @@ -239,14 +235,13 @@ "FP" = (/obj/structure/interactive/door/airlock/covenant,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "Ge" = (/obj/structure/interactive/vending/security/gundrobe/halo/soe,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "Gm" = (/obj/decal/hazard{dir = 6},/obj/structure/interactive/computer/console/remote_flight/alpha,/turf/simulated/floor/plating,/area/burgerstation/hanger) -"Gt" = (/obj/structure/smooth/window/reinforced/plasma{health_base = 600000},/turf/simulated/floor/plating/covenant,/area/burgerstation/science) +"Gt" = (/obj/marker/spawning/window/reinforced{color = "#E423C9"},/turf/simulated/floor/plating/covenant,/area/burgerstation/science) "Hg" = (/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/covenant/blue,/area/burgerstation/hanger) "Hh" = (/obj/structure/interactive/crate/covenant/tall,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "Hm" = (/obj/structure/smooth/table/glass,/obj/structure/interactive/shop,/obj/item/clothing/belt/storage/medical,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "Hu" = (/turf/simulated/floor/tile/shuttle/blue,/area/transit/dropship/delta/station) "Hy" = (/obj/structure/interactive/door/airlock/shuttle,/turf/simulated/floor/tile/shuttle,/area/transit/dropship/alpha/station) "HA" = (/turf/simulated/wall/rock/indestructable,/area/burgerstation/tax) -"HD" = (/obj/marker/covenant/elite_ultra,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "HG" = (/obj/item/organ/torso/halo/unggoy,/turf/space,/area) "IJ" = (/mob/living/advanced/npc/halo/urf,/turf/simulated/floor/tile/red,/area/burgerstation/hanger) "IN" = (/obj/structure/interactive/lighting/fixture/covenant{dir = 1; icon_state = "covie_light_on"},/turf/simulated/wall/covenant/hull,/area/burgerstation/hanger) @@ -255,6 +250,7 @@ "JD" = (/mob/living/advanced/npc/halo/kigyar,/turf/simulated/floor/covenant/blue,/area/burgerstation/hanger) "JP" = (/obj/marker/covenant/elite_m,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "Kt" = (/turf/simulated/floor/covenant/blue,/area/burgerstation/hanger) +"KG" = (/obj/structure/interactive/vending/security/wardrobe/halo/cov,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "KP" = (/obj/structure/interactive/vending/medical/chemistry,/turf/simulated/floor/covenant/blue,/area/burgerstation/science) "Ld" = (/obj/decal/hazard{dir = 10},/turf/simulated/floor/plating,/area/burgerstation/hanger) "Lo" = (/mob/living/advanced/npc/halo/urf,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) @@ -337,20 +333,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvVvVvVvVvSUVvVvVvVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzyzyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvVvSUKtKtKtKtKtKtKtKtKtVvVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzEWMhMhMhEWyzyzyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvVvKtKtKtKtKtKtrcKtgmKtKtKtKtVvVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzqFTeTeCeCeCeCejlCeyzyzEWGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvSUKtKtKtKtKtKtKtKtKtKtKtrcKtKtKtKtVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzyzTeCeCeCeCeCeHDHDHDyzyvyvyvGtGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvVvKtKtKtKtKtKtrcKtgmKtKtKtKtVvVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzqFKGKGCeCeCeCeJPCeyzyzEWGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvSUKtKtKtKtKtKtKtKtKtKtKtrcKtKtKtKtVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzyzTeCeCeCeCeCeJPJPJPyzyvyvyvGtGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvVvKtKtKtXmKtKtKtKtKtKtKtKtKtHgKtKtKtKtSUVvVvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzHhyzTeCemACeCeCeCeCeCeSkoYoYoYoYyvGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvKtKtKtKtKtWgTbKtKtKtKtKtXpWgKtKtKtKtKtKtKtVvVvVvaaaaaaaaaaaaaaaaaavfemaaaaaaaaaaaaaayzyzHhHhLQTemACeCeCeCegZgZgZLQyvyvsroYoYoYGtGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvKtKtKtKtKtWgTbKtKtKtKtKtXpWgKtKtKtKtKtKtKtVvVvVvaaaaaaaaaaaaaaaaaavfemaaaaaaaaaaaaaayzyzHhHhLQTemACeCeCeCeJPJPJPLQyvyvsroYoYoYGtGtGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvSUKtKtKtKtWggzTxWgKtKtKtWgMUgzWgKtFnKtKtKtKtKtKtSUVvVvVvaaaahJaaaaHGaaaaaaaaaaaaaaaaaayzClCeCeFPCeCeCeCeCeCeJPJPJPFPoYoYoYoYyvyvyvoYyDyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVvKtKtJDKtKtXpTxTxxSKtKtKtxSMUMUTbKtKtKtKtKtKtKtKtKtKtKtVvVvaaaaaawdaaZXaavfaaaaaaaaaayzXlClfWClyzNDmACeCeCeHhJPJPJPyzyvyvoYoYoYoYoYoYyvyvyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzyzyzyzyzaaaaaaVvVvKtKtKtrcKtTbTxTxxSKtKtKtxSMUMUXpKtKtKtKtKtKtKtKtKtKtKtKtVvVvaaaavfAXaaaaaaaaaaaayzyzyzqFyzEWyzyzyzUkFPFPUkyzSkyzyzSkoYoYoYoYyvyvyvoYoYoYoYyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzXlHhHhHhHhyDyzaaaaVvKtKtKtKtKtKtWgTxTxhlKtKtKthlMUMUWgKtrcKtKtKtKtKtKtKtKtKtKtKtSUVvVvaaaaaaaaaaaayzyzEWNDNDKPROTmNpyzyvyvoYoYyvyvoYyvyvyzyvyvoYoYoYEGoYoYSkoYCeCeyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzfWfWHhHhHhHhHhyzyzaaVvKtKtgmKtKtKtwHTxTxhlKtKtKthlMUTxwHKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtVvEWGtGtGtGtEWyzgJwpCeCeCeCeCeCetJoYoYoYoYoYoYoYoYoYtJCeoYgDgDgDgDgDoYCeCeCexRyDyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzfWfWHhHhHhHhHhyzyzaaVvKtKtgmKtKtKtwHTxTxhlKtKtKthlMUTxwHKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtVvEWGtGtGtGtEWyzgJwpCeCeCeCeCeCetJEGoYoYoYoYoYoYoYEGtJCeoYgDgDgDgDgDoYCeCeCexRyDyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzXlNDCeCeCeCeCeCeCeNDyzyzPgKtKtKtKtKtKtWgTxTxxSKtKtKtxSMUMUWgKtPLKtKtKtKtKtKtKtKtKtKtKtKtKtOsCeCeCeCeCeCeLQCewZCemACeCeCeyAyzyvyvoYoYyvyvoYyvyvyzCeCegDgDgDgDgDCeCeCeWQoYoYyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzCeCeCeCeCeCeCeCeCeCeCeyDKtKtKtKtKtKtKtTbTxTxxSKtKtKtxSMUMUXpKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtQRCeBuCeCeCeCeFPCeCeCerACeCeCeCeFPoYoYoYoYoYoYoYoYoYFPCeCeCeCeCeCeCeCeCebToYoYoYyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzCeCerACeCeCeCeCerACeCeFPKtKtKtrcKtKtKtXpTxTxWgKtKtKtWgMUMUTbKtKtKtKtrcKtKtKtKtKtrcKtKtKtKtQRCeCerACeCeCeFPCeCeCeCeCeCeCeCeFPoYtioYoYoYoYoYoYoYFPCeCeCeCeCeCemACeCeumoYoYoYyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzCeCeCeCeCeCeCeCeCeCeCeyDKtKtKtKtKtKtKtWgTxTbKtKtKtKtKtXpMUWgKtPLKtKtKtKtKtKtKtKtKtgmKtKtKtOsCeCeCeCeCeCeLQCeCeCeCeCeCesnCeyzyvyvoYoYyvyvoYyvyvyzCeCegDgDgDgDgDCeCeCesJoYoYyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzXlMhCeCeCeCeCeCeCeMhyzyzPgKtKtKtJDKtKtWgIZWgWgWgxSWgWgWgIZWgKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtVvhLGtGtGtGthLyzsnCeCeCeCeCewZaWtJoYpRoYoYoYoYoYoYoYtJCeoYgDgDgDgDgDoYCeCeCeQlyDyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzXlMhCeCeCeCeCeCeCeMhyzyzPgKtKtKtJDKtKtWgIZWgWgWgxSWgWgWgIZWgKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtVvhLGtGtGtGthLyzsnCeCeCeCeCewZaWtJEGpRoYoYoYoYoYoYEGtJCeoYgDgDgDgDgDoYCeCeCeQlyDyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzfWfWClClClClClyzyzaaVvKtKtKtKtKtKtKtWgwhWgWgLsWgWgwhWgKtKtKtKtKtKtKtKtKtKtKtKtKtKtINVvVvaaaaaaaaaaaayzyzhLgLbuicHmsnCeyzyvyvoYtiyvyvoYyvyvyzyvyvoYoYoYEGoYoYSkoYCeCeyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzXlClClClClyDyzaaaaVvKtKtKtKtKtKtKtKtKtKthlgkhlKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtKtVvVvaaaaaaaaaaaaaaaaaaaayzyzyzqFyzhLyzyzyzzYFPFPzYyzSkyzyzSkoYoYoYoYyvyvyvoYoYoYoYyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzyzyzyzyzyzaaaaaaVvVvKtKtKtKtKtKtKtKtKtXprDTbKtKtKtKtKtKtJDKtKtKtKtKtKtKtKtVvVvaaaaaaaaaaaaaaaaaaaaaaaaaayzXlClfWClyzNDCeCeCeCeHhCkCkCkyzyvyvoYoYsroYoYoYyvyvyzyzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -434,12 +430,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakakdGdGdGdGdGdGdGdGdGdGdGak aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcraxaAaAaAaAaBaAaAaAaAaCcrakakakakakakakcrcrakakakakakbjaFaKbAbAaKaFbjagagagagbjaLbjbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakdaOiblspEUUWCYUWspEUbaOidaakakpVdaaIaIaIaIaIaIaIaIdacraObpbAbqbAbAbpaObAbALobAbjbsbsbsbjbjbjbjbjbjbjbtbtbtbtbtbtbtbtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDaMaDaSaYaZaDaMaDbacrakakakcSdAdAcSdAdAcSdAdAcSdAbjbjbjaOaObjbjbjbjahbjbjbjbjbjbjbjbjbjbjbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllflfTLBaTLlflfbaOicrakpVpVaIakddddddddddddakaIcraObAbAbAdBbAbAaObAbHbAdBbpbAbAbAbpbALodBbjbjbjbjbjiUbDbDbDbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakdablaDapbbbibmbibbapaDbadaakakdAdaaIaIaIaIaIaIaIaIdacraObpbAbqbAbAbpaObAbAbAbAbjbsbsbsbjbjbjbjbjbjbjbtbtbtbtbtbtbtbtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfTkHuHuHuUtlfbaOicrbEcrcraIakddddddddddddakaIbGaibjbjAlbjbjbjbjbjbjcebAvRvRvRvRvRvRbAbAbAdBbjbjbjbJbJbKbJbLaibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDdcbwigbxigbwbCaDbacrakdAdAaIakddddddddddddakaIcraObAbAbAdBbAbAaObAbHbAdBbpbAbAbAbpbAbAdBbjbjbjbjbjbjbDbDbDbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfyVowHuowQdlfbaOicrakbPcrdaaIaIaIaIaIaIaIaIdacrbjbRbSaRbUbVaRbSbjaibAbAvRvRvRvRvRvRbAbAaibWbjbjbXbAbAbYbAbAbXbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaJblhFcRbwcvbwcRbwcvhFbacrbEcrcraIakddddddddddddakaIbGaibjbjbjbjbjbjbjbjbjcebAdTdTdTdTdTdTbAbAbAdBbjbjbjbJbJbKbJbLaibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakZoOibloATkowHuowUtoAbaOiaIcdcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAaXbjcedBbAbAbAbAbAbAdBbAanbAcgbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDcRbwcvbwcRbwcvaDbabOakbPcrdaaIaIaIaIaIaIaIaIdacrbjbRbSaRbUbVaRbSbjaibAbAdTdTdTdTdTdTbAbAaibWbjbjbXbAbAbYbAbAbXbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakbnabbllfTkowvvowUtlfbaabcrakcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAbAvRvRvRvRvRvRbAbAcxbrbAcAbAcQcVaQlqchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaIblaDcRbwcvbwcRbwcvaDbaaIcdcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAaXbjcedBbAbAbAbAbAbAdBbAanbAcgbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfTkowHuowUtlfbaOibnZgcrcrdaaIaIaIaIaIaIaIaIdacrbjeWaQdheWaQdjeWbAaObAbAvRvRvRvRvRvRbAbAaPjbbAcAbAdldpaQdwchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakbncuaDcRbwcvbwcRbwcvaDcwcrakcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAbAdTdTdTdTdTdTbAbAcxczbAcAbAcQcVcYchchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaIOibloATkowHuowUtoAbaOiZocdcrcraIakddddddddddddakaIbGaibjbjbjVhbjbjbjbjaicedBbAbAbAbAbAbAdBbAaPbAdJbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDcRbwcvbwcRbwcvaDbabnakcrcrdaaIaIaIaIaIaIaIaIdacrbjbzaQdhbzaQdjbzbAaObAbAdTdTdTdTdTdTbAbAaPbrbAcAbAdldpcYdwchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfyVowHuowQdlfbaOicrakbPcraIakddddddddddddakaIcraObAbAbAdBbAbAaObAbAbAbAvRvRvRvRvRvRbAbAaibWbjbjdNdObAchbAdOdNbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDdcbwigbxigbwbCaDbacrakdAdAaIakddddddddddddakaIcraObAbAbAdBbAbAaObAbHbAdBbpbAbAbAbpbAbAdBbjbjbjbjbjbjbDbDbDbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfyVowHuowQdlfbaOicrakbPcrdaaIaIaIaIaIaIaIaIdacrbjbRbSaRbUbVaRbSaXaibAbAvRvRvRvRvRvRbAbAaibWbjbjbXbAbAbYbAbAbXbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaJblhFcRbwcvbwcRbwcvhFbacrbEcrcraIakddddddddddddakaIbGaibjbjbjbjbjbjbjbjbjcebAdTdTdTdTdTdTbAbAbAdBbjbjbjbJbJbKbJbLaibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakZoOibloATkowHuowUtoAbaOiaIcdcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAdBbAbAbAbAbAbAdBbAanbAcgbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDcRbwcvbwcRbwcvaDbabOakbPcrdaaIaIaIaIaIaIaIaIdacrbjbRbSaRbUbVaRbSaXaibAbAdTdTdTdTdTdTbAbAaibWbjbjbXbAbAbYbAbAbXbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakbnabbllfTkowHuowUtlfbaabcrakcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAbAvRvRvRvRvRvRbAbAcxbrbAcAbAcQcVaQlqchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaIblaDcRbwcvbwcRbwcvaDbaaIcdcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAdBbAbAbAbAbAbAdBbAanbAcgbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfTkowHuowUtlfbaOibnZgcrcrdaaIaIaIaIaIaIaIaIdacrbjeWaQdheWaQdjeWbAbjbAbAvRvRvRvRvRvRbAbAaPjbbAcAbAdldpaQdwchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakbncuaDcRbwcvbwcRbwcvaDcwcrakcrcraIakddddddddddddakaIcraObAbAbAbAbAbAbAbAaObAbAdTdTdTdTdTdTbAbAcxczbAcAbAcQcVaQchchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaIOibloATkowHuowUtoAbaOiZocdcrcraIakddddddddddddakaIbGaibjbjbjVhbjbjbjbjaicedBbAbAbAbAbAbAdBbAaPbAdJbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDcRbwcvbwcRbwcvaDbabnakcrcrdaaIaIaIaIaIaIaIaIdacrbjbzaQdhbzaQdjbzbAbjbAbAdTdTdTdTdTdTbAbAaPbrbAcAbAdldpaQdwchcpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfyVowHuowQdlfbaOicrakbPcraIakddddddddddddakaIcraObAbAbAdBbAbAaObAbAbAbAvRvRvRvRvRvRbAbAaibWbjbjdNdObAchbAdOdNbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaIblhFcRbwcvbwcRbwcvhFbaaIcdcrcraIakddddddddddddakaIbGaibjbjbjbjbjbjbjbjaicedBbAbAbAbAbAbAdBbAaPbAdJbjbAbAchchchcicpbDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfVIBaEQBaVIlfbaOicrbEcrcrdaaIaIaIaIaIaIaIaIdacraOezbAmebAbAezaObHdBbAbAvRvRvRvRvRvRbAbAbAdBbjbjbjpnbJbJbJpnaibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrblaDdcbwcvigcRbwbCaDbabOakbPcraIakddddddddddddakaIcraObAbAdKdBbAbAaObAbAbAbAdTdTdTdTdTdTbAbAaibWbjbjdNdObAchbAdOdNbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakcrOibllfJClfiElfAnlfbaOicrakpVpVXopVpVXotwpVXopVpVXopVbjbjbjaOaObjbjbjbAbAykdBezbAbAbAezbAykdBbjbjbjbjbjbjbDbDbDbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakdPblaDcRbwbwbwbwbwcvaDbacrbEcrcrdaaIaIaIaIaIaIaIaIdacraOezbAmebAbAezaObHdBbAbAdTdTdTdTdTdTbAbAbAdBbjbjbjpnbJbJbJpnaibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakdaOibllflflffjlflflfbaOidaakakakakakakakcrcrakakakakakbjGekabAbAkaGebjbjahbjbjbjbsbsbsbjbjbjbjbjbjbjbtbtbtbtbtbtbtbtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/horde/standard.dmm b/maps/horde/standard.dmm index f77a4077..2d414f2c 100644 --- a/maps/horde/standard.dmm +++ b/maps/horde/standard.dmm @@ -119,6 +119,7 @@ "co" = (/obj/structure/interactive/chair,/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) "cp" = (/obj/structure/interactive/lighting/fixture/bulb,/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) "cq" = (/obj/structure/interactive/lighting/fixture/bulb{dir = 4},/turf/simulated/floor/wood/rich,/area/halo/interior/urf_base) +"cr" = (/obj/decal/hazard/corner{dir = 4},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/burgerstation/hanger) "cs" = (/turf/simulated/floor/wood/rich,/area/halo/interior/urf_base) "cu" = (/obj/item/storage/heavy/trash_pile,/turf/simulated/floor/cave_dirt,/area/halo/interior/urf_outpost) "cv" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/computer/console/old,/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) @@ -144,6 +145,7 @@ "cP" = (/obj/structure/interactive/crate/trash,/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) "cQ" = (/obj/structure/interactive/lighting/fixture/bulb{dir = 8},/turf/simulated/floor/wood/rich,/area/halo/interior/urf_base) "cR" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/fax_machine,/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) +"cS" = (/obj/decal/hazard{dir = 1},/turf/simulated/floor/plating,/area/burgerstation/hanger) "cU" = (/mob/living/advanced/npc/halo/urf{dir = 8; icon_state = "directional"},/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) "cV" = (/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/obj/structure/interactive/barricade{dir = 8; icon_state = "metal"},/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) "cW" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/lighting/fixture/bulb{dir = 1},/turf/simulated/floor/wood/boat,/area/halo/interior/urf_base) @@ -454,17 +456,17 @@ "iR" = (/obj/structure/interactive/door/airlock,/turf/simulated/floor/tile/dark/single,/area/halo/interior/comm_unsc) "iS" = (/obj/structure/interactive/misc/halo/decor/machinery/tower,/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) "iT" = (/turf/simulated/floor/stair,/area/halo/exterior/jungle) -"iU" = (/obj/structure/interactive/barricade{dir = 8; icon_state = "metal"},/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) +"iU" = (/turf/space,/area) "iV" = (/obj/structure/interactive/barricade{dir = 4; icon_state = "metal"},/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) "iW" = (/obj/structure/interactive/lighting/fixture/floor/strong,/obj/decal/hazard{dir = 6},/turf/simulated/floor/plating,/area/halo/exterior/jungle) "iX" = (/obj/decal/hazard{dir = 1},/turf/simulated/floor/plating,/area/halo/exterior/jungle) "iY" = (/obj/structure/interactive/lighting/fixture/floor/strong,/obj/decal/hazard{dir = 10},/turf/simulated/floor/plating,/area/halo/exterior/jungle) -"iZ" = (/obj/structure/interactive/barricade{dir = 8; icon_state = "metal"},/obj/structure/interactive/barricade,/mob/living/advanced/npc/halo/marine{dir = 4; icon_state = "directional"},/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) +"iZ" = (/turf/simulated/wall/metal/reinforced,/area/burgerstation/hanger) "ja" = (/obj/structure/interactive/barricade{dir = 4; icon_state = "metal"},/obj/structure/interactive/barricade,/mob/living/advanced/npc/halo/marine{dir = 8; icon_state = "directional"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "jb" = (/obj/decal/hazard{dir = 8},/turf/simulated/floor/plating,/area/halo/exterior/jungle) "jc" = (/turf/simulated/floor/plating,/area/transit/dropship/alpha/landing) "jd" = (/obj/decal/hazard{dir = 4},/turf/simulated/floor/plating,/area/halo/exterior/jungle) -"je" = (/mob/living/advanced/npc/halo/marine,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"je" = (/turf/simulated/floor/plating,/area/transit/dropship/charlie/landing) "jf" = (/turf/simulated/floor/colored/sand/underwater,/area/halo/exterior/jungle) "jg" = (/turf/simulated/hazard/water/sea,/area/halo/exterior/jungle) "jh" = (/obj/structure/interactive/fence/corner{dir = 8; icon_state = "corner"},/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) @@ -543,7 +545,7 @@ "kC" = (/turf/simulated/floor/tile/grey/single,/area/halo/interior) "kD" = (/obj/structure/smooth/table/reinforced/dark,/turf/simulated/floor/tile/dark/single,/area/halo/interior) "kE" = (/obj/structure/interactive/chair/stool,/mob/living/advanced/npc/halo/marine,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) -"kF" = (/obj/marker/map_node,/turf/simulated/floor/tile/grey/single,/area/halo/interior) +"kF" = (/obj/marker/map_node,/obj/structure/interactive/chair{dir = 4},/turf/simulated/floor/tile/grey/single,/area/halo/interior) "kG" = (/obj/structure/interactive/chair/stool,/mob/living/advanced/npc/halo/marine{dir = 4; icon_state = "directional"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "kH" = (/obj/structure/interactive/lighting/bonfire/on,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "kI" = (/obj/structure/smooth/wall/brick{color = "#2c2b2b"},/obj/decal/hazard/black{dir = 6; icon_state = "line"},/turf/simulated/floor/brick/grey,/area/halo/exterior/jungle) @@ -1601,6 +1603,7 @@ "Fd" = (/obj/structure/interactive/crate/engineering,/obj/item/deployable/mob/sentry,/obj/item/deployable/mob/sentry,/obj/item/magazine/minigun_46,/obj/item/magazine/minigun_46,/obj/item/powercell/industrial,/obj/item/powercell/industrial,/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) "Fe" = (/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/mob/living/advanced/npc/halo/marine{dir = 1; icon_state = "directional"},/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) "Ff" = (/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/obj/structure/interactive/barricade{dir = 4; icon_state = "metal"},/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) +"Fh" = (/obj/decal/hazard,/obj/marker/map_node,/turf/simulated/floor/plating,/area/burgerstation/hanger) "Fi" = (/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "Fj" = (/obj/structure/interactive/barricade{dir = 8},/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/mob/living/simple/turret/unsc{dir = 8},/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) "Fk" = (/obj/structure/interactive/barricade{dir = 1; icon_state = "metal"},/obj/structure/interactive/barricade{dir = 4; icon_state = "metal"},/mob/living/advanced/npc/halo/marine{dir = 1; icon_state = "directional"},/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) @@ -1661,53 +1664,272 @@ "Gn" = (/obj/structure/smooth/table/reinforced,/turf/simulated/floor/plating,/area/halo/interior/geminus/core) "Go" = (/turf/simulated/floor/plating,/area/halo/interior/geminus/core) "Gp" = (/obj/decal/sidewalk/side{dir = 4; icon_state = "cobble_side2"},/obj/marker/map_node,/turf/simulated/floor/grass,/area/halo/exterior/jungle) +"Gq" = (/obj/decal/hazard{dir = 6},/obj/structure/interactive/computer/console/remote_flight/alpha,/turf/simulated/floor/plating,/area/burgerstation/hanger) "Gx" = (/turf/simulated/floor/colored/ash/dark,/area/halo/interior) "GC" = (/mob/living/advanced/npc/halo/elite,/turf/simulated/floor/cave_dirt,/area/halo/interior) +"GH" = (/obj/structure/interactive/crate,/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) +"GQ" = (/obj/structure/scenery/fake_door/blast_door,/turf/simulated/wall/metal/reinforced,/area/burgerstation/hanger) "GR" = (/mob/living/advanced/npc/halo/kigyar,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"Hf" = (/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) "Hk" = (/obj/structure/interactive/status_display/global_display/alpha,/turf/simulated/wall/plastic/office,/area/halo/interior) +"Hx" = (/obj/marker/nt/spartan_three,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "HB" = (/mob/living/advanced/npc/halo/unggoy{dir = 8; icon_state = "halo_unggoy"},/turf/simulated/floor/colored/sand/underwater,/area/halo/exterior/jungle) +"HF" = (/obj/structure/interactive/vending/clothes/accessories,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"HL" = (/obj/marker/map_node,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "HM" = (/obj/structure/interactive/door/airlock,/obj/effect/fog_of_war,/turf/simulated/floor/carpet,/area/halo/interior) +"HP" = (/obj/structure/interactive/door/airlock/shuttle,/turf/simulated/floor/tile/shuttle,/area/transit/dropship/charlie/station) +"HX" = (/obj/structure/interactive/vending/security/gundrobe/halo/odst,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Ib" = (/obj/structure/interactive/telecomms/station,/mob/living/simple/glockroach/nerevar,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"Ie" = (/obj/marker/map_node,/turf/simulated/floor/tile/purple,/area/burgerstation/hanger) "If" = (/obj/structure/interactive/status_display/global_display/alpha,/turf/simulated/wall/plastic/office,/area/halo/interior/bar) +"Ig" = (/turf/simulated/floor/stair,/area/burgerstation/briefing) +"Ii" = (/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Ij" = (/obj/structure/smooth/table/glass,/obj/item/container/blood_pack/full/o_negative,/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/blue_baby,/area/burgerstation/briefing) "In" = (/turf/simulated/wall/covenant,/area/halo/exterior/jungle) +"It" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/shop,/obj/item/grenade/timed/explosive/halo,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Iw" = (/obj/decal/hazard,/turf/simulated/floor/plating,/area/burgerstation/hanger) "IM" = (/obj/structure/interactive/barricade/covenant{dir = 4; icon_state = "cov"},/mob/living/advanced/npc/halo/elite{dir = 4; icon_state = "halo_elite"},/turf/simulated/floor/cave_dirt,/area/halo/interior) +"IT" = (/obj/marker/map_node,/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"IZ" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Je" = (/obj/structure/interactive/door/airlock/glass,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"Jl" = (/obj/structure/interactive/status_display/global_display/drop_pod,/turf/simulated/wall/metal/reinforced,/area/burgerstation/hanger) +"Jy" = (/obj/structure/interactive/chair{dir = 8},/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) "JD" = (/mob/living/advanced/npc/halo/unggoy{dir = 4; icon_state = "halo_unggoy"},/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) +"JJ" = (/obj/item/defib,/obj/structure/smooth/table/rack/grey,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "JN" = (/obj/structure/interactive/misc/halo/decor/vehicles/spirit{dir = 4},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "JS" = (/obj/effect/fog_of_war,/obj/effect/fog_of_war,/turf/simulated/wall/brick/red/dark,/area/halo/interior) +"Kc" = (/obj/structure/interactive/computer/console/flight,/turf/simulated/floor/tile/shuttle,/area/transit/dropship/charlie/station) +"Kw" = (/obj/structure/interactive/misc/halo/decor/machinery/table{dir = 1; icon_state = "holotable"},/turf/simulated/floor/tile/security,/area/burgerstation/briefing) +"Kz" = (/obj/structure/smooth/window/shuttle/middle{dir = 4; icon_state = "single"},/turf/simulated/floor/plating/shuttle,/area/transit/dropship/charlie/station) "KB" = (/obj/structure/capture_beacon,/turf/simulated/floor/colored/sand/underwater,/area/halo/exterior/jungle) +"KH" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) +"KX" = (/turf/simulated/floor/tile/purple,/area/burgerstation/hanger) +"Lc" = (/obj/decal/hazard{dir = 10},/turf/simulated/floor/plating,/area/burgerstation/hanger) +"Lh" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 8},/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Lq" = (/obj/marker/spawning/window/reinforced,/turf/simulated/floor/plating,/area/burgerstation/briefing) "Ls" = (/obj/structure/interactive/lighting/fixture/bulb,/turf/simulated/wall/rock/indestructable,/area/halo/interior) +"LC" = (/obj/structure/interactive/chair,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"LR" = (/obj/structure/smooth/table/glass,/obj/item/storage/kit/syndicate/filled,/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/blue_baby,/area/burgerstation/briefing) "LU" = (/obj/effect/fog_of_war,/turf/simulated/wall/plastic/office,/area/halo/interior) +"Mm" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 4},/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "Mn" = (/obj/structure/scenery/rocks,/mob/living/advanced/npc/halo/elite{dir = 8; icon_state = "halo_elite"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"Mr" = (/obj/marker/map_node,/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Mt" = (/obj/structure/interactive/misc/halo/signs/armory,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Mv" = (/obj/marker/map_node,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Mw" = (/obj/decal/hazard{dir = 8},/turf/simulated/floor/plating,/area/burgerstation/hanger) +"ME" = (/obj/structure/smooth/window/shuttle/end_02{dir = 8},/turf/simulated/floor/plating/shuttle,/area/transit/dropship/charlie/station) +"MF" = (/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"MW" = (/obj/structure/interactive/misc/halo/signs/hangar{dir = 8; icon_state = "hangar"},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Nu" = (/obj/structure/interactive/computer/console,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"NH" = (/obj/structure/smooth/table/reinforced,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "NU" = (/obj/structure/interactive/misc/halo/decor/vehicles/spirit{dir = 1},/mob/living/advanced/npc/halo/unggoy,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "NV" = (/mob/living/advanced/npc/halo/elite{dir = 8; icon_state = "halo_elite"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) "NW" = (/obj/decal/hazard{dir = 9; icon_state = "line"},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/halo/exterior/jungle) +"Ob" = (/obj/structure/smooth/table/reinforced,/obj/item/supply_remote/crates/ammunition,/turf/simulated/floor/tile/nanotrasen,/area/burgerstation/briefing) +"Of" = (/obj/decal/hazard{dir = 8},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/burgerstation/hanger) +"Ok" = (/turf/simulated/floor/tile/shuttle,/area/transit/dropship/charlie/station) "Ot" = (/mob/living/advanced/npc/halo/unggoy{dir = 4; icon_state = "halo_unggoy"},/turf/simulated/floor/cave_dirt,/area/halo/interior) +"Ox" = (/obj/structure/interactive/bed/sleeper/medical,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"OQ" = (/obj/structure/shuttle_engine/burst,/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) +"OR" = (/obj/structure/interactive/misc/halo/decor/machinery/table{dir = 4; icon_state = "holotable"},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"OY" = (/obj/structure/smooth/window/shuttle,/turf/simulated/floor/plating/shuttle,/area/transit/dropship/charlie/station) +"Pa" = (/mob/living/advanced/npc/halo/marine,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Pd" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/orange,/area/burgerstation/hanger) +"Ps" = (/obj/structure/interactive/vending/security/ammo/halo/odst,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "PA" = (/turf/simulated/floor/cave_dirt,/area/halo/interior) +"PE" = (/turf/simulated/wall/metal/reinforced,/area/burgerstation/briefing) +"PJ" = (/obj/shuttle_controller/charlie{dir = 1},/obj/marker/landmark{name = "Charlie Shuttle"},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) "PM" = (/obj/effect/fog_of_war,/turf/simulated/floor/cave_dirt,/area/halo/interior) +"PQ" = (/obj/structure/interactive/telecomms/station,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"PT" = (/obj/decal/hazard/corner{dir = 8},/turf/simulated/floor/plating,/area/burgerstation/hanger) +"PX" = (/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"Qa" = (/obj/structure/interactive/door/airlock/glass,/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"Qb" = (/obj/structure/interactive/chair{dir = 4},/obj/structure/interactive/lighting/fixture/tube/station{dir = 4},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) +"Qj" = (/obj/decal/hazard/corner,/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/burgerstation/hanger) +"Qq" = (/obj/decal/hazard/corner{dir = 4},/turf/simulated/floor/plating,/area/burgerstation/hanger) +"Qx" = (/obj/structure/interactive/misc/halo/decor/machinery/table,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Qz" = (/obj/structure/smooth/window/shuttle/middle,/turf/simulated/floor/plating/shuttle,/area/transit/dropship/charlie/station) +"QJ" = (/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) +"QK" = (/obj/structure/interactive/computer/console/remote_flight/charlie{dir = 8},/turf/simulated/floor/tile/dark/single,/area/halo/interior) +"QR" = (/obj/marker/map_node,/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 8},/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"QU" = (/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Ri" = (/obj/structure/interactive/drop_pod,/turf/simulated/floor/plating/shuttle,/area/burgerstation/hanger) +"Rj" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger,/obj/marker/map_node,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"Rt" = (/obj/structure/interactive/chair{dir = 1},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) "Rx" = (/mob/living/advanced/npc/halo/unggoy,/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) +"Rz" = (/obj/structure/interactive/chair{dir = 4; icon_state = "chair"},/obj/marker/nt/spartan_three,/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"RH" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/obj/marker/map_node,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"RP" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 4},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "RQ" = (/obj/item/storage/heavy/trash_pile,/obj/effect/fog_of_war,/turf/simulated/floor/plating,/area/halo/interior) +"RR" = (/obj/structure/smooth/table,/turf/simulated/floor/tile/shuttle,/area/transit/dropship/charlie/station) +"Sb" = (/obj/structure/smooth/lattice,/turf/space,/area) +"Sc" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/fax_machine,/turf/simulated/floor/tile/nanotrasen,/area/burgerstation/briefing) +"Sl" = (/obj/structure/smooth/table/reinforced,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "Sr" = (/obj/structure/interactive/computer/console/remote_flight/alpha{dir = 8},/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) +"Su" = (/turf/simulated/floor/tile/orange,/area/burgerstation/hanger) +"Sv" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 4},/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) "Sw" = (/obj/marker/drop_pod_location,/turf/simulated/floor/colored/sand/underwater,/area/halo/exterior/jungle) +"Sx" = (/obj/structure/smooth/window/shuttle/end_02{dir = 4},/turf/simulated/floor/plating/shuttle,/area/transit/dropship/charlie/station) +"SF" = (/obj/structure/interactive/misc/halo/decor/machinery/table{dir = 8; icon_state = "holotable"},/turf/simulated/floor/tile/security,/area/burgerstation/briefing) +"SL" = (/obj/structure/interactive/vending/clothes/dye,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"SM" = (/obj/structure/interactive/misc/halo/signs/armory{dir = 1; icon_state = "armory"},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"To" = (/obj/structure/interactive/chair{dir = 8},/obj/structure/interactive/lighting/fixture/tube/station{dir = 8},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) +"Tr" = (/obj/structure/smooth/table/reinforced,/turf/simulated/floor/tile/nanotrasen,/area/burgerstation/briefing) "Ts" = (/obj/structure/wip/meme,/obj/marker/objective_spawn,/turf/simulated/wall/rock/indestructable,/area/halo/interior) +"TF" = (/obj/structure/interactive/bed/padded,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"TH" = (/obj/structure/scenery/fake_door/blast_door,/turf/simulated/wall/metal/reinforced,/area/burgerstation/briefing) +"TQ" = (/obj/decal/hazard{dir = 4},/turf/simulated/floor/plating,/area/burgerstation/hanger) "TX" = (/obj/effect/fog_of_war,/turf/simulated/floor/plating,/area/halo/interior) "TZ" = (/mob/living/advanced/npc/halo/marine{dir = 1; icon_state = "directional"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"Ua" = (/obj/structure/smooth/table/reinforced,/obj/item/container/food/package/mre,/obj/structure/interactive/shop,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Us" = (/mob/living/advanced/npc/halo/marine{dir = 8; icon_state = "directional"},/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) "Uy" = (/turf/simulated/floor/plating,/area/transit/dropship/bravo/landing) +"UA" = (/obj/structure/smooth/table/reinforced,/obj/structure/interactive/shop,/obj/item/grenade/landmine/proximity/explosive/halo,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"UF" = (/obj/structure/interactive/chair{dir = 8},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) "UJ" = (/mob/living/advanced/npc/halo/urf{dir = 1; icon_state = "directional"},/turf/simulated/floor/cave_dirt,/area/halo/interior) "Vl" = (/mob/living/advanced/npc/halo/elite{dir = 4; icon_state = "halo_elite"},/turf/simulated/floor/cave_dirt,/area/halo/interior) "Vp" = (/obj/structure/interactive/barricade/covenant{dir = 4; icon_state = "cov"},/turf/simulated/floor/cave_dirt,/area/halo/interior) +"VC" = (/obj/structure/interactive/status_display/global_display/drop_pod,/turf/simulated/wall/metal/reinforced,/area/burgerstation/briefing) +"VE" = (/obj/structure/interactive/computer/console{dir = 1; icon_state = "computer"},/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "VJ" = (/mob/living/advanced/npc/halo/kigyar{dir = 8; icon_state = "halo_kigyar1"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"VL" = (/obj/decal/hazard/corner{dir = 1},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/burgerstation/hanger) +"VR" = (/obj/structure/smooth/table/glass,/obj/item/cell_charger,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) +"We" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/orange,/area/burgerstation/hanger) +"Wg" = (/mob/living/advanced/npc/halo/marine,/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"Wi" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "Wn" = (/obj/structure/interactive/barricade/covenant{dir = 4; icon_state = "cov"},/mob/living/advanced/npc/halo/kigyar{dir = 4; icon_state = "halo_kigyar1"},/turf/simulated/floor/cave_dirt,/area/halo/interior) "Wo" = (/turf/simulated/wall/plastic/office,/area/halo/exterior/jungle) +"Wz" = (/obj/structure/interactive/status_display/global_display/charlie,/turf/simulated/wall/metal,/area/burgerstation/hanger) "WI" = (/mob/living/advanced/npc/halo/unggoy{dir = 8; icon_state = "halo_unggoy"},/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"Xf" = (/obj/structure/interactive/chair{dir = 4; icon_state = "chair"},/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "Xh" = (/obj/structure/interactive/chair/stool,/turf/simulated/floor/colored/ash/dark,/area/halo/exterior/jungle) +"Xj" = (/obj/structure/interactive/vending/medical/medicine,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) +"Xl" = (/mob/living/advanced/npc/halo/marine{dir = 1; icon_state = "directional"},/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"Xw" = (/obj/structure/smooth/table/glass,/obj/item/soapstone/blue,/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/turf/simulated/floor/tile/blue_baby,/area/burgerstation/briefing) +"Xx" = (/obj/marker/map_node,/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"XA" = (/turf/simulated/wall/shuttle,/area/transit/dropship/charlie/station) +"XB" = (/obj/structure/interactive/door/airlock/station/maintenance,/turf/simulated/floor/plating,/area/burgerstation/briefing) +"XH" = (/obj/structure/interactive/misc/halo/decor/vehicles/scorpion,/turf/simulated/floor/plating,/area/burgerstation/briefing) +"XI" = (/obj/marker/map_node,/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) +"Yi" = (/turf/simulated/floor/plating,/area/burgerstation/briefing) +"Yk" = (/obj/decal/hazard{dir = 4},/obj/structure/interactive/lighting/fixture/floor/stronger,/mob/living/advanced/npc/halo/marine{dir = 8; icon_state = "directional"},/turf/simulated/floor/plating,/area/burgerstation/hanger) "Yz" = (/mob/living/advanced/npc/halo/kigyar{dir = 4; icon_state = "halo_kigyar1"},/turf/simulated/floor/cave_dirt,/area/halo/interior) +"YD" = (/obj/structure/interactive/chair{dir = 1; icon_state = "chair"},/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "YE" = (/obj/marker/drop_pod_location,/turf/simulated/floor/colored/sand/oasis,/area/halo/exterior/jungle) +"YI" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) +"YL" = (/obj/structure/interactive/door/airlock/glass,/turf/simulated/floor/tile/command,/area/burgerstation/briefing) "YT" = (/mob/living/advanced/npc/halo/urf{dir = 8; icon_state = "directional"},/turf/simulated/floor/cave_dirt,/area/halo/interior) "YY" = (/obj/marker/map_node,/obj/structure/capture_beacon,/turf/simulated/floor/cave_dirt,/area/halo/exterior/jungle) +"Zh" = (/obj/structure/interactive/misc/mirror/chargen{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"Zj" = (/obj/structure/interactive/misc/mirror/chargen{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tile/dark/single,/area/burgerstation/briefing) +"Zk" = (/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 1},/obj/structure/interactive/lighting/fixture/tube/station/stronger,/turf/simulated/floor/tile/dark/single,/area/burgerstation/hanger) "Zo" = (/obj/structure/capture_beacon,/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) +"Zx" = (/obj/structure/smooth/table/reinforced,/obj/item/clothing/back/storage/backpack/halo/odst,/obj/structure/interactive/shop,/turf/simulated/floor/tile/dark,/area/burgerstation/briefing) "Zz" = (/obj/structure/interactive/barricade/covenant,/obj/effect/fog_of_war,/turf/simulated/floor/carpet/office,/area/halo/exterior/jungle) +"ZC" = (/obj/structure/interactive/status_display/global_display/charlie,/turf/simulated/wall/shuttle,/area/transit/dropship/charlie/station) +"ZH" = (/obj/marker/map_node,/obj/structure/interactive/lighting/fixture/tube/station/stronger{dir = 4},/turf/simulated/floor/tile/dark,/area/burgerstation/hanger) +"ZN" = (/obj/structure/interactive/chair{dir = 4},/turf/simulated/floor/tile/shuttle/purple,/area/transit/dropship/charlie/station) +"ZP" = (/obj/decal/hazard/corner{dir = 8},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/burgerstation/hanger) "ZY" = (/obj/structure/smooth/wall/wood/starting,/turf/simulated/floor/cave_dirt,/area/halo/interior) (1,1,1) = {" +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZiZGQGQGQGQGQGQiZiZPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZXIQJQJQJQJQJQJQJQJXIPEYiYiPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZQJiZRiRiRiRiRiRiiZQJPEYiYiYiYiPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJiZRiRiRiRiRiRiiZQJXBYiYiYiYiYiYiPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJXIQJQJQJQJQJQJQJQJXIPEYiYiYiYiYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZQJQJiZRiRiRiRiRiRiiZQJPEPEPEPEPEYiYiYiPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJQJiZRiRiRiRiRiRiiZQJPEPEPEPEPEPEYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJXIQJQJQJQJQJQJQJQJXIPEPEPEPEPEPEPEYiYiPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJQJiZRiRiRiRiRiRiiZQJPEVCXjItUAUaVCPEYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJQJiZRiRiRiRiRiRiiZQJPEHXMFMFMFMFHXPEYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZGQGQGQGQGQGQGQGQGQGQGQiZiZiZQJQJXIQJQJQJQJQJQJQJQJXIPEMmMFZxHLMFLhPEYiYiYiPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXQjIwIwIwIwFhIwIwIwIwVLPXiZiZiZiZiZiZiZPXPXiZiZiZiZiZPEPsZjQUQUZjPsPEYiYiYiYiPEIbPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAKzXAMEOYSxXAKzXAMwPXiZiZiZPdSuSuPdSuSuPdSuSuPdSuPEPEPEJeJePEPEPEPEXBPEPEPEPEPEPEPEPEPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZXITQXAGHZCRRKcRRZCGHXAMwXIiZiZSuXIQJQJQJQJQJQJQJQJXIPXJeWiQUSMQUQUWiJeQUQUQUQUPETHTHTHPEPEPEPEPEPEPESbSbSbSbSbSbSbSbiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAQbOkHfRtHfOkToXAMwPXiZSuSuQJiZRiRiRiRiRiRiiZQJPXJeQUQUQUHLQUQUJeQUMWQUHLWiQUQUQUWiQUQUHLPEPEPEPEPEPELqLqLqPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZWgTQQzZNOkUFOkZNOkUFQzMwPXQaPXPXQJiZRiRiRiRiRiRiiZQJQRVCPEPEPEPEPEPEPEPEPERPQURzRzRzRzRzRzQUQUQUHLPEPEPESlSlNuSlPQVCPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAZNOkUFOkZNOkUFXAMwUsiZZHPXXIQJQJQJQJQJQJQJQJXIPXPESLTFIjJJVRIjTFHFVCQUQURzRzRzRzRzRzQUQUVCIgPEPEITQUQUYDQUQUITPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJTQXAZNOkUFOkZNOkUFXAMwQJJlPXPXQJiZRiRiRiRiRiRiiZQJPXJeQUQUQUQUQUQUQUQUJeQUHLQUQUQUQUQUQUHLQUScQURjPEQUQUIiIiIiXfNHLqiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZXxYkXAZNOkUFOkZNOkUFXAOfPXiZPXPXQJiZRiRiRiRiRiRiiZQJPXJeQUQUQUQUQUQUQUQUJeQUQURzRzRzRzRzRzQUQUObJyQUYLQUQxKwHxIiIiNHLqiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAZNOkUFOkZNOkUFXAMwXxiZPXPXXIQJQJQJQJQJQJQJQJXIPXPEOxMFXwOxMFLROxQUPEQUQURzRzRzRzRzRzQUQUTrJyQUYLQUORSFHxMvIiNHLqiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJTQQzZNOkUFOkZNOkUFQzMwQJJlPXPXQJiZRiRiRiRiRiRiiZQJQRVCPEPEPEPEPEPEPEPEVCRPHLQUQUQUQUQUQUHLQUTrQURHPEQUQUIiIiIiXfNHLqiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAQbOkUFHfZNOkToXAMwUsiZZHPXQJiZRiRiRiRiRiRiiZQJPXJeQUQUPaHLQUQUJeQUQUQUQURzRzRzRzRzRzQUQUVCIgPEPEMrLCQUIiQULCMrPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZXlTQXAZNOkOkOkOkOkUFXAMwPXQaPXPXXIQJQJQJQJQJQJQJQJXIPXJeIZQUMtQUQUIZJeMWHLQUQURzRzRzRzRzRzQUQUQUHLPEPEPEVESlSlSlVEVCPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXTQXAXAXAHPZCHPXAXAXAMwPXiZSuSuWeSuSuWeSuSuWeSuSuWeSuPEPEPEJeJePEPEPEQUQUQUHLIZQUQUQUIZQUQUHLPEPEPEPEPEPELqLqLqPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZXITQOQOQOQHfPJHfOQOQOQMwXIiZiZiZiZiZiZiZPXPXiZiZiZiZiZPEHXZhQUQUZhHXPEPEXBPEPEPETHTHTHPEPEPEPEPEPEPESbSbSbSbSbSbSbSbiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXZPcScSLcKXKXIeGqWzcScrPXiZiZiZYIXIQJYIQJQJYIQJQJYIXIPEMmMFZxHLMFLhPEPEYiYiPEPEPEPEPEPEPEPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZPXPXPXXxPTcScScSQqXxPXPXPXiZiZQJQJQJiZRiRiRiRiRiRiiZQJPEPsMFMFMFMFPsPEPEYiYiYiYiYiPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZGQGQGQGQGQGQGQGQGQGQGQiZiZiZSvQJQJiZRiRiRiRiRiRiiZQJPEVCXjItUAUaVCPEYiYiYiPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJXIZkQJQJQJQJQJQJZkXIPEPEPEPEPEPEPEYiYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJQJiZRiRiRiRiRiRiiZQJPEPEPEPEPEPEYiYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZSvQJQJiZRiRiRiRiRiRiiZQJPEPEPEPEPEYiYiYiYiPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZQJQJXIZkQJQJQJQJQJQJZkXIPEYiYiYiYiYiYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZQJQJiZRiRiRiRiRiRiiZQJXBYiYiYiYiYiYiPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZKHQJiZRiRiRiRiRiRiiZQJPEYiXHYiYiPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZXIYIQJQJQJQJQJQJYIXIPEPEPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiZiZiZGQGQGQGQGQGQiZiZPEPEPEPEiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU +iUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiUiU acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacmKacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabmImImImImImImImImImImImImImImImImImImImImImImImImImImImImI acacadadadadadadadadadadadadadacacacacacacacacacacacacacacacacmKacacacacacacacacacacacacacacacacacacacacacgjgIgIgjgIgjgIacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabmImImImImImImImImImImImImImImImImImImImImImImImImImImImImI acadmLiXiXiXiXiXiXiXiXiXiXiXmMadacacacacacacacacacacacacacacacmKacacacacacacacacacacacacacacacacacgIgjgIgIgIgjgjgIgjgIgIgjgjgjgjgjgIgIgInhnEnEacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabmImImImImImImImImImImImImImImImImImImImImImImImImImImImImI @@ -1908,27 +2130,27 @@ mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadadiCiDiDiEad mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadaeaeaegOaeaeaeaeaeaeaeaeaeaeaeaeadadiufLafafhWiwiiiNiNiNiNiiiwhWafafafgAadaeaeaeadfLfLfLfLfLfLfLacacacacacacacacacacacacacacacacacacacacacacfLfLfLfLadaeaeaeadadomacacacacacacacacacacacacacacacacab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadiOaeagaeaeaeaeagiPbVaeaeagaeaeaeadiQbWbkafhWhWhWiRhWhWhWhWiRhWhWhWiJafaffifuaeaeadfLfLaffLgCfLfLfLfLacacacacacfLfLgCfLfLacacacacacacacacacacfLfLfLfLadaeaeaeadadfLafafacacacacacacacacacacacacacacab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadaeaeiOaeaeaeaeXhSrbVaeaeaeiSaeaeadadiFfLafFnhWgViTgiFcFdiuiTgVhWFoiJafgAadaeaeaeadfLafaffLfLfLfLNVfLacfLfLfLfLfLfLafafafaffLacacacacacacacacfLgCfLadadaeaeaeadafafafafacacacacacacacacafacacacacacab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadadadadadadadbWbWbWbWadadadadadadadadfLfLafafiUafafafaffLfLfLfLiVafafafafadaeaeaeadfLgKgKgKgKaffLfLfLfLfLfLfLgKgKgKgKgKgKfLfLacacacacacacacacfLfLadadadaeagaeadfLfLafafacacafafafafafacafafacacacacab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadiWiXiXiXiXiXiXiXiXiXiYadbWiuiuiuadadgCfLfLafiZafafafaffLfLfLfLjaafafaffLadaeaeaeaffLfLfLafgKfLfLfLfLfLgCfLfLgKafafafafgKfLfLfLfLacacacacacacfLfLadadadaeaeaeadfLgCfLfLacaffLafafasfLacfLfLafafafacab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabdejbjcjcjcjcjcjcjcjcjcjdadadfLfLjefLfLivfLfLafafafasfLfLfLfLgCfLfLTZfLgCfLadaeaeafdefLgKgKafgKaffLGRfLfLfLfLfLfLafaffLafafaffLfLfLacacacacacacacFiFkadadaeaeaeadadfLfLfLaffLafaffLfLfLfLfLfLafaffLafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjddeivfLjfjfjffLfLfLfLgCafafaffLfLfLfLfLfLfLfLfLfLfLadaeaeaeadafgKgKafafafgCfLfLfLfLfLfLfLfLfLgCafaffLfLfLfLfLfLacacfLfLfLfLfLadadaeaeaeadadadfLfLfLgCfLfLfLfLfLfLfLgCfLfLfLafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLjgjgjfjffLfLfLfLfLfLfLfLfLfLfLfLfLfLfLfLfLfLfLadaeagaeadfLfLfLfLfLaffLfLfLfLfLfLafafGRfLfLfLgKfLfLfLgCfLfLfLfLfLgCfLfLfLadadcBaeaeadjhjijijijijijjjkjkjkjkjkjljmfLfLfLafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLjgjgjgjfjfjfgCfLfLfLfLfLfLfLfLfLfLgCfLfLTZfLfLadaeaeaeadgKafafgCRxfLGRfLfLfLfLgCafafaffLgKgKfLfLfLfLfLfLfLfLfLfLfLfLaffLafdeaebVbVbWjnjojojojoadjpjqjfjfjfjfjqjrfLfLfLfLab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLjsjgjgjgjgjffLfLfLfLfLgCfLfLfLfLfLfLfLfLfLfLafadaeaeaeadgKafafgKfLfLfLfLfLfLfLfLsvafafiJaffLfLfLfLfLfLfLfLfLfLfLfLfLaffLfLadafbVaeadjojtjujvjoadjpjfjfjfjfjfjfjrfLfLfLfLab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLfLjgjgjgjgjffLfLfLfLfLfLfLfLfLfLfLfLfLfLjsfLfLadaeaeaeadfLaffLfLfLfLfLfLNUfLfLafaffCfLafaffLfLfLfLfLfLfLfLgCfLfLfLaffLfLaffCaffuaecejojwjxjujyadjzjfjfjfjfjfjfjrfLfLfLfLab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadadfLfLfLjgjgjfjffLfLfLfLfLfLfLfLYEfLfLfLafafaffLasafaefuadfLfLfLfLfLfLfLfLfLfLfLafafaffLfLfLfLfLfLfLfLfLfLfLfLfLfLfLgigigiafafafaefuadjojtjAjAjoadjpjfjfjfjfjfjfjrfLfLfLfLab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabdejbjcjcjcjcjcjcjcjcjcjddeadfLfLjgjgjgjfjffLfLfLfLfLfLaffLfLfLfLfLafafafafafafaeaeadadadadadadadssadadadafadJDafafafafadadadadadadadadadadddceadafgAafafaeagaeadjojtjAjvjoadjpjfjfjfjfjfjfjrfLaffLfLab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadadadjgjgjgjfjfjffLgCfLfLafaffLfLfLgCfLfLafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeiJafafafaegOaeaeaeaeaeaeaejBaeaeaeguafaeafafaeafaeadjojwjxjCjofijDjfjfjfjfjfjfjrfLafafafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjgjgjgjgjgjfjfjfjsfLfLfLafafafaffLfLfLfLfLfLafafadaeaeaeaeaeaeaefuagaeaeaeaeaeaeagaeafafafaeaeaeagaeaeaeaebVbVaeaeagaeafaeaeaeaeaeaeadjojtjujtjocejpjfjfjfjfjfjfjrfLafafafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjgjgjgjfjffLfLfLfLfLafafafafafafaffLfLfLfLfLfLfLafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegOaeaeaeaebVaejBaeaeaeaeaeaeaecBaeaeadjojojojojocejEjFjfjfjfjfjfjraffLafafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLjgjgjffLfLfLfLfLfLafafafafafafaffLfLfLfLfLfLfLadaeagaeadadadadadadadadadadadadadadadadadadadadadadadadadbWgLadadadadadaddeadiQadcedejGjHjIadceadjpjqjfjfjfjfjqjrfLfLafafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadfLfLjgjfjffLfLfLfLafgCafafafafafaffLfLfLfLgCfLfLadaeaeaeadadadadadadfLfLjsfLfLfLfLfLfLfLfLfLgCfLfLfLfLfLcejJjJjKjLjKjJjJjJjJjJjJjJjJjJjMadadjNjOjOjPjQjRjQjQjSjQjTfLfLafafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjUjVjVjVjVjVjVjVjVjVjWadjgjgjgjfjffLfLfLfLfLfLafafaffLfLiJfLfLfLfLfLfLfLadaeaeaeadfLfLfLfLfLfLgCfLafafaffLfLfLfLfLfLfLfLfLfLjsfLadjJjXjYjZkakbjJkckdjJkekfkgkhjJaddejpjfjfjfjfjfjfjfiTjfjrafafafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadadadadadadadbWbWbWbWadadadadadadadadfLfLafafafafafafaffLfLfLfLiVafafafafadaeaeaeadfLgKgKgKgKaffLfLfLfLfLfLfLgKgKgKgKgKgKfLfLacacacacacacacacfLfLadadadaeagaeadfLfLafafacacafafafafafacafafacacacacab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadiWiXiXiXiXiXiXiXiXiXiYadiWiXiXiXiXiXiXiXiXiXiYafafafaffLfLfLfLjaafafaffLadaeaeaeaffLfLfLafgKfLfLfLfLfLgCfLfLgKafafafafgKfLfLfLfLacacacacacacfLfLadadadaeaeaeadfLgCfLfLacaffLafafasfLacfLfLafafafacab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabdejbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdafasfLfLfLfLgCfLfLTZfLgCfLadaeaeafdefLgKgKafgKaffLGRfLfLfLfLfLfLafaffLafafaffLfLfLacacacacacacacFiFkadadaeaeaeadadfLfLfLaffLafaffLfLfLfLfLfLafaffLafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjddejbjejejejejejejejejejdafaffLfLfLfLfLfLfLfLfLfLfLadaeaeaeadafgKgKafafafgCfLfLfLfLfLfLfLfLfLgCafaffLfLfLfLfLfLacacfLfLfLfLfLadadaeaeaeadadadfLfLfLgCfLfLfLfLfLfLfLgCfLfLfLafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLfLfLfLfLfLfLfLfLfLfLfLfLadaeagaeadfLfLfLfLfLaffLfLfLfLfLfLafafGRfLfLfLgKfLfLfLgCfLfLfLfLfLgCfLfLfLadadcBaeaeadjhjijijijijijjjkjkjkjkjkjljmfLfLfLafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLfLfLfLfLfLfLgCfLfLTZfLfLadaeaeaeadgKafafgCRxfLGRfLfLfLfLgCafafaffLgKgKfLfLfLfLfLfLfLfLfLfLfLfLaffLafdeaebVbVbWjnjojojojoadjpjqjfjfjfjfjqjrfLfLfLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLgCfLfLfLfLfLfLfLfLfLfLafadaeaeaeadgKafafgKfLfLfLfLfLfLfLfLsvafafiJaffLfLfLfLfLfLfLfLfLfLfLfLfLaffLfLadafbVaeadjojtjujvjoadjpjfjfjfjfjfjfjrfLfLfLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLfLfLfLfLfLfLfLfLfLjsfLfLadaeaeaeadfLaffLfLfLfLfLfLNUfLfLafaffCfLafaffLfLfLfLfLfLfLfLgCfLfLfLaffLfLaffCaffuaecejojwjxjujyadjzjfjfjfjfjfjfjrfLfLfLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLfLfLfLfLYEfLfLfLafafaffLasafaefuadfLfLfLfLfLfLfLfLfLfLfLafafaffLfLfLfLfLfLfLfLfLfLfLfLfLfLfLgigigiafafafaefuadjojtjAjAjoadjpjfjfjfjfjfjfjrfLfLfLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabdejbjcjcjcjcjcjcjcjcjcjddejbjejejejejejejejejejdfLfLfLaffLfLfLfLfLafafafafafafaeaeadadadadadadadssadadadafadJDafafafafadadadadadadadadadadddceadafgAafafaeagaeadjojtjAjvjoadjpjfjfjfjfjfjfjrfLaffLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLafaffLfLfLgCfLfLafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeiJafafafaegOaeaeaeaeaeaeaejBaeaeaeguafaeafafaeafaeadjojwjxjCjofijDjfjfjfjfjfjfjrfLafafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdfLafafafaffLfLfLfLfLfLafafadaeaeaeaeaeaeaefuagaeaeaeaeaeaeagaeafafafaeaeaeagaeaeaeaebVbVaeaeagaeafaeaeaeaeaeaeadjojtjujtjocejpjfjfjfjfjfjfjrfLafafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdafafafafafaffLfLfLfLfLfLfLafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegOaeaeaeaebVaejBaeaeaeaeaeaeaecBaeaeadjojojojojocejEjFjfjfjfjfjfjraffLafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdafafafafafaffLfLfLfLfLfLfLadaeagaeadadadadadadadadadadadadadadadadadadadadadadadadadbWgLadadadadadaddeadiQadcedejGjHjIadceadjpjqjfjfjfjfjqjrfLfLafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjbjcjcjcjcjcjcjcjcjcjdadjbjejejejejejejejejejdafafafafafaffLfLfLfLgCfLfLadaeaeaeadadadadadadfLfLjsfLfLfLfLfLfLfLfLfLgCfLfLfLfLfLcejJjJjKjLjKjJjJjJjJjJjJjJjJjJjMadadjNjOjOjPjQjRjQjQjSjQjTfLfLafafab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabadjUjVjVjVjVjVjVjVjVjVjWadjUjVjVjVjVjVjVjVjVjVjWafafaffLfLiJfLfLfLfLfLfLfLadaeaeaeadfLfLfLfLfLfLgCfLafafaffLfLfLfLfLfLfLfLfLfLjsfLadjJjXjYjZkakbjJkckdjJkekfkgkhjJaddejpjfjfjfjfjfjfjfiTjfjrafafafafab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabdeadadadadadadadadadadaddejgjgjfjffLfLfLfLfLfLfLfLafaffLfLfLfLfLfLfLfLfLfLadfuaeaeadfLfLfLfLfLfLfLafafafaffLfLfLfLaffLfLfLfLfLfLfLadjKjZjZkijZjZjyjukjjJkkkfklkkjJadadjpjfjqjfjfjfjfjfjqjfjraffLafafab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabfLcekmkmkZHkkmkmadadfLjgjgjgjfjfjffLfLfLjfjfjffLfLaffLfLfLfLfLfLfLfLfLfLfiadaeaeaeaddefLfLfLfLafafafafaffLfLfLfLfLaffLafaffLfLgCfLadjKjZknknknjZjJjujujJkoklkpkojJadafkqjfjfjfjfjfjfjfjfjfjrfLafafafab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabacadkmkrkrksktkmadkufLjgjgjgjffLgCfLfLjfjfjfjfjffLfLfLfLfLfLfLfLfLadadaddefiaeaeaeadadadadfLfLfLafaffCasafaffLfLfLfLgKgKgKgKafaffLadjJkvknkwknkvjJkxjujJkykfkfkkafadafkqjfjfSwjfjfjfjfjfjfjrfLafaffLab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabacadkzkAkBkCkDkmadfLfLkEjgjgjgjfjsfLjfjfjgjgjgjffLfLfLfLadadadadadadadadadadaeaeaeadadadadfLfLfLafafafafaffLfLfLafafgKafafafgKfLfLadjJjJjJjyjJjJjJjujujJjJjJkfjJaffCafjpjfjfjfjfjfjfjfjfjfjrfLfLfLafab -mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabjgadkzkDkCkFkrkmadkGkHfLfLjgjgjgjfjfjfjfjfjgjgjfjfjffLfLadaeaeaeaeaeaeaeaeaeaeaeaeadkIkJkJkKfLgCfLafafaffLfLfLfLafaffLafafafgKfLfLadjKkLjujujukMjujujukNjujujukOasafadjpjfjfjfjfKBjfjfjfjfjrfLfLfLfLab +mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabjgadkzkDkCkFQKkmadkGkHfLfLjgjgjgjfjfjfjfjfjgjgjfjfjffLfLadaeaeaeaeaeaeaeaeaeaeaeaeadkIkJkJkKfLgCfLafafaffLfLfLfLafaffLafafafgKfLfLadjKkLjujujukMjujujukNjujujukOasafadjpjfjfjfjfKBjfjfjfjfjrfLfLfLfLab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabjgjgkmkPkQkrkRkmadadfLfLfLacjgjgjfjfjfjfjfjgjgjfjfjffLfLadaeaeagaefufuaeaeaeaeagaeadkSkTkUkVfLfLafaffLfLiJgCfLfLfLfLafafgKfLgKafafadjKkWjukjjujujujukjkXkYjujuafjJceafjpjfjfjfjfjfjfjfjfjfjrfLfLfLfLab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabacjgkmkmkmkZkmkmdeadadinacacjgjgjgjfjfjfjgjgjgjfjqjffLadadaefuaeaeaeaeaeaeaeaeaeaelalbkUlcldfLfLfLfLfLfLfLfLfLfLfLfLafafafafgKaffLadjJjJlejJjJjJjJjJjJjJjJjJlfjJjJadafjpjfjfjfjfjfjfjfjfjfjrfLfLfLfLab mImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImImIabacacadadadadadadadjsacacacacjgjgjgjgjgjgjgjgjgjfjffLfLadadfilglglgadadadadadadadadadkSkUkUkVfLfLfLfLfLfLfLfLfLfLfLfLfLafgKgKgKfLgCadjJlhliljjJlklklkjJlllmlnlolpjJlqdejpjfjfjfjfjfjfjfjfjfjrfLfLfLfLab diff --git a/maps/horde/standard_urf.dmm b/maps/horde/standard_urf.dmm index adb59cbc..c1fc3cb6 100644 --- a/maps/horde/standard_urf.dmm +++ b/maps/horde/standard_urf.dmm @@ -224,7 +224,7 @@ "eq" = (/obj/decal/hazard,/turf/simulated/floor/plating,/area/halo/exterior/jungle) "er" = (/obj/decal/hazard,/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/halo/exterior/jungle) "es" = (/obj/decal/hazard{dir = 9; icon_state = "line"},/obj/structure/interactive/lighting/fixture/floor/stronger,/turf/simulated/floor/plating,/area/halo/exterior/jungle) -"et" = (/turf/simulated/floor/plating,/area/transit/dropship/alpha/station) +"et" = (/turf/simulated/floor/plating,/area/transit/dropship/alpha/landing) "eu" = (/obj/marker/map_node,/turf/simulated/floor/carpet,/area/halo/interior) "ev" = (/obj/structure/interactive/chair{dir = 4; icon_state = "chair"},/mob/living/advanced/npc/halo/urf{dir = 4},/turf/simulated/floor/wood/rich,/area/halo/interior/geminus/car_storage) "ew" = (/obj/structure/interactive/chair/wood{dir = 4},/mob/living/advanced/npc/halo/urf{dir = 4},/turf/simulated/floor/wood/rich,/area/halo/interior) diff --git a/rust_g.dll b/rust_g.dll index 4903dcb9..059c79e3 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/sound/voice/spartan/pain/pain1.ogg b/sound/voice/spartan/pain/pain1.ogg new file mode 100644 index 00000000..fb2719ed Binary files /dev/null and b/sound/voice/spartan/pain/pain1.ogg differ diff --git a/sound/voice/spartan/pain/pain10.ogg b/sound/voice/spartan/pain/pain10.ogg new file mode 100644 index 00000000..a71fed2c Binary files /dev/null and b/sound/voice/spartan/pain/pain10.ogg differ diff --git a/sound/voice/spartan/pain/pain2.ogg b/sound/voice/spartan/pain/pain2.ogg new file mode 100644 index 00000000..45c88ccc Binary files /dev/null and b/sound/voice/spartan/pain/pain2.ogg differ diff --git a/sound/voice/spartan/pain/pain3.ogg b/sound/voice/spartan/pain/pain3.ogg new file mode 100644 index 00000000..560ffe23 Binary files /dev/null and b/sound/voice/spartan/pain/pain3.ogg differ diff --git a/sound/voice/spartan/pain/pain4.ogg b/sound/voice/spartan/pain/pain4.ogg new file mode 100644 index 00000000..22fa3d88 Binary files /dev/null and b/sound/voice/spartan/pain/pain4.ogg differ diff --git a/sound/voice/spartan/pain/pain5.ogg b/sound/voice/spartan/pain/pain5.ogg new file mode 100644 index 00000000..ae31fdc7 Binary files /dev/null and b/sound/voice/spartan/pain/pain5.ogg differ diff --git a/sound/voice/spartan/pain/pain6.ogg b/sound/voice/spartan/pain/pain6.ogg new file mode 100644 index 00000000..3613e43a Binary files /dev/null and b/sound/voice/spartan/pain/pain6.ogg differ diff --git a/sound/voice/spartan/pain/pain7.ogg b/sound/voice/spartan/pain/pain7.ogg new file mode 100644 index 00000000..10239080 Binary files /dev/null and b/sound/voice/spartan/pain/pain7.ogg differ diff --git a/sound/voice/spartan/pain/pain8.ogg b/sound/voice/spartan/pain/pain8.ogg new file mode 100644 index 00000000..de8a0021 Binary files /dev/null and b/sound/voice/spartan/pain/pain8.ogg differ diff --git a/sound/voice/spartan/pain/pain9.ogg b/sound/voice/spartan/pain/pain9.ogg new file mode 100644 index 00000000..24e64367 Binary files /dev/null and b/sound/voice/spartan/pain/pain9.ogg differ diff --git a/sound/voice/spartan/scream/death1.ogg b/sound/voice/spartan/scream/death1.ogg new file mode 100644 index 00000000..1944ae01 Binary files /dev/null and b/sound/voice/spartan/scream/death1.ogg differ diff --git a/sound/voice/spartan/scream/death10.ogg b/sound/voice/spartan/scream/death10.ogg new file mode 100644 index 00000000..10915eb3 Binary files /dev/null and b/sound/voice/spartan/scream/death10.ogg differ diff --git a/sound/voice/spartan/scream/death11.ogg b/sound/voice/spartan/scream/death11.ogg new file mode 100644 index 00000000..6b21df0c Binary files /dev/null and b/sound/voice/spartan/scream/death11.ogg differ diff --git a/sound/voice/spartan/scream/death2.ogg b/sound/voice/spartan/scream/death2.ogg new file mode 100644 index 00000000..606cf6e4 Binary files /dev/null and b/sound/voice/spartan/scream/death2.ogg differ diff --git a/sound/voice/spartan/scream/death3.ogg b/sound/voice/spartan/scream/death3.ogg new file mode 100644 index 00000000..5dd80546 Binary files /dev/null and b/sound/voice/spartan/scream/death3.ogg differ diff --git a/sound/voice/spartan/scream/death4.ogg b/sound/voice/spartan/scream/death4.ogg new file mode 100644 index 00000000..87265762 Binary files /dev/null and b/sound/voice/spartan/scream/death4.ogg differ diff --git a/sound/voice/spartan/scream/death5.ogg b/sound/voice/spartan/scream/death5.ogg new file mode 100644 index 00000000..54bfc744 Binary files /dev/null and b/sound/voice/spartan/scream/death5.ogg differ diff --git a/sound/voice/spartan/scream/death6.ogg b/sound/voice/spartan/scream/death6.ogg new file mode 100644 index 00000000..ff60a3ac Binary files /dev/null and b/sound/voice/spartan/scream/death6.ogg differ diff --git a/sound/voice/spartan/scream/death7.ogg b/sound/voice/spartan/scream/death7.ogg new file mode 100644 index 00000000..ed8c4d67 Binary files /dev/null and b/sound/voice/spartan/scream/death7.ogg differ diff --git a/sound/voice/spartan/scream/death8.ogg b/sound/voice/spartan/scream/death8.ogg new file mode 100644 index 00000000..a38deb19 Binary files /dev/null and b/sound/voice/spartan/scream/death8.ogg differ diff --git a/sound/voice/spartan/scream/death9.ogg b/sound/voice/spartan/scream/death9.ogg new file mode 100644 index 00000000..685dff1a Binary files /dev/null and b/sound/voice/spartan/scream/death9.ogg differ diff --git a/text/names/first_spartan.txt b/text/names/first_spartan.txt new file mode 100644 index 00000000..55834dd0 --- /dev/null +++ b/text/names/first_spartan.txt @@ -0,0 +1,725 @@ +Aaden +Aaron +Abel +Abel +Abraham +Adam +Adan +Aden +Adolph +Adrian +Aidan +Aiden +Alan +Alan +Albert +Alberto +Alden +Alec +Alejandro +Alex +Alex +Alexander +Alexis +Alfred +Alfredo +Alger +Ali +Alijah +Allen +Allen +Alvin +Amari +Amir +Amos +Anderson +Andre +Andres +Andrew +Andy +Angel +Angelo +Anthony +Antonio +Apple +Archie +Armando +Arnie +Art +Arthur +Arthur +Arturo +Asher +Ashton +August +Austin +Avery +Axel +Ayden +Baldric +Bartholomew +Beau +Beckett +Benjamin +Bennett +Bill +Blake +Blake +Braden +Bradley +Brady +Braeden +Braiden +Brandon +Braxton +Brayan +Brayden +Brayden +Braydon +Braylon +Brendan +Brendan +Brenden +Brennan +Brett +Brian +Brick +Brock +Brock +Brodie +Brody +Bronte +Bruce +Bruce +Bryan +Bryant +Bryce +Bryce +Brycen +Bryson +Buck +Burt +Butch +Byrne +Byron +Byron +Cade +Caden +Caiden +Caleb +Calvin +Camden +Cameron +Camron +Camryn +Carl +Carl +Carlos +Carson +Carter +Carter +Casey +Cash +Casimir +Cassian +Cayden +Cesar +Chad +Chance +Chandler +Charles +Charles +Charlie +Charlton +Chase +Chip +Chris +Christian +Christopher +Clark +Claudius +Clayton +Clement +Cletus +Cleveland +Cliff +Clinton +Cody +Cohen +Colby +Cole +Colin +Collin +Collin +Colten +Colton +Conner +Connor +Cooper +Corbin +Corey +Cory +Cristian +Cristopher +Crush +Cruz +Curtis +Cy +Dakota +Dallas +Dalton +Damian +Damian +Damien +Damien +Damon +Dane +Daniel +Danny +Danny +Dante +Darcey +Darell +Darin +Darius +Darren +David +Davion +Davis +Dawson +Dayton +Dean +Deandre +Deangelo +Declan +Denholm +Dennis +Derek +Derrick +Desmond +Desmond +Devin +Devin +Devon +Diego +Dillon +Dirk +Dominic +Dominic +Dominick +Donald +Donny +Donovan +Douglas +Drake +Drew +Driscoll +Duke +Duncan +Dustin +Dylan +Easton +Eddie +Edgar +Edgar +Eduardo +Edward +Edwin +Eli +Elias +Elijah +Eliot +Eliott +Elliot +Elliott +Elric +Elwood +Emanuel +Emerson +Emiliano +Emilio +Emmanuel +Emmanuel +Enrique +Eric +Erick +Erik +Ernesto +Esteban +Ethan +Evan +Everett +Ezekiel +Ezra +Fabian +Felix +Fenton +Fernando +Finn +Fitz +Flick +Flint +Flip +Francis +Francisco +Frank +Frank +Frankie +Franklin +Fridge +Fulton +Gabriel +Gael +Gage +Gannon +Garret +Garrett +Gary +Gary +Gavin +George +Gerardo +Giovanni +Goddard +Godwin +Goodwin +Gordon +Grady +Graeme +Graham +Grandpa +Grant +Gratian +Grayson +Gregory +Grendel +Greyson +Griffin +Guillermo +Gunner +Gustavo +Han +Harrison +Harry +Hartley +Harvey +Hayden +Hector +Henderson +Henry +Holden +Holden +Homer +Horatio +Hudson +Huffie +Hugo +Hugo +Hungry +Hunter +Ian +Irvine +Isaac +Isaiah +Isaias +Isiah +Ismael +Israel +Issac +Ivan +Izaiah +Jace +Jack +Jackson +Jacob +Jacob +Jacoby +Jaden +Jadon +Jaiden +Jaime +Jake +Jake +Jakob +Jalen +Jamar +Jamari +Jamarion +James +Jameson +Jamie +Jamison +Janel +Jared +Jason +Jasper +Javier +Javon +Jaxon +Jaxson +Jay +Jayce +Jayden +Jaydon +Jaydon +Jaye +Jaylen +Jayne +Jayson +Jean-Luc +Jeb +Jed +Jeffrey +Jemmy +Jeremiah +Jeremy +Jermaine +Jerrie +Jerry +Jesse +Jesus +Jim +Jimmy +Joachim +Joaquin +Joe +Joel +Joey +Johan +John +John +Johnathan +Johnathan +Johnny +Johnny +Jonah +Jonas +Jonathan +Jonathon +Jonathon +Jordan +Jorge +Jose +Joseph +Josh +Joshua +Josiah +Josiah +Josue +Juan +Judah +Jude +Julian +Julio +Julius +Justice +Justin +Kade +Kaden +Kai +Kaiden +Kale +Kaleb +Kameron +Kane +Karson +Kayden +Keagan +Keaton +Keegan +Keith +Kellen +Kelvin +Kennard +Kenneth +Kevin +Keziah +Khalil +Kingston +Kobe +Kolton +Kristopher +Kyle +Kyler +Lance +Landen +Lando +Landon +Landyn +Lane +Lanny +Larry +Launce +Lawrence +Leland +Leland +Lennox +Lenny +Leo +Leonard +Leonardo +Leonel +Leroy +Levi +Liam +Lief +Lincoln +Linden +Linton +Logan +Lorde +Lorenzo +Loreto +Lou +Louis +Luca +Lucas +Lucas +Luis +Lukas +Luke +Luke +Maddox +Malachi +Malachi +Malcolm +Malik +Manley +Manuel +Marc +Marco +Marcos +Marcus +Mario +Marion +Mark +Marshall +Martin +Marvin +Mason +Mateo +Mathew +Matthew +Maurice +Mauricio +Max +Max +Maximilian +Maximus +Maxwell +Maynard +Mekhi +Melvin +Melvyn +Micah +Michael +Michael +Micheal +Miguel +Mike +Miles +Milo +Milton +Mitchell +Moises +Montague +Monte +Monty +Morgan +Moses +Myles +Nasir +Nat +Nathan +Nathaniel +Nathaniel +Nehemiah +Nelson +Nicholas +Nick +Nickolas +Nicolas +Nikolas +Nikolas +Noah +Noah +Noel +Nolan +Oliver +Omar +Opie +Orlando +Osbert +Osborn +Osborne +Oscar +Osmund +Oswald +Owen +Pablo +Paget +Parker +Patrick +Patrick +Patton +Paul +Paxton +Payton +Pedro +Percival +Persh +Peter +Peyton +Philip +Phillip +Phoenix +Porter +Preston +Quentin +Quinn +Quinton +Rafael +Ramon +Randy +Rastus +Raul +Raymond +Raymond +Rayner +Reece +Reed +Reese +Reid +Reuben +Reynard +Ricardo +Richard +Richard +Ricky +Riley +River +Robert +Roberto +Rocco +Rodger +Rodrigo +Roger +Roger +Roman +Romayne +Romeo +Ronald +Roscoe +Roswell +Rowan +Roy +Royce +Rube +Ruben +Russell +Rusty +Ryan +Ryder +Ryker +Rylan +Sal +Salvador +Sam +Samuel +Santiago +Saul +Sawyer +Sawyer +Scott +Scotty +Sean +Sebastian +Sergio +Seth +Seymour +Shane +Shane +Shaun +Shawn +Shiloh +Silas +Simon +Simon +Skyler +Sloan +Smoke +Solomon +Sorrel +Spencer +Spike +Stephen +Steven +Sybil +Syd +Talon +Tamsin +Tanner +Tate +Taylor +Taylor +Tel +Terrell +Terry +Theodore +Thomas +Tim +Timothy +Timothy +Titus +Todd +Tony +Travis +Trent +Trenton +Trevor +Trey +Trip +Tristan +Tristen +Triston +Troy +Tucker +Ty +Tye +Tyler +Tyson +Uland +Ulric +Uriel +Vaughn +Victor +Vince +Vincent +Vinny +Walker +Walter +Walter +Ward +Warner +Wayne +Wesley +Weston +Whitaker +William +William +Willy +Woodrow +Wyatt +Xander +Xavier +Yahir +Zachariah +Zachary +Zack +Zackary +Zander +Zane +Zane +Zayden +Zeke +Zion \ No newline at end of file diff --git a/text/names/last_spartan.txt b/text/names/last_spartan.txt new file mode 100644 index 00000000..7630300f --- /dev/null +++ b/text/names/last_spartan.txt @@ -0,0 +1,120 @@ +432 +593 +047 +499 +476 +131 +576 +607 +281 +836 +376 +526 +880 +591 +278 +093 +441 +968 +303 +378 +487 +779 +283 +293 +998 +820 +547 +866 +190 +794 +335 +548 +293 +752 +234 +418 +202 +758 +918 +600 +398 +030 +522 +495 +690 +625 +217 +123 +596 +854 +763 +851 +802 +241 +622 +856 +869 +811 +156 +118 +418 +456 +192 +482 +617 +991 +860 +941 +184 +293 +464 +736 +980 +284 +558 +065 +453 +720 +989 +099 +035 +850 +099 +010 +327 +214 +668 +859 +602 +433 +093 +782 +243 +455 +910 +041 +936 +139 +557 +490 +150 +286 +367 +706 +420 +496 +563 +871 +844 +629 +542 +201 +224 +983 +452 +603 +053 +080 +185 +861 \ No newline at end of file