"
+
+ if(sprite)
+ body += " | "
+ else
+ body += ""
+
+ 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 += " | "
+
+ 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 += "
"
+
+ 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
|