"
var/current = 0
@@ -201,6 +209,12 @@
/datum/category_item/player_setup_item/proc/save_preferences(var/savefile/S)
return
+/*
+* Called when the item is asked to apply its per character settings to a new mob.
+*/
+/datum/category_item/player_setup_item/proc/copy_to_mob(var/mob/living/carbon/human/C)
+ return
+
/datum/category_item/player_setup_item/proc/content()
return
diff --git a/code/modules/client/preference_setup/skills/skills.dm b/code/modules/client/preference_setup/skills/skills.dm
index 7255e25bc46..ab5a6c17e10 100644
--- a/code/modules/client/preference_setup/skills/skills.dm
+++ b/code/modules/client/preference_setup/skills/skills.dm
@@ -18,6 +18,11 @@
if(!pref.skills.len) pref.ZeroSkills()
if(pref.used_skillpoints < 0) pref.used_skillpoints = 0
+// Moved from /datum/preferences/proc/copy_to()
+/datum/category_item/player_setup_item/skills/copy_to_mob(var/mob/living/carbon/human/character)
+ character.skills = pref.skills
+ character.used_skillpoints = pref.used_skillpoints
+
/datum/category_item/player_setup_item/skills/content()
. = list()
. += "Select your Skills "
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 665ea5836c1..0bcaff2491b 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -251,118 +251,15 @@ datum/preferences
/datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1)
// Sanitizing rather than saving as someone might still be editing when copy_to occurs.
player_setup.sanitize_setup()
+
+ // This needs to happen before anything else becuase it sets some variables.
character.set_species(species)
+ // Special Case: This references variables owned by two different datums, so do it here.
if(be_random_name)
real_name = random_name(identifying_gender,species)
- if(config.humans_need_surnames)
- var/firstspace = findtext(real_name, " ")
- var/name_length = length(real_name)
- if(!firstspace) //we need a surname
- real_name += " [pick(last_names)]"
- else if(firstspace == name_length)
- real_name += "[pick(last_names)]"
-
- character.real_name = real_name
- character.name = character.real_name
- if(character.dna)
- character.dna.real_name = character.real_name
-
- character.flavor_texts["general"] = flavor_texts["general"]
- character.flavor_texts["head"] = flavor_texts["head"]
- character.flavor_texts["face"] = flavor_texts["face"]
- character.flavor_texts["eyes"] = flavor_texts["eyes"]
- character.flavor_texts["torso"] = flavor_texts["torso"]
- character.flavor_texts["arms"] = flavor_texts["arms"]
- character.flavor_texts["hands"] = flavor_texts["hands"]
- character.flavor_texts["legs"] = flavor_texts["legs"]
- character.flavor_texts["feet"] = flavor_texts["feet"]
-
- character.med_record = med_record
- character.sec_record = sec_record
- character.gen_record = gen_record
- character.exploit_record = exploit_record
-
- character.gender = biological_gender
- character.identifying_gender = identifying_gender
- character.age = age
- character.b_type = b_type
-
- character.r_eyes = r_eyes
- character.g_eyes = g_eyes
- character.b_eyes = b_eyes
-
- character.h_style = h_style
- character.r_hair = r_hair
- character.g_hair = g_hair
- character.b_hair = b_hair
-
- character.f_style = f_style
- character.r_facial = r_facial
- character.g_facial = g_facial
- character.b_facial = b_facial
-
- character.r_skin = r_skin
- character.g_skin = g_skin
- character.b_skin = b_skin
-
- character.s_tone = s_tone
-
- character.h_style = h_style
- character.f_style = f_style
-
- character.home_system = home_system
- character.citizenship = citizenship
- character.personal_faction = faction
- character.religion = religion
-
- character.skills = skills
- character.used_skillpoints = used_skillpoints
-
- // Destroy/cyborgize organs and limbs.
- for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
- var/status = organ_data[name]
- var/obj/item/organ/external/O = character.organs_by_name[name]
- if(O)
- if(status == "amputated")
- O.remove_rejuv()
- else if(status == "cyborg")
- if(rlimb_data[name])
- O.robotize(rlimb_data[name])
- else
- O.robotize()
-
- for(var/name in list(O_HEART,O_EYES,O_BRAIN))
- var/status = organ_data[name]
- if(!status)
- continue
- var/obj/item/organ/I = character.internal_organs_by_name[name]
- if(I)
- if(status == "assisted")
- I.mechassist()
- else if(status == "mechanical")
- I.robotize()
-
- character.all_underwear.Cut()
- character.all_underwear_metadata.Cut()
-
- for(var/underwear_category_name in all_underwear)
- var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name]
- if(underwear_category)
- var/underwear_item_name = all_underwear[underwear_category_name]
- character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name]
- if(all_underwear_metadata[underwear_category_name])
- character.all_underwear_metadata[underwear_category_name] = all_underwear_metadata[underwear_category_name]
- else
- all_underwear -= underwear_category_name
-
- if(backbag > 4 || backbag < 1)
- backbag = 1 //Same as above
- character.backbag = backbag
-
- if(pdachoice > 3 || pdachoice < 1)
- pdachoice = 1
- character.pdachoice = pdachoice
+ // Ask the preferences datums to apply their own settings to the new mob
+ player_setup.copy_to_mob(character)
if(icon_updates)
character.force_update_limbs()
diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm
index e7afa00109a..16f2b785212 100644
--- a/code/modules/events/infestation.dm
+++ b/code/modules/events/infestation.dm
@@ -6,7 +6,7 @@
#define LOC_VAULT 5
#define LOC_CONSTR 6
#define LOC_TECH 7
-#define LOC_TACTICAL 8
+#define LOC_GARDEN 8
#define VERM_MICE 0
#define VERM_LIZARDS 1
@@ -50,9 +50,9 @@
if(LOC_TECH)
spawn_area_type = /area/storage/tech
locstring = "technical storage"
- if(LOC_TACTICAL)
- spawn_area_type = /area/security/tactical
- locstring = "tactical equipment storage"
+ if(LOC_GARDEN)
+ spawn_area_type = /area/hydroponics/garden
+ locstring = "the public garden"
for(var/areapath in typesof(spawn_area_type))
var/area/A = locate(areapath)
@@ -102,7 +102,7 @@
#undef LOC_HYDRO
#undef LOC_VAULT
#undef LOC_TECH
-#undef LOC_TACTICAL
+#undef LOC_GARDEN
#undef VERM_MICE
#undef VERM_LIZARDS
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 8e9155d044e..1c93444aade 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -450,7 +450,7 @@ var/list/mining_overlay_cache = list()
if(prob(50))
M.adjustBruteLoss(5)
else
- flick("flash",M.flash)
+ M.flash_eyes()
if(prob(50))
M.Stun(5)
M.apply_effect(25, IRRADIATE)
diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm
index 4b6598cf1b3..c867e642b40 100644
--- a/code/modules/mob/death.dm
+++ b/code/modules/mob/death.dm
@@ -66,9 +66,6 @@
layer = MOB_LAYER
- if(blind && client)
- blind.layer = 0
-
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
see_in_dark = 8
see_invisible = SEE_INVISIBLE_LEVEL_TWO
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 7fb80529095..15b99923752 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -1,7 +1,7 @@
// All mobs should have custom emote, really..
//m_type == 1 --> visual.
//m_type == 2 --> audible
-/mob/proc/custom_emote(var/m_type=1,var/message = null)
+/mob/proc/custom_emote(var/m_type=1,var/message = null,var/range=world.view)
if(stat || !use_me && usr == src)
src << "You are unable to emote."
return
@@ -23,42 +23,23 @@
if (message)
log_emote("[name]/[key] : [message]")
- //Hearing gasp and such every five seconds is not good emotes were not global for a reason.
+ // Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
- for(var/mob/M in player_list)
- if (!M.client)
- continue //skip monkeys and leavers
- if (istype(M, /mob/new_player))
- continue
- if(findtext(message," snores.")) //Because we have so many sleeping people.
- break
- if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_sight) && !(M in viewers(src,null)))
- M.show_message(message, m_type)
+ var/turf/T = get_turf(src)
+ if(!T) return
+ var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2)
+ var/list/m_viewers = in_range["mobs"]
+ var/list/o_viewers = in_range["objs"]
- if (m_type & 1)
- var/list/see = get_mobs_or_objects_in_view(world.view,src) | viewers(get_turf(src), null)
- for(var/I in see)
- if(isobj(I))
- spawn(0)
- if(I) //It's possible that it could be deleted in the meantime.
- var/obj/O = I
- O.see_emote(src, message, 1)
- else if(ismob(I))
- var/mob/M = I
- M.show_message(message, 1)
-
- else if (m_type & 2)
- var/list/hear = get_mobs_or_objects_in_view(world.view,src)
- for(var/I in hear)
- if(isobj(I))
- spawn(0)
- if(I) //It's possible that it could be deleted in the meantime.
- var/obj/O = I
- O.see_emote(src, message, 2)
- else if(ismob(I))
- var/mob/M = I
- M.show_message(message, 2)
+ for(var/mob/M in m_viewers)
+ spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes.
+ if(M)
+ M.show_message(message, m_type)
+ for(var/obj/O in o_viewers)
+ spawn(0)
+ if(O)
+ O.see_emote(src, message, m_type)
/mob/proc/emote_dead(var/message)
diff --git a/code/modules/mob/living/carbon/alien/alien_damage.dm b/code/modules/mob/living/carbon/alien/alien_damage.dm
index 99c5e52f75d..f2d147641f1 100644
--- a/code/modules/mob/living/carbon/alien/alien_damage.dm
+++ b/code/modules/mob/living/carbon/alien/alien_damage.dm
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/ex_act(severity)
if(!blinded)
- flick("flash", flash)
+ flash_eyes()
var/b_loss = null
var/f_loss = null
diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm
index 9352ada1c53..a7764d3d1dc 100644
--- a/code/modules/mob/living/carbon/alien/life.dm
+++ b/code/modules/mob/living/carbon/alien/life.dm
@@ -124,21 +124,16 @@
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
- if ((blind && stat != 2))
+ if ( stat != 2)
if ((blinded))
- blind.layer = 18
+ overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
else
- blind.layer = 0
- if (disabilities & NEARSIGHTED)
- client.screen += global_hud.vimpaired
- if (eye_blurry)
- client.screen += global_hud.blurry
- if (druggy)
- client.screen += global_hud.druggy
-
- if (stat != 2)
- if (machine)
- if ( machine.check_eye(src) < 0)
+ clear_fullscreen("blind")
+ set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
+ set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
+ set_fullscreen(druggy, "high", /obj/screen/fullscreen/high)
+ if(machine)
+ if(machine.check_eye(src) < 0)
reset_view(null)
else
if(client && !client.adminobs)
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 29ef1a24846..cb889b570f1 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -208,22 +208,15 @@
if (client)
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
- if ((blind && stat != 2))
- if ((blinded))
- blind.layer = 18
- else
- blind.layer = 0
-
- if (disabilities & NEARSIGHTED)
- client.screen += global_hud.vimpaired
-
- if (eye_blurry)
- client.screen += global_hud.blurry
-
- if (druggy)
- client.screen += global_hud.druggy
-
if (stat != 2)
+ if ((blinded))
+ overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
+ else
+ clear_fullscreen("blind")
+ set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
+ set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
+ set_fullscreen(druggy, "high", /obj/screen/fullscreen/high)
+
if (machine)
if (!( machine.check_eye(src) ))
reset_view(null)
@@ -239,17 +232,4 @@
reset_view(null)
else
if(client && !client.adminobs)
- reset_view(null)
-
-/*/mob/living/carbon/brain/emp_act(severity)
- if(!(container && istype(container, /obj/item/device/mmi)))
- return
- else
- switch(severity)
- if(1)
- emp_damage += rand(20,30)
- if(2)
- emp_damage += rand(10,20)
- if(3)
- emp_damage += rand(0,10)
- ..()*/
+ reset_view(null)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 99a4c40ebd7..d6a88f35ffd 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -84,7 +84,7 @@
/mob/living/carbon/human/ex_act(severity)
if(!blinded)
- flick("flash", flash)
+ flash_eyes()
var/shielded = 0
var/b_loss = null
@@ -774,13 +774,6 @@
b_eyes = hex2num(copytext(new_eyes, 6, 8))
update_eyes()
- var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", "[35-s_tone]") as text
-
- if (!new_tone)
- new_tone = 35
- s_tone = max(min(round(text2num(new_tone)), 220), 1)
- s_tone = -s_tone + 35
-
// hair
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
var/list/hairs = list()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 13dbd179c03..80798fa57bb 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -32,7 +32,6 @@
var/temperature_alert = 0
var/in_stasis = 0
var/heartbeat = 0
- var/global/list/overlays_cache = null
/mob/living/carbon/human/Life()
set invisibility = 0
@@ -1012,33 +1011,6 @@
return 1
/mob/living/carbon/human/handle_regular_hud_updates()
- if(!overlays_cache)
- overlays_cache = list()
- overlays_cache.len = 23
- overlays_cache[1] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage1")
- overlays_cache[2] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage2")
- overlays_cache[3] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage3")
- overlays_cache[4] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage4")
- overlays_cache[5] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage5")
- overlays_cache[6] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage6")
- overlays_cache[7] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage7")
- overlays_cache[8] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage8")
- overlays_cache[9] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage9")
- overlays_cache[10] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage10")
- overlays_cache[11] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1")
- overlays_cache[12] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2")
- overlays_cache[13] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3")
- overlays_cache[14] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4")
- overlays_cache[15] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5")
- overlays_cache[16] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6")
- overlays_cache[17] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7")
- overlays_cache[18] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1")
- overlays_cache[19] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2")
- overlays_cache[20] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3")
- overlays_cache[21] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4")
- overlays_cache[22] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5")
- overlays_cache[23] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6")
-
if(hud_updateflag) // update our mob's hud overlays, AKA what others see flaoting above our head
handle_hud_list()
@@ -1051,77 +1023,59 @@
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
client.images.Remove(hud)
- client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science)
+ client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science, global_hud.whitense)
- if(damageoverlay.overlays)
- damageoverlay.overlays = list()
+ if(istype(client.eye,/obj/machinery/camera))
+ var/obj/machinery/camera/cam = client.eye
+ client.screen |= cam.client_huds
- if(stat == UNCONSCIOUS)
+ if(stat == UNCONSCIOUS && health <= 0)
//Critical damage passage overlay
- if(health <= 0)
- var/image/I
- switch(health)
- if(-20 to -10)
- I = overlays_cache[1]
- if(-30 to -20)
- I = overlays_cache[2]
- if(-40 to -30)
- I = overlays_cache[3]
- if(-50 to -40)
- I = overlays_cache[4]
- if(-60 to -50)
- I = overlays_cache[5]
- if(-70 to -60)
- I = overlays_cache[6]
- if(-80 to -70)
- I = overlays_cache[7]
- if(-90 to -80)
- I = overlays_cache[8]
- if(-95 to -90)
- I = overlays_cache[9]
- if(-INFINITY to -95)
- I = overlays_cache[10]
- damageoverlay.overlays += I
+ var/severity = 0
+ switch(health)
+ if(-20 to -10) severity = 1
+ if(-30 to -20) severity = 2
+ if(-40 to -30) severity = 3
+ if(-50 to -40) severity = 4
+ if(-60 to -50) severity = 5
+ if(-70 to -60) severity = 6
+ if(-80 to -70) severity = 7
+ if(-90 to -80) severity = 8
+ if(-95 to -90) severity = 9
+ if(-INFINITY to -95) severity = 10
+ overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
else
+ clear_fullscreen("crit")
//Oxygen damage overlay
if(oxyloss)
- var/image/I
+ var/severity = 0
switch(oxyloss)
- if(10 to 20)
- I = overlays_cache[11]
- if(20 to 25)
- I = overlays_cache[12]
- if(25 to 30)
- I = overlays_cache[13]
- if(30 to 35)
- I = overlays_cache[14]
- if(35 to 40)
- I = overlays_cache[15]
- if(40 to 45)
- I = overlays_cache[16]
- if(45 to INFINITY)
- I = overlays_cache[17]
- damageoverlay.overlays += I
+ if(10 to 20) severity = 1
+ if(20 to 25) severity = 2
+ if(25 to 30) severity = 3
+ if(30 to 35) severity = 4
+ if(35 to 40) severity = 5
+ if(40 to 45) severity = 6
+ if(45 to INFINITY) severity = 7
+ overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
+ else
+ clear_fullscreen("oxy")
//Fire and Brute damage overlay (BSSR)
var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp
damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not.
if(hurtdamage)
- var/image/I
+ var/severity = 0
switch(hurtdamage)
- if(10 to 25)
- I = overlays_cache[18]
- if(25 to 40)
- I = overlays_cache[19]
- if(40 to 55)
- I = overlays_cache[20]
- if(55 to 70)
- I = overlays_cache[21]
- if(70 to 85)
- I = overlays_cache[22]
- if(85 to INFINITY)
- I = overlays_cache[23]
- damageoverlay.overlays += I
+ if(10 to 25) severity = 1
+ if(25 to 40) severity = 2
+ if(40 to 55) severity = 3
+ if(55 to 70) severity = 4
+ if(70 to 85) severity = 5
+ if(85 to INFINITY) severity = 6
+ overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ else
+ clear_fullscreen("brute")
if( stat == DEAD )
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS|SEE_SELF
@@ -1265,20 +1219,20 @@
bodytemp.icon_state = "temp-1"
else
bodytemp.icon_state = "temp0"
- if(blind)
- if(blinded) blind.layer = 18
- else blind.layer = 0
+
+ if(blinded) overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
+ else clear_fullscreens()
if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription
if(glasses) //to every /obj/item
var/obj/item/clothing/glasses/G = glasses
if(!G.prescription)
- client.screen += global_hud.vimpaired
+ set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
else
- client.screen += global_hud.vimpaired
+ set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
- if(eye_blurry) client.screen += global_hud.blurry
- if(druggy) client.screen += global_hud.druggy
+ set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
+ set_fullscreen(druggy, "high", /obj/screen/fullscreen/high)
if(config.welder_vision)
var/found_welder
@@ -1680,4 +1634,4 @@
..()
#undef HUMAN_MAX_OXYLOSS
-#undef HUMAN_CRIT_MAX_OXYLOSS
+#undef HUMAN_CRIT_MAX_OXYLOSS
\ No newline at end of file
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
new file mode 100644
index 00000000000..d6c2bc0405f
--- /dev/null
+++ b/code/modules/mob/living/death.dm
@@ -0,0 +1,3 @@
+/mob/living/death()
+ clear_fullscreens()
+ . = ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9101092edaf..4d2e254d30c 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -454,6 +454,7 @@ default behaviour is:
BITSET(hud_updateflag, LIFE_HUD)
failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath.
+ reload_fullscreen()
return
@@ -660,6 +661,15 @@ default behaviour is:
return 0
return ..()
+//called when the mob receives a bright flash
+/mob/living/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash)
+ if(override_blindness_check || !(disabilities & BLIND))
+ overlay_fullscreen("flash", type)
+ spawn(25)
+ if(src)
+ clear_fullscreen("flash", 25)
+ return 1
+
/mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null, var/ignore_items = 0) // -- TLE -- Merged by Carn
if(stat)
src << "You must be conscious to do this!"
@@ -667,7 +677,6 @@ default behaviour is:
if(lying)
src << "You can't vent crawl while you're stunned!"
return
-
var/special_fail_msg = cannot_use_vents()
if(special_fail_msg)
src << "[special_fail_msg]"
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index b5ddfcedd91..5c6b617a7bd 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -56,18 +56,18 @@
if (aiRestorePowerRoutine==2)
src << "Alert cancelled. Power has been restored without our assistance."
aiRestorePowerRoutine = 0
- src.blind.layer = 0
+ clear_fullscreen("blind")
updateicon()
return
else if (aiRestorePowerRoutine==3)
src << "Alert cancelled. Power has been restored."
aiRestorePowerRoutine = 0
- src.blind.layer = 0
+ clear_fullscreen("blind")
updateicon()
return
else if (APU_power)
aiRestorePowerRoutine = 0
- src.blind.layer = 0
+ clear_fullscreen("blind")
updateicon()
return
else
@@ -79,9 +79,7 @@
//Blind the AI
updateicon()
- src.blind.screen_loc = ui_entire_screen
- if (src.blind.layer!=18)
- src.blind.layer = 18
+ overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
src.sight = src.sight&~SEE_TURFS
src.sight = src.sight&~SEE_MOBS
src.sight = src.sight&~SEE_OBJS
@@ -99,7 +97,7 @@
if (!istype(T, /turf/space))
src << "Alert cancelled. Power has been restored without our assistance."
aiRestorePowerRoutine = 0
- src.blind.layer = 0
+ clear_fullscreen("blind")
return
src << "Fault confirmed: missing external power. Shutting down main control system to save power."
sleep(20)
@@ -129,7 +127,7 @@
if (!istype(T, /turf/space))
src << "Alert cancelled. Power has been restored without our assistance."
aiRestorePowerRoutine = 0
- src.blind.layer = 0 //This, too, is a fix to issue 603
+ clear_fullscreen("blind") //This, too, is a fix to issue 603
return
switch(PRP)
if (1) src << "APC located. Optimizing route to APC to avoid needless power waste."
diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm
index 76625cdc3df..fa06162c311 100644
--- a/code/modules/mob/living/silicon/ai/login.dm
+++ b/code/modules/mob/living/silicon/ai/login.dm
@@ -2,19 +2,6 @@
..()
for(var/obj/effect/rune/rune in rune_list)
client.images += rune.blood_image
- regenerate_icons()
- flash = new /obj/screen()
- flash.icon_state = "blank"
- flash.name = "flash"
- flash.screen_loc = ui_entire_screen
- flash.layer = 17
- blind = new /obj/screen()
- blind.icon_state = "black"
- blind.name = " "
- blind.screen_loc = ui_entire_screen
- blind.layer = 0
- client.screen.Add( blind, flash )
-
if(stat != DEAD)
for(var/obj/machinery/ai_status_display/O in machines) //change status
O.mode = 1
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index a44be642535..26fe14d7d1d 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -275,29 +275,21 @@
// if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]"
// if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]"
- client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
-
- if ((src.blind && src.stat != 2))
- if(src.blinded)
- src.blind.layer = 18
+ if(stat != 2)
+ if(blinded)
+ overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
else
- src.blind.layer = 0
- if (src.disabilities & NEARSIGHTED)
- src.client.screen += global_hud.vimpaired
+ clear_fullscreen("blind")
+ set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
+ set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
+ set_fullscreen(druggy, "high", /obj/screen/fullscreen/high)
- if (src.eye_blurry)
- src.client.screen += global_hud.blurry
-
- if (src.druggy)
- src.client.screen += global_hud.druggy
-
- if (src.stat != 2)
- if (src.machine)
- if (src.machine.check_eye(src) < 0)
- src.reset_view(null)
- else
- if(client && !client.adminobs)
- reset_view(null)
+ if (src.machine)
+ if (src.machine.check_eye(src) < 0)
+ src.reset_view(null)
+ else
+ if(client && !client.adminobs)
+ reset_view(null)
return 1
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 5a13c7bb792..8a8bd0a2748 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -67,7 +67,7 @@
if(2)
src.take_organ_damage(0,10,emp=1)
confused = (min(confused + 2, 30))
- flick("noise", src.flash)
+ flash_eyes(affect_silicon = 1)
src << "*BZZZT*"
src << "Warning: Electromagnetic pulse detected."
..()
@@ -264,7 +264,7 @@
/mob/living/silicon/ex_act(severity)
if(!blinded)
- flick("flash", flash)
+ flash_eyes()
switch(severity)
if(1.0)
@@ -361,3 +361,7 @@
..()
if(cameraFollow)
cameraFollow = null
+
+/mob/living/silicon/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash)
+ if(affect_silicon)
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index c4dcfbd3f16..6269bd4634e 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -5,11 +5,4 @@
destroy_surroundings = 1
a_intent = I_HURT
hostile = 1
-
-
-/mob/living/simple_animal/hostile/Life()
-
- . = ..()
- if(!.)
- walk(src, 0)
- return 0
\ No newline at end of file
+
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 08ff09703f2..e7228e578cb 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -117,6 +117,8 @@
living_mob_list += src
stat = CONSCIOUS
density = 1
+ else
+ walk(src, 0)
return 0
@@ -378,7 +380,7 @@
/mob/living/simple_animal/ex_act(severity)
if(!blinded)
- flick("flash", flash)
+ flash_eyes()
switch (severity)
if (1.0)
adjustBruteLoss(500)
diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm
index e4eac0f439c..a27b0ffc948 100644
--- a/code/modules/mob/living/voice/voice.dm
+++ b/code/modules/mob/living/voice/voice.dm
@@ -42,12 +42,9 @@
// Parameters: None
// Description: Adds a static overlay to the client's screen.
/mob/living/voice/Login()
- var/obj/screen/static_effect = new() //Since what the player sees is essentially a video feed, from a vast distance away, the view isn't going to be perfect.
- static_effect.screen_loc = ui_entire_screen
- static_effect.icon = 'icons/effects/static.dmi'
- static_effect.icon_state = "1 light"
- static_effect.mouse_opacity = 0 //So the static doesn't get in the way of clicking.
- client.screen.Add(static_effect)
+ ..()
+ client.screen |= global_hud.whitense
+ client.screen |= global_hud.darkMask
// Proc: Destroy()
// Parameters: None
@@ -110,7 +107,7 @@
// Proc: say()
// Parameters: 4 (generic say() arguments)
// Description: Adds a speech bubble to the communicator device, then calls ..() to do the real work.
-/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="")
+/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/whispering=0)
//Speech bubbles.
if(comm)
var/speech_bubble_test = say_test(message)
@@ -122,4 +119,8 @@
M << speech_bubble
src << speech_bubble
- ..(message, speaking, verb, alt_name) //mob/living/say() can do the actual talking.
\ No newline at end of file
+ ..(message, speaking, verb, alt_name, whispering) //mob/living/say() can do the actual talking.
+
+/mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view)
+ if(!comm) return
+ ..(m_type,message,comm.video_range)
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 7f6fdd8aabf..e29f6cdffa4 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -44,6 +44,7 @@
else
client.eye = src
client.perspective = MOB_PERSPECTIVE
-
+ reload_fullscreen() // Reload any fullscreen overlays this mob has.
+ add_click_catcher()
//set macro to normal incase it was overriden (like cyborg currently does)
winset(src, null, "mainwindow.macro=macro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5")
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index e59914791ab..081eb39a5c7 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -4,6 +4,7 @@
living_mob_list -= src
unset_machine()
qdel(hud_used)
+ clear_fullscreen()
if(client)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
qdel(spell_master)
@@ -17,8 +18,6 @@
..()
/mob/proc/remove_screen_obj_references()
- flash = null
- blind = null
hands = null
pullin = null
purged = null
@@ -33,7 +32,6 @@
throw_icon = null
nutrition_icon = null
pressure = null
- damageoverlay = null
pain = null
item_use_icon = null
gun_move_icon = null
@@ -360,8 +358,8 @@
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
- if (deathtime < (15 * 600))
- usr << "You must wait 15 minutes to respawn!"
+ if (deathtime < (5 * 600))
+ usr << "You must wait 5 minutes to respawn!"
return
else
usr << "You can respawn now, enjoy your new life!"
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index f814ac2b231..b67e58af3e1 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -10,8 +10,6 @@
//Not in use yet
var/obj/effect/organstructure/organStructure = null
- var/obj/screen/flash = null
- var/obj/screen/blind = null
var/obj/screen/hands = null
var/obj/screen/pullin = null
var/obj/screen/purged = null
@@ -26,7 +24,6 @@
var/obj/screen/throw_icon = null
var/obj/screen/nutrition_icon = null
var/obj/screen/pressure = null
- var/obj/screen/damageoverlay = null
var/obj/screen/pain = null
var/obj/screen/gun/item/item_use_icon = null
var/obj/screen/gun/radio/radio_use_icon = null
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 5271034d2ba..22da202ede3 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -570,4 +570,7 @@ var/list/global/organ_rel_size = list(
"r_hand" = 10,
"l_foot" = 10,
"r_foot" = 10,
-)
\ No newline at end of file
+)
+
+/mob/proc/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash)
+ return
\ No newline at end of file
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index a1b8437b0b7..6d9d3c3bda0 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -511,9 +511,14 @@
/mob/new_player/is_ready()
return ready && ..()
+// Prevents lobby players from seeing say, even with ghostears
/mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
return
+// Prevents lobby players from seeing emotes, even with ghosteyes
+/mob/new_player/show_message(msg, type, alt, alt_type)
+ return
+
/mob/new_player/hear_radio()
return
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index e177649e4ab..a1a31fad7c6 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -1105,7 +1105,6 @@ Note that amputating the affected organ does in fact remove the infection from t
W.loc = owner
/obj/item/organ/external/removed(var/mob/living/user, var/ignore_children = 0)
-
if(!owner)
return
var/is_robotic = robotic >= ORGAN_ROBOT
@@ -1161,6 +1160,8 @@ Note that amputating the affected organ does in fact remove the infection from t
qdel(spark_system)
qdel(src)
+ victim.update_body()
+
/obj/item/organ/external/proc/disfigure(var/type = "brute")
if (disfigured)
return
@@ -1246,216 +1247,3 @@ Note that amputating the affected organ does in fact remove the infection from t
if(6 to INFINITY)
flavor_text += "a ton of [wound]\s"
return english_list(flavor_text)
-
-/****************************************************
- ORGAN DEFINES
-****************************************************/
-
-/obj/item/organ/external/chest
- name = "upper body"
- organ_tag = BP_TORSO
- icon_name = "torso"
- max_damage = 100
- min_broken_damage = 35
- w_class = 5
- body_part = UPPER_TORSO
- vital = 1
- amputation_point = "spine"
- joint = "neck"
- dislocated = -1
- gendered_icon = 1
- cannot_amputate = 1
- parent_organ = null
- encased = "ribcage"
- organ_rel_size = 70
- base_miss_chance = 10
-
-/obj/item/organ/external/chest/robotize()
- if(..())
- // Give them a new cell.
- owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1)
-
-/obj/item/organ/external/groin
- name = "lower body"
- organ_tag = BP_GROIN
- icon_name = "groin"
- max_damage = 100
- min_broken_damage = 35
- w_class = 5
- body_part = LOWER_TORSO
- vital = 1
- parent_organ = BP_TORSO
- amputation_point = "lumbar"
- joint = "hip"
- dislocated = -1
- gendered_icon = 1
- organ_rel_size = 30
-
-/obj/item/organ/external/arm
- organ_tag = "l_arm"
- name = "left arm"
- icon_name = "l_arm"
- max_damage = 50
- min_broken_damage = 30
- w_class = 3
- body_part = ARM_LEFT
- parent_organ = BP_TORSO
- joint = "left elbow"
- amputation_point = "left shoulder"
- can_grasp = 1
-
-/obj/item/organ/external/arm/right
- organ_tag = "r_arm"
- name = "right arm"
- icon_name = "r_arm"
- body_part = ARM_RIGHT
- joint = "right elbow"
- amputation_point = "right shoulder"
-
-/obj/item/organ/external/leg
- organ_tag = "l_leg"
- name = "left leg"
- icon_name = "l_leg"
- max_damage = 50
- min_broken_damage = 30
- w_class = 3
- body_part = LEG_LEFT
- icon_position = LEFT
- parent_organ = BP_GROIN
- joint = "left knee"
- amputation_point = "left hip"
- can_stand = 1
-
-/obj/item/organ/external/leg/right
- organ_tag = "r_leg"
- name = "right leg"
- icon_name = "r_leg"
- body_part = LEG_RIGHT
- icon_position = RIGHT
- joint = "right knee"
- amputation_point = "right hip"
-
-/obj/item/organ/external/foot
- organ_tag = "l_foot"
- name = "left foot"
- icon_name = "l_foot"
- min_broken_damage = 15
- w_class = 2
- body_part = FOOT_LEFT
- icon_position = LEFT
- parent_organ = "l_leg"
- joint = "left ankle"
- amputation_point = "left ankle"
- can_stand = 1
- organ_rel_size = 10
- base_miss_chance = 50
-
-/obj/item/organ/external/foot/removed()
- if(owner) owner.u_equip(owner.shoes)
- ..()
-
-/obj/item/organ/external/foot/right
- organ_tag = "r_foot"
- name = "right foot"
- icon_name = "r_foot"
- body_part = FOOT_RIGHT
- icon_position = RIGHT
- parent_organ = "r_leg"
- joint = "right ankle"
- amputation_point = "right ankle"
-
-/obj/item/organ/external/hand
- organ_tag = "l_hand"
- name = "left hand"
- icon_name = "l_hand"
- min_broken_damage = 15
- w_class = 2
- body_part = HAND_LEFT
- parent_organ = "l_arm"
- joint = "left wrist"
- amputation_point = "left wrist"
- can_grasp = 1
- organ_rel_size = 10
- base_miss_chance = 50
-
-/obj/item/organ/external/hand/removed()
- owner.u_equip(owner.gloves)
- ..()
-
-/obj/item/organ/external/hand/right
- organ_tag = "r_hand"
- name = "right hand"
- icon_name = "r_hand"
- body_part = HAND_RIGHT
- parent_organ = "r_arm"
- joint = "right wrist"
- amputation_point = "right wrist"
-
-/obj/item/organ/external/head
- organ_tag = BP_HEAD
- icon_name = "head"
- name = "head"
- max_damage = 75
- min_broken_damage = 35
- w_class = 3
- body_part = HEAD
- vital = 1
- parent_organ = BP_TORSO
- joint = "jaw"
- amputation_point = "neck"
- gendered_icon = 1
- encased = "skull"
- base_miss_chance = 40
-
- var/eye_icon = "eyes_s"
-
-// These organs are important for robotizing at chargen.
-/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs)
- return ..(company, skip_prosthetics, 1)
-
-/obj/item/organ/external/head/removed()
- if(owner)
- name = "[owner.real_name]'s head"
- owner.u_equip(owner.glasses)
- owner.u_equip(owner.head)
- owner.u_equip(owner.l_ear)
- owner.u_equip(owner.r_ear)
- owner.u_equip(owner.wear_mask)
- spawn(1)
- owner.update_hair()
- ..()
-
-/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
- ..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)
- if (!disfigured)
- if (brute_dam > 40)
- if (prob(50))
- disfigure("brute")
- if (burn_dam > 40)
- disfigure("burn")
-
-/obj/item/organ/external/head/skrell
- eye_icon = "skrell_eyes_s"
-
-/obj/item/organ/external/head/seromi
- eye_icon = "eyes_seromi"
-
-/obj/item/organ/external/head/no_eyes
- eye_icon = "blank_eyes"
-
-/obj/item/organ/external/head/no_eyes/diona
- max_damage = 50
- min_broken_damage = 25
- cannot_break = 1
- amputation_point = "branch"
- joint = "structural ligament"
- dislocated = -1
- vital = 0
-
-/obj/item/organ/external/head/no_eyes/diona/removed()
- var/mob/living/carbon/human/H = owner
- ..()
- if(!istype(H) || !H.organs || !H.organs.len)
- H.death()
- if(prob(50) && spawn_diona_nymph(get_turf(src)))
- qdel(src)
\ No newline at end of file
diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm
index 98cce7efd39..035a0692c39 100644
--- a/code/modules/organs/organ_icon.dm
+++ b/code/modules/organs/organ_icon.dm
@@ -43,10 +43,6 @@ var/global/list/limb_icon_cache = list()
var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name[O_EYES]
if(eyes) eyes.update_colour()
-/obj/item/organ/external/head/removed()
- get_icon()
- ..()
-
/obj/item/organ/external/head/get_icon()
..()
diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm
index 344ba2f05a0..ab5c4367585 100644
--- a/code/modules/organs/subtypes/diona.dm
+++ b/code/modules/organs/subtypes/diona.dm
@@ -198,3 +198,12 @@
/obj/item/organ/internal/diona/node/removed()
return
+
+/obj/item/organ/external/head/no_eyes/diona
+ max_damage = 50
+ min_broken_damage = 25
+ cannot_break = 1
+ amputation_point = "branch"
+ joint = "structural ligament"
+ dislocated = -1
+ vital = 0
\ No newline at end of file
diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm
index ffc337824de..36fc7ba6776 100644
--- a/code/modules/organs/subtypes/standard.dm
+++ b/code/modules/organs/subtypes/standard.dm
@@ -18,6 +18,13 @@
cannot_amputate = 1
parent_organ = null
encased = "ribcage"
+ organ_rel_size = 70
+ base_miss_chance = 10
+
+/obj/item/organ/external/chest/robotize()
+ if(..())
+ // Give them a new cell.
+ owner.internal_organs_by_name["cell"] = new /obj/item/organ/internal/cell(owner,1)
/obj/item/organ/external/groin
name = "lower body"
@@ -33,6 +40,7 @@
joint = "hip"
dislocated = -1
gendered_icon = 1
+ organ_rel_size = 30
/obj/item/organ/external/arm
organ_tag = "l_arm"
@@ -93,7 +101,8 @@
can_stand = 1
/obj/item/organ/external/foot/removed()
- if(owner) owner.u_equip(owner.shoes)
+ if(owner)
+ owner.drop_from_inventory(owner.shoes)
..()
/obj/item/organ/external/foot/right
@@ -118,9 +127,12 @@
joint = "left wrist"
amputation_point = "left wrist"
can_grasp = 1
+ organ_rel_size = 10
+ base_miss_chance = 50
/obj/item/organ/external/hand/removed()
- owner.u_equip(owner.gloves)
+ if(owner)
+ owner.drop_from_inventory(owner.gloves)
..()
/obj/item/organ/external/hand/right
@@ -147,18 +159,24 @@
gendered_icon = 1
cannot_gib = 1
encased = "skull"
+ base_miss_chance = 40
var/can_intake_reagents = 1
+ var/eye_icon = "eyes_s"
+
+/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs)
+ return ..(company, skip_prosthetics, 1)
/obj/item/organ/external/head/removed()
if(owner)
name = "[owner.real_name]'s head"
- owner.u_equip(owner.glasses)
- owner.u_equip(owner.head)
- owner.u_equip(owner.l_ear)
- owner.u_equip(owner.r_ear)
- owner.u_equip(owner.wear_mask)
+ owner.drop_from_inventory(owner.glasses)
+ owner.drop_from_inventory(owner.head)
+ owner.drop_from_inventory(owner.l_ear)
+ owner.drop_from_inventory(owner.r_ear)
+ owner.drop_from_inventory(owner.wear_mask)
spawn(1)
owner.update_hair()
+ get_icon()
..()
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
@@ -169,3 +187,12 @@
disfigure("brute")
if (burn_dam > 40)
disfigure("burn")
+
+/obj/item/organ/external/head/skrell
+ eye_icon = "skrell_eyes_s"
+
+/obj/item/organ/external/head/seromi
+ eye_icon = "eyes_seromi"
+
+/obj/item/organ/external/head/no_eyes
+ eye_icon = "blank_eyes"
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index b99833670d5..724ccbdd27b 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -158,7 +158,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
return 0 //You can't send faxes to "Unknown"
flick("faxreceive", src)
- playsound(loc, "sound/items/polaroid1.ogg", 50, 1)
+ playsound(loc, "sound/effects/printer.ogg", 50, 1)
// give the sprite some time to flick
sleep(20)
@@ -216,3 +216,4 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
+ C << 'sound/effects/printer.ogg'
\ No newline at end of file
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index e4bbbec5f6b..a423e4ced4a 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -606,7 +606,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
/obj/item/stack/cable_coil/transfer_to(obj/item/stack/cable_coil/S)
if(!istype(S))
- world << 1
return
..()
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 9caf66af4b7..15471da2a2d 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -124,6 +124,13 @@
magazine_type = /obj/item/ammo_magazine/a50
allowed_magazines = list(/obj/item/ammo_magazine/a50)
+/obj/item/weapon/gun/projectile/deagle/update_icon()
+ ..()
+ if(ammo_magazine)
+ icon_state = "[initial(icon_state)]"
+ else
+ icon_state = "[initial(icon_state)]-e"
+
/obj/item/weapon/gun/projectile/deagle/gold
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE rounds."
icon_state = "deagleg"
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index fef93692ec1..8bbd31aed04 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -42,7 +42,7 @@
damage *= 0.7 //squishy mobs absorb KE
return 1
- var/chance = 0
+ var/chance = damage
if(istype(A, /turf/simulated/wall))
var/turf/simulated/wall/W = A
chance = round(damage/W.material.integrity*180)
@@ -52,8 +52,6 @@
if(D.glass) chance *= 2
else if(istype(A, /obj/structure/girder))
chance = 100
- else if(istype(A, /obj/machinery) || istype(A, /obj/structure))
- chance = damage
if(prob(chance))
if(A.opacity)
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 66155da7ea4..a670ff47e87 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -23,7 +23,7 @@
//blind adjacent people
for (var/mob/living/carbon/M in viewers(T, flash_range))
if(M.eyecheck() < 1)
- flick("e_flash", M.flash)
+ M.flash_eyes()
//snap pop
playsound(src, 'sound/effects/snap.ogg', 50, 1)
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index b58f1384da7..5c4dc8c169f 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -349,7 +349,7 @@
return
if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
- istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
+ istype(O,/obj/item/weapon/reagent_containers/food/drinks/glass2) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker))
if (beaker)
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index e7317b32e88..64cbd4a32c0 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -26,17 +26,19 @@
var/overdose = 0
var/scannable = 0 // Shows up on health analyzers.
var/affects_dead = 0
- var/glass_icon_state = null
- var/glass_name = null
- var/glass_desc = null
- var/glass_center_of_mass = null
var/cup_icon_state = null
var/cup_name = null
var/cup_desc = null
var/cup_center_of_mass = null
+
var/color = "#000000"
var/color_weight = 1
+ var/glass_icon = DRINK_ICON_DEFAULT
+ var/glass_name = "something"
+ var/glass_desc = "It's a glass of... what, exactly?"
+ var/list/glass_special = null // null equivalent to list()
+
/datum/reagent/proc/remove_self(var/amount) // Shortcut
holder.remove_reagent(id, amount)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
index 20225508c65..842814bca26 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
@@ -6,8 +6,7 @@
metabolism = REM * 5
color = "#C80000"
- glass_icon_state = "glass_red"
- glass_name = "glass of tomato juice"
+ glass_name = "tomato juice"
glass_desc = "Are you sure this is tomato juice?"
/datum/reagent/blood/initialize_data(var/newdata)
@@ -91,8 +90,7 @@
color = "#0064C877"
metabolism = REM * 10
- glass_icon_state = "glass_clear"
- glass_name = "glass of water"
+ glass_name = "water"
glass_desc = "The father of all refreshments."
/datum/reagent/water/touch_turf(var/turf/simulated/T)
@@ -154,8 +152,7 @@
reagent_state = LIQUID
color = "#660000"
- glass_icon_state = "dr_gibb_glass"
- glass_name = "glass of welder fuel"
+ glass_name = "welder fuel"
glass_desc = "Unless you are an industrial tool, this is probably not safe for consumption."
/datum/reagent/fuel/touch_turf(var/turf/T)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
index 4c3e461a270..89837746c38 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
@@ -66,8 +66,7 @@
var/targ_temp = 310
var/halluci = 0
- glass_icon_state = "glass_clear"
- glass_name = "glass of ethanol"
+ glass_name = "ethanol"
glass_desc = "A well-known alcohol with a variety of applications."
/datum/reagent/ethanol/touch_mob(var/mob/living/L, var/amount)
@@ -368,9 +367,10 @@
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
color = "#FFFFFF"
- glass_icon_state = "iceglass"
- glass_name = "glass of sugar"
+
+ glass_name = "sugar"
glass_desc = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
+ glass_icon = DRINK_ICON_NOISY
/datum/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.nutrition += removed * 3
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 469c34a1c19..55a50bc925e 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -383,8 +383,7 @@
description = "The raw essence of a banana."
color = "#C3AF00"
- glass_icon_state = "banana"
- glass_name = "glass of banana juice"
+ glass_name = "banana juice"
glass_desc = "The raw essence of a banana. HONK!"
/datum/reagent/drink/juice/berry
@@ -393,8 +392,7 @@
description = "A delicious blend of several different kinds of berries."
color = "#990066"
- glass_icon_state = "berryjuice"
- glass_name = "glass of berry juice"
+ glass_name = "berry juice"
glass_desc = "Berry juice. Or maybe it's jam. Who cares?"
/datum/reagent/drink/juice/carrot
@@ -403,8 +401,7 @@
description = "It is just like a carrot but without crunching."
color = "#FF8C00" // rgb: 255, 140, 0
- glass_icon_state = "carrotjuice"
- glass_name = "glass of carrot juice"
+ glass_name = "carrot juice"
glass_desc = "It is just like a carrot but without crunching."
/datum/reagent/drink/juice/carrot/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -417,8 +414,7 @@
description = "It's grrrrrape!"
color = "#863333"
- glass_icon_state = "grapejuice"
- glass_name = "glass of grape juice"
+ glass_name = "grape juice"
glass_desc = "It's grrrrrape!"
/datum/reagent/juice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -448,8 +444,7 @@
description = "This juice is VERY sour."
color = "#AFAF00"
- glass_icon_state = "lemonjuice"
- glass_name = "glass of lemon juice"
+ glass_name = "lemon juice"
glass_desc = "Sour..."
/datum/reagent/drink/juice/lime
@@ -458,8 +453,7 @@
description = "The sweet-sour juice of limes."
color = "#365E30"
- glass_icon_state = "glass_green"
- glass_name = "glass of lime juice"
+ glass_name = "lime juice"
glass_desc = "A glass of sweet-sour lime juice"
/datum/reagent/drink/juice/lime/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -474,8 +468,7 @@
description = "Both delicious AND rich in Vitamin C, what more do you need?"
color = "#E78108"
- glass_icon_state = "glass_orange"
- glass_name = "glass of orange juice"
+ glass_name = "orange juice"
glass_desc = "Vitamins! Yay!"
/datum/reagent/drink/orangejuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -491,8 +484,7 @@
color = "#863353"
strength = 5
- glass_icon_state = "poisonberryjuice"
- glass_name = "glass of poison berry juice"
+ glass_name = "poison berry juice"
glass_desc = "A glass of deadly juice."
/datum/reagent/drink/juice/potato
@@ -502,8 +494,7 @@
nutrition = 2
color = "#302000"
- glass_icon_state = "glass_brown"
- glass_name = "glass of potato juice"
+ glass_name = "potato juice"
glass_desc = "Juice from a potato. Bleh."
/datum/reagent/drink/juice/tomato
@@ -512,8 +503,7 @@
description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?"
color = "#731008"
- glass_icon_state = "glass_red"
- glass_name = "glass of tomato juice"
+ glass_name = "tomato juice"
glass_desc = "Are you sure this is tomato juice?"
/datum/reagent/drink/juice/tomato/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -528,8 +518,7 @@
description = "Delicious juice made from watermelon."
color = "#B83333"
- glass_icon_state = "glass_red"
- glass_name = "glass of watermelon juice"
+ glass_name = "watermelon juice"
glass_desc = "Delicious juice made from watermelon."
// Everything else
@@ -540,8 +529,7 @@
description = "An opaque white liquid produced by the mammary glands of mammals."
color = "#DFDFDF"
- glass_icon_state = "glass_white"
- glass_name = "glass of milk"
+ glass_name = "milk"
glass_desc = "White and nutritious goodness!"
cup_icon_state = "cup_cream"
@@ -554,14 +542,14 @@
description = "A delicious mixture of perfectly healthy mix and terrible chocolate."
color = "#74533b"
- glass_icon_state = "glass_brown"
- glass_name = "glass of chocolate milk"
- glass_desc = "Delciously fattening!"
-
cup_icon_state = "cup_brown"
cup_name = "cup of chocolate milk"
cup_desc = "Deliciously fattening!"
+ glass_name = "chocolate milk"
+ glass_desc = "Deliciously fattening!"
+
+
/datum/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
@@ -575,8 +563,7 @@
description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?"
color = "#DFD7AF"
- glass_icon_state = "glass_white"
- glass_name = "glass of cream"
+ glass_name = "cream"
glass_desc = "Ewwww..."
cup_icon_state = "cup_cream"
@@ -589,8 +576,7 @@
description = "An opaque white liquid made from soybeans."
color = "#DFDFC7"
- glass_icon_state = "glass_white"
- glass_name = "glass of soy milk"
+ glass_name = "soy milk"
glass_desc = "White and nutritious soy goodness!"
cup_icon_state = "cup_cream"
@@ -607,7 +593,6 @@
adj_sleepy = -3
adj_temp = 20
- glass_icon_state = "bigteacup"
glass_name = "cup of tea"
glass_desc = "Tasty black tea, it has antioxidants, it's good for you!"
@@ -624,10 +609,9 @@
color = "#104038" // rgb: 16, 64, 56
adj_temp = -5
- glass_icon_state = "icedteaglass"
- glass_name = "glass of iced tea"
+ glass_name = "iced tea"
glass_desc = "No relation to a certain rap artist/ actor."
- glass_center_of_mass = list("x"=15, "y"=10)
+ glass_special = list(DRINK_ICE)
/datum/reagent/drink/coffee
name = "Coffee"
@@ -640,14 +624,14 @@
adj_temp = 25
overdose = 45
- glass_icon_state = "hot_coffee"
- glass_name = "mug of coffee"
- glass_desc = "Don't drop it, or you'll send scalding liquid and porcelain shards everywhere."
-
cup_icon_state = "cup_coffee"
cup_name = "cup of coffee"
cup_desc = "Don't drop it, or you'll send scalding liquid and porcelain shards everywhere."
+ glass_name = "cup of coffee"
+ glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
+
+
/datum/reagent/drink/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
@@ -680,21 +664,20 @@
color = "#102838"
adj_temp = -5
- glass_icon_state = "icedcoffeeglass"
- glass_name = "glass of iced coffee"
+ glass_name = "iced coffee"
glass_desc = "A drink to perk you up and refresh you!"
+ glass_special = list(DRINK_ICE)
/datum/reagent/drink/coffee/soy_latte
name = "Soy Latte"
id = "soy_latte"
description = "A nice and tasty beverage while you are reading your hippie books."
- color = "#664300"
+ color = "#C65905"
adj_temp = 5
- glass_icon_state = "soy_latte"
- glass_name = "glass of soy latte"
glass_desc = "A nice and refreshing beverage while you are reading."
- glass_center_of_mass = list("x"=15, "y"=9)
+ glass_name = "soy latte"
+ glass_desc = "A nice and refrshing beverage while you are reading."
cup_icon_state = "cup_latte"
cup_name = "cup of soy latte"
@@ -708,13 +691,11 @@
name = "Cafe Latte"
id = "cafe_latte"
description = "A nice, strong and tasty beverage while you are reading."
- color = "#664300" // rgb: 102, 67, 0
+ color = "#C65905"
adj_temp = 5
- glass_icon_state = "cafe_latte"
- glass_name = "glass of cafe latte"
+ glass_name = "cafe latte"
glass_desc = "A nice, strong and refreshing beverage while you are reading."
- glass_center_of_mass = list("x"=15, "y"=9)
cup_icon_state = "cup_latte"
cup_name = "cup of cafe latte"
@@ -733,8 +714,7 @@
nutrition = 2
adj_temp = 5
- glass_icon_state = "chocolateglass"
- glass_name = "glass of hot chocolate"
+ glass_name = "hot chocolate"
glass_desc = "Made with love! And cocoa beans."
cup_icon_state = "cup_coco"
@@ -750,9 +730,9 @@
adj_drowsy = -3
adj_temp = -5
- glass_icon_state = "glass_clear"
- glass_name = "glass of soda water"
+ glass_name = "soda water"
glass_desc = "Soda water. Why not make a scotch and soda?"
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/grapesoda
name = "Grape Soda"
@@ -761,22 +741,22 @@
color = "#421C52"
adj_drowsy = -3
- glass_icon_state = "gsodaglass"
- glass_name = "glass of grape soda"
+ glass_name = "grape soda"
glass_desc = "Looks like a delicious drink!"
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/tonic
name = "Tonic Water"
id = "tonic"
description = "It tastes strange but at least the quinine keeps the Space Malaria at bay."
- color = "#664300"
+ color = "#619494"
+
adj_dizzy = -5
adj_drowsy = -3
adj_sleepy = -2
adj_temp = -5
- glass_icon_state = "glass_clear"
- glass_name = "glass of tonic water"
+ glass_name = "tonic water"
glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
/datum/reagent/drink/soda/lemonade
@@ -786,9 +766,9 @@
color = "#FFFF00"
adj_temp = -5
- glass_icon_state = "lemonadeglass"
- glass_name = "glass of lemonade"
+ glass_name = "lemonade"
glass_desc = "Oh the nostalgia..."
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/kiraspecial
name = "Kira Special"
@@ -797,10 +777,9 @@
color = "#CCCC99"
adj_temp = -5
- glass_icon_state = "kiraspecial"
- glass_name = "glass of Kira Special"
+ glass_name = "Kira Special"
glass_desc = "Long live the guy who everyone had mistaken for a girl. Baka!"
- glass_center_of_mass = list("x"=16, "y"=12)
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/brownstar
name = "Brown Star"
@@ -809,8 +788,7 @@
color = "#9F3400"
adj_temp = -2
- glass_icon_state = "brownstar"
- glass_name = "glass of Brown Star"
+ glass_name = "Brown Star"
glass_desc = "It's not what it sounds like..."
/datum/reagent/drink/milkshake
@@ -820,10 +798,8 @@
color = "#AEE5E4"
adj_temp = -9
- glass_icon_state = "milkshake"
- glass_name = "glass of milkshake"
+ glass_name = "milkshake"
glass_desc = "Glorious brainfreezing mixture."
- glass_center_of_mass = list("x"=16, "y"=7)
/datum/reagent/milkshake/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -853,10 +829,8 @@
color = "#485000"
adj_temp = -5
- glass_icon_state = "rewriter"
- glass_name = "glass of Rewriter"
+ glass_name = "Rewriter"
glass_desc = "The secret of the sanctuary of the Libarian..."
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/drink/rewriter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -870,10 +844,9 @@
adj_temp = -5
adj_sleepy = -2
- glass_icon_state = "nuka_colaglass"
- glass_name = "glass of Nuka-Cola"
+ glass_name = "Nuka-Cola"
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland"
- glass_center_of_mass = list("x"=16, "y"=6)
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/nuka_cola/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -889,10 +862,8 @@
description = "Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways?"
color = "#FF004F"
- glass_icon_state = "grenadineglass"
- glass_name = "glass of grenadine syrup"
+ glass_name = "grenadine syrup"
glass_desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks."
- glass_center_of_mass = list("x"=17, "y"=6)
/datum/reagent/drink/soda/space_cola
name = "Space Cola"
@@ -903,9 +874,9 @@
adj_drowsy = -3
adj_temp = -5
- glass_icon_state = "glass_brown"
- glass_name = "glass of Space Cola"
+ glass_name = "Space Cola"
glass_desc = "A glass of refreshing Space Cola"
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/spacemountainwind
name = "Mountain Wind"
@@ -916,9 +887,9 @@
adj_sleepy = -1
adj_temp = -5
- glass_icon_state = "Space_mountain_wind_glass"
- glass_name = "glass of Space Mountain Wind"
+ glass_name = "Space Mountain Wind"
glass_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind."
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/dr_gibb
name = "Dr. Gibb"
@@ -928,8 +899,7 @@
adj_drowsy = -6
adj_temp = -5
- glass_icon_state = "dr_gibb_glass"
- glass_name = "glass of Dr. Gibb"
+ glass_name = "Dr. Gibb"
glass_desc = "Dr. Gibb. Not as dangerous as the name might imply."
/datum/reagent/drink/soda/space_up
@@ -939,9 +909,9 @@
color = "#202800"
adj_temp = -8
- glass_icon_state = "space-up_glass"
- glass_name = "glass of Space-up"
+ glass_name = "Space-up"
glass_desc = "Space-up. It helps keep your cool."
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/soda/lemon_lime
name = "Lemon Lime"
@@ -950,9 +920,9 @@
color = "#878F00"
adj_temp = -8
- glass_icon_state = "lemonlime"
- glass_name = "glass of lemon lime soda"
+ glass_name = "lemon lime soda"
glass_desc = "A tangy substance made of 0.5% natural citrus!"
+ glass_special = list(DRINK_FIZZ)
/datum/reagent/drink/doctor_delight
name = "The Doctor's Delight"
@@ -962,10 +932,8 @@
color = "#FF8CFF"
nutrition = 1
- glass_icon_state = "doctorsdelightglass"
- glass_name = "glass of The Doctor's Delight"
+ glass_name = "The Doctor's Delight"
glass_desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/drink/doctor_delight/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1018,17 +986,16 @@
color = "#619494"
adj_temp = -5
- glass_icon_state = "iceglass"
- glass_name = "glass of ice"
+ glass_name = "ice"
glass_desc = "Generally, you're supposed to put something else in there too..."
+ glass_icon = DRINK_ICON_NOISY
/datum/reagent/drink/nothing
name = "Nothing"
id = "nothing"
description = "Absolutely nothing."
- glass_icon_state = "nothing"
- glass_name = "glass of nothing"
+ glass_name = "nothing"
glass_desc = "Absolutely nothing."
/* Alcohol */
@@ -1042,35 +1009,29 @@
color = "#33EE00"
strength = 12
- glass_icon_state = "absintheglass"
- glass_name = "glass of absinthe"
+ glass_name = "absinthe"
glass_desc = "Wormwood, anise, oh my."
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/ale
name = "Ale"
id = "ale"
description = "A dark alchoholic beverage made by malted barley and yeast."
- color = "#664300"
+ color = "#4C3100"
strength = 50
- glass_icon_state = "aleglass"
- glass_name = "glass of ale"
+ glass_name = "ale"
glass_desc = "A freezing pint of delicious ale"
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/beer
name = "Beer"
id = "beer"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
- color = "#664300"
+ color = "#FFD300"
strength = 50
nutriment_factor = 1
- glass_icon_state = "beerglass"
- glass_name = "glass of beer"
+ glass_name = "beer"
glass_desc = "A freezing pint of beer"
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/beer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1085,10 +1046,8 @@
color = "#0000CD"
strength = 15
- glass_icon_state = "curacaoglass"
- glass_name = "glass of blue curacao"
+ glass_name = "blue curacao"
glass_desc = "Exotically blue, fruity drink, distilled from oranges."
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/cognac
name = "Cognac"
@@ -1097,22 +1056,18 @@
color = "#AB3C05"
strength = 15
- glass_icon_state = "cognacglass"
- glass_name = "glass of cognac"
+ glass_name = "cognac"
glass_desc = "Damn, you feel like some kind of French aristocrat just by holding this."
- glass_center_of_mass = list("x"=16, "y"=6)
/datum/reagent/ethanol/deadrum
name = "Deadrum"
id = "deadrum"
description = "Popular with the sailors. Not very popular with everyone else."
- color = "#664300"
+ color = "#ECB633"
strength = 50
- glass_icon_state = "rumglass"
- glass_name = "glass of rum"
+ glass_name = "rum"
glass_desc = "Now you want to Pray for a pirate suit, don't you?"
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/deadrum/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1124,13 +1079,11 @@
name = "Gin"
id = "gin"
description = "It's gin. In space. I say, good sir."
- color = "#664300"
+ color = "#0064C6"
strength = 50
- glass_icon_state = "ginvodkaglass"
- glass_name = "glass of gin"
+ glass_name = "gin"
glass_desc = "A crystal clear glass of Griffeater gin."
- glass_center_of_mass = list("x"=16, "y"=12)
//Base type for alchoholic drinks containing coffee
/datum/reagent/ethanol/coffee
@@ -1168,13 +1121,11 @@
name = "Kahlua"
id = "kahlua"
description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!"
- color = "#664300"
+ color = "#4C3100"
strength = 15
- glass_icon_state = "kahluaglass"
- glass_name = "glass of RR coffee liquor"
+ glass_name = "RR coffee liquor"
glass_desc = "DAMN, THIS THING LOOKS ROBUST"
- glass_center_of_mass = list("x"=15, "y"=7)
/datum/reagent/ethanol/melonliquor
name = "Melon Liquor"
@@ -1183,34 +1134,28 @@
color = "#138808" // rgb: 19, 136, 8
strength = 50
- glass_icon_state = "emeraldglass"
- glass_name = "glass of melon liquor"
+ glass_name = "melon liquor"
glass_desc = "A relatively sweet and fruity 46 proof liquor."
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/rum
name = "Rum"
id = "rum"
description = "Yohoho and all that."
- color = "#664300"
+ color = "#ECB633"
strength = 15
- glass_icon_state = "rumglass"
- glass_name = "glass of rum"
+ glass_name = "rum"
glass_desc = "Now you want to Pray for a pirate suit, don't you?"
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/sake
name = "Sake"
id = "sake"
description = "Anime's favorite drink."
- color = "#664300"
+ color = "#DDDDDD"
strength = 25
- glass_icon_state = "ginvodkaglass"
- glass_name = "glass of sake"
+ glass_name = "sake"
glass_desc = "A glass of sake."
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/tequila
name = "Tequila"
@@ -1219,10 +1164,8 @@
color = "#FFFF91"
strength = 25
- glass_icon_state = "tequillaglass"
- glass_name = "glass of Tequila"
+ glass_name = "Tequilla"
glass_desc = "Now all that's missing is the weird colored shades!"
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/thirteenloko
name = "Thirteen Loko"
@@ -1232,8 +1175,7 @@
strength = 25
nutriment_factor = 1
- glass_icon_state = "thirteen_loko_glass"
- glass_name = "glass of Thirteen Loko"
+ glass_name = "Thirteen Loko"
glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass."
/datum/reagent/ethanol/thirteenloko/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -1252,10 +1194,8 @@
color = "#91FF91" // rgb: 145, 255, 145
strength = 15
- glass_icon_state = "vermouthglass"
- glass_name = "glass of vermouth"
+ glass_name = "vermouth"
glass_desc = "You wonder why you're even drinking this straight."
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/vodka
name = "Vodka"
@@ -1264,10 +1204,8 @@
color = "#0064C8" // rgb: 0, 100, 200
strength = 15
- glass_icon_state = "ginvodkaglass"
- glass_name = "glass of vodka"
+ glass_name = "vodka"
glass_desc = "The glass contain wodka. Xynta."
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/vodka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1277,13 +1215,11 @@
name = "Whiskey"
id = "whiskey"
description = "A superb and well-aged single-malt whiskey. Damn."
- color = "#664300"
+ color = "#4C3100"
strength = 25
- glass_icon_state = "whiskeyglass"
- glass_name = "glass of whiskey"
+ glass_name = "whiskey"
glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy."
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/wine
name = "Wine"
@@ -1292,10 +1228,8 @@
color = "#7E4043" // rgb: 126, 64, 67
strength = 15
- glass_icon_state = "wineglass"
- glass_name = "glass of wine"
+ glass_name = "wine"
glass_desc = "A very classy looking drink."
- glass_center_of_mass = list("x"=15, "y"=7)
// Cocktails
@@ -1307,73 +1241,61 @@
color = "#365000"
strength = 30
- glass_icon_state = "acidspitglass"
- glass_name = "glass of Acid Spit"
+ glass_name = "Acid Spit"
glass_desc = "A drink from the company archives. Made from live aliens."
- glass_center_of_mass = list("x"=16, "y"=7)
/datum/reagent/ethanol/alliescocktail
name = "Allies Cocktail"
id = "alliescocktail"
description = "A drink made from your allies, not as sweet as when made from your enemies."
- color = "#664300"
+ color = "#D8AC45"
strength = 25
- glass_icon_state = "alliescocktail"
- glass_name = "glass of Allies cocktail"
+ glass_name = "Allies cocktail"
glass_desc = "A drink made from your allies."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/aloe
name = "Aloe"
id = "aloe"
description = "So very, very, very good."
- color = "#664300"
+ color = "#B7EA75"
strength = 15
- glass_icon_state = "aloe"
- glass_name = "glass of Aloe"
+ glass_name = "Aloe"
glass_desc = "Very, very, very good."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/amasec
name = "Amasec"
id = "amasec"
description = "Official drink of the Gun Club!"
reagent_state = LIQUID
- color = "#664300"
+ color = "#FF975D"
strength = 25
- glass_icon_state = "amasecglass"
- glass_name = "glass of Amasec"
+ glass_name = "Amasec"
glass_desc = "Always handy before COMBAT!!!"
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/andalusia
name = "Andalusia"
id = "andalusia"
description = "A nice, strangely named drink."
- color = "#664300"
+ color = "#F4EA4A"
strength = 15
- glass_icon_state = "andalusia"
- glass_name = "glass of Andalusia"
+ glass_name = "Andalusia"
glass_desc = "A nice, strange named drink."
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/antifreeze
name = "Anti-freeze"
id = "antifreeze"
description = "Ultimate refreshment."
- color = "#664300"
+ color = "#56DEEA"
strength = 12
adj_temp = 20
targ_temp = 330
- glass_icon_state = "antifreeze"
- glass_name = "glass of Anti-freeze"
+ glass_name = "Anti-freeze"
glass_desc = "The ultimate refreshment."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/atomicbomb
name = "Atomic Bomb"
@@ -1384,20 +1306,17 @@
strength = 10
druggy = 50
- glass_icon_state = "atomicbombglass"
- glass_name = "glass of Atomic Bomb"
+ glass_name = "Atomic Bomb"
glass_desc = "We cannot take legal responsibility for your actions after imbibing."
- glass_center_of_mass = list("x"=15, "y"=7)
/datum/reagent/ethanol/coffee/b52
name = "B-52"
id = "b52"
description = "Coffee, Irish Cream, and cognac. You will get bombed."
- color = "#664300"
+ color = "#997650"
strength = 12
- glass_icon_state = "b52glass"
- glass_name = "glass of B-52"
+ glass_name = "B-52"
glass_desc = "Kahlua, Irish cream, and congac. You will get bombed."
/datum/reagent/ethanol/bahama_mama
@@ -1407,10 +1326,8 @@
color = "#FF7F3B"
strength = 25
- glass_icon_state = "bahama_mama"
- glass_name = "glass of Bahama Mama"
+ glass_name = "Bahama Mama"
glass_desc = "Tropical cocktail"
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/bananahonk
name = "Banana Mama"
@@ -1420,35 +1337,29 @@
color = "#FFFF91"
strength = 12
- glass_icon_state = "bananahonkglass"
- glass_name = "glass of Banana Honk"
+ glass_name = "Banana Honk"
glass_desc = "A drink from Banana Heaven."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/barefoot
name = "Barefoot"
id = "barefoot"
description = "Barefoot and pregnant"
- color = "#664300"
+ color = "#FFCDEA"
strength = 30
- glass_icon_state = "b&p"
- glass_name = "glass of Barefoot"
+ glass_name = "Barefoot"
glass_desc = "Barefoot and pregnant"
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/beepsky_smash
name = "Beepsky Smash"
id = "beepskysmash"
description = "Deny drinking this and prepare for THE LAW."
reagent_state = LIQUID
- color = "#664300"
+ color = "#404040"
strength = 12
- glass_icon_state = "beepskysmashglass"
glass_name = "Beepsky Smash"
glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
- glass_center_of_mass = list("x"=18, "y"=10)
/datum/reagent/ethanol/beepsky_smash/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1462,8 +1373,7 @@
strength = 50
nutriment_factor = 2
- glass_icon_state = "glass_brown"
- glass_name = "glass of bilk"
+ glass_name = "bilk"
glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
/datum/reagent/ethanol/black_russian
@@ -1473,20 +1383,17 @@
color = "#360000"
strength = 15
- glass_icon_state = "blackrussianglass"
- glass_name = "glass of Black Russian"
+ glass_name = "Black Russian"
glass_desc = "For the lactose-intolerant. Still as classy as a White Russian."
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/bloody_mary
name = "Bloody Mary"
id = "bloodymary"
description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice."
- color = "#664300"
+ color = "#B40000"
strength = 15
- glass_icon_state = "bloodymaryglass"
- glass_name = "glass of Bloody Mary"
+ glass_name = "Bloody Mary"
glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
/datum/reagent/ethanol/booger
@@ -1496,21 +1403,18 @@
color = "#8CFF8C"
strength = 30
- glass_icon_state = "booger"
- glass_name = "glass of Booger"
+ glass_name = "Booger"
glass_desc = "Ewww..."
/datum/reagent/ethanol/coffee/brave_bull
name = "Brave Bull"
id = "bravebull"
description = "It's just as effective as Dutch-Courage!"
- color = "#664300"
+ color = "#4C3100"
strength = 15
- glass_icon_state = "bravebullglass"
- glass_name = "glass of Brave Bull"
+ glass_name = "Brave Bull"
glass_desc = "Tequilla and coffee liquor, brought together in a mouthwatering mixture. Drink up."
- glass_center_of_mass = list("x"=15, "y"=8)
/datum/reagent/ethanol/changelingsting
name = "Changeling Sting"
@@ -1519,21 +1423,18 @@
color = "#2E6671"
strength = 10
- glass_icon_state = "changelingsting"
- glass_name = "glass of Changeling Sting"
+ glass_name = "Changeling Sting"
glass_desc = "A stingy drink."
/datum/reagent/ethanol/martini
name = "Classic Martini"
id = "martini"
description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious."
- color = "#664300"
+ color = "#0064C8"
strength = 25
- glass_icon_state = "martiniglass"
- glass_name = "glass of classic martini"
+ glass_name = "classic martini"
glass_desc = "Damn, the bartender even stirred it, not shook it."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/cuba_libre
name = "Cuba Libre"
@@ -1542,10 +1443,8 @@
color = "#3E1B00"
strength = 30
- glass_icon_state = "cubalibreglass"
- glass_name = "glass of Cuba Libre"
+ glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum and cola."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/demonsblood
name = "Demons Blood"
@@ -1554,10 +1453,8 @@
color = "#820000"
strength = 15
- glass_icon_state = "demonsblood"
- glass_name = "glass of Demons' Blood"
+ glass_name = "Demons' Blood"
glass_desc = "Just looking at this thing makes the hair at the back of your neck stand up."
- glass_center_of_mass = list("x"=16, "y"=2)
/datum/reagent/ethanol/devilskiss
name = "Devils Kiss"
@@ -1566,10 +1463,8 @@
color = "#A68310"
strength = 15
- glass_icon_state = "devilskiss"
- glass_name = "glass of Devil's Kiss"
+ glass_name = "Devil's Kiss"
glass_desc = "Creepy time!"
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/driestmartini
name = "Driest Martini"
@@ -1579,33 +1474,29 @@
color = "#2E6671"
strength = 12
- glass_icon_state = "driestmartiniglass"
- glass_name = "glass of Driest Martini"
+ glass_name = "Driest Martini"
glass_desc = "Only for the experienced. You think you see sand floating in the glass."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/ginfizz
name = "Gin Fizz"
id = "ginfizz"
description = "Refreshingly lemony, deliciously dry."
- color = "#664300"
+ color = "#FFFFAE"
strength = 30
- glass_icon_state = "ginfizzglass"
- glass_name = "glass of gin fizz"
+ glass_name = "gin fizz"
glass_desc = "Refreshingly lemony, deliciously dry."
- glass_center_of_mass = list("x"=16, "y"=7)
/datum/reagent/ethanol/grog
name = "Grog"
id = "grog"
description = "Watered-down rum, pirate approved!"
reagent_state = LIQUID
- color = "#664300"
+ color = "#FFBB00"
strength = 100
- glass_icon_state = "grogglass"
- glass_name = "glass of grog"
+
+ glass_name = "grog"
glass_desc = "A fine and cepa drink for Space."
/datum/reagent/ethanol/erikasurprise
@@ -1615,87 +1506,76 @@
color = "#2E6671"
strength = 15
- glass_icon_state = "erikasurprise"
- glass_name = "glass of Erika Surprise"
+ glass_name = "Erika Surprise"
glass_desc = "The surprise is, it's green!"
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/gargle_blaster
name = "Pan-Galactic Gargle Blaster"
id = "gargleblaster"
description = "Whoah, this stuff looks volatile!"
reagent_state = LIQUID
- color = "#664300"
+ color = "#7F00FF"
strength = 10
- glass_icon_state = "gargleblasterglass"
- glass_name = "glass of Pan-Galactic Gargle Blaster"
+ glass_name = "Pan-Galactic Gargle Blaster"
glass_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy."
- glass_center_of_mass = list("x"=17, "y"=6)
/datum/reagent/ethanol/gintonic
name = "Gin and Tonic"
id = "gintonic"
description = "An all time classic, mild cocktail."
- color = "#664300"
+ color = "#0064C8"
strength = 50
- glass_icon_state = "gintonicglass"
- glass_name = "glass of gin and tonic"
+ glass_name = "gin and tonic"
glass_desc = "A mild but still great cocktail. Drink up, like a true Englishman."
- glass_center_of_mass = list("x"=16, "y"=7)
/datum/reagent/ethanol/goldschlager
name = "Goldschlager"
id = "goldschlager"
description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break."
- color = "#664300"
+ color = "#F4E46D"
strength = 15
- glass_icon_state = "ginvodkaglass"
- glass_name = "glass of Goldschlager"
+ glass_name = "Goldschlager"
glass_desc = "100 proof that teen girls will drink anything with gold in it."
- glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/hippies_delight
name = "Hippies' Delight"
id = "hippiesdelight"
description = "You just don't get it maaaan."
reagent_state = LIQUID
- color = "#664300"
+ color = "#FF88FF"
strength = 15
druggy = 50
- glass_icon_state = "hippiesdelightglass"
- glass_name = "glass of Hippie's Delight"
+ glass_name = "Hippie's Delight"
glass_desc = "A drink enjoyed by people during the 1960's."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/hooch
name = "Hooch"
id = "hooch"
description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?"
- color = "#664300"
+ color = "#4C3100"
strength = 25
toxicity = 2
- glass_icon_state = "glass_brown2"
- glass_name = "glass of Hooch"
+ glass_name = "Hooch"
glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
/datum/reagent/ethanol/iced_beer
name = "Iced Beer"
id = "iced_beer"
description = "A beer which is so cold the air around it freezes."
- color = "#664300"
+
+ color = "#FFD300"
strength = 50
adj_temp = -20
targ_temp = 270
- glass_icon_state = "iced_beerglass"
- glass_name = "glass of iced beer"
+ glass_name = "iced beer"
glass_desc = "A beer so frosty, the air around it freezes."
- glass_center_of_mass = list("x"=16, "y"=7)
+ glass_special = list(DRINK_ICE)
/datum/reagent/ethanol/irishcarbomb
name = "Irish Car Bomb"
@@ -1704,81 +1584,68 @@
color = "#2E6671"
strength = 15
- glass_icon_state = "irishcarbomb"
- glass_name = "glass of Irish Car Bomb"
+ glass_name = "Irish Car Bomb"
glass_desc = "An irish car bomb."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/coffee/irishcoffee
name = "Irish Coffee"
id = "irishcoffee"
description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning."
- color = "#664300"
+ color = "#4C3100"
strength = 15
- glass_icon_state = "irishcoffeeglass"
- glass_name = "glass of Irish coffee"
+ glass_name = "Irish coffee"
glass_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
- glass_center_of_mass = list("x"=15, "y"=10)
/datum/reagent/ethanol/irish_cream
name = "Irish Cream"
id = "irishcream"
description = "Whiskey-imbued cream, what else would you expect from the Irish."
- color = "#664300"
+ color = "#DDDD9A3"
strength = 25
- glass_icon_state = "irishcreamglass"
- glass_name = "glass of Irish cream"
+ glass_name = "Irish cream"
glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/longislandicedtea
name = "Long Island Iced Tea"
id = "longislandicedtea"
description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
- color = "#664300"
+ color = "#895B1F"
strength = 12
- glass_icon_state = "longislandicedteaglass"
- glass_name = "glass of Long Island iced tea"
+ glass_name = "Long Island iced tea"
glass_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/manhattan
name = "Manhattan"
id = "manhattan"
description = "The Detective's undercover drink of choice. He never could stomach gin..."
- color = "#664300"
+ color = "#C13600"
strength = 15
- glass_icon_state = "manhattanglass"
- glass_name = "glass of Manhattan"
+ glass_name = "Manhattan"
glass_desc = "The Detective's undercover drink of choice. He never could stomach gin..."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/manhattan_proj
name = "Manhattan Project"
id = "manhattan_proj"
description = "A scientist's drink of choice, for pondering ways to blow up the station."
- color = "#664300"
+ color = "#C15D00"
strength = 10
druggy = 30
- glass_icon_state = "proj_manhattanglass"
- glass_name = "glass of Manhattan Project"
+ glass_name = "Manhattan Project"
glass_desc = "A scienitst drink of choice, for thinking how to blow up the station."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/manly_dorf
name = "The Manly Dorf"
id = "manlydorf"
description = "Beer and Ale, brought together in a delicious mix. Intended for true men only."
- color = "#664300"
+ color = "#4C3100"
strength = 25
- glass_icon_state = "manlydorfglass"
- glass_name = "glass of The Manly Dorf"
+ glass_name = "The Manly Dorf"
glass_desc = "A manly concotion made from Ale and Beer. Intended for true men only."
/datum/reagent/ethanol/margarita
@@ -1788,34 +1655,29 @@
color = "#8CFF8C"
strength = 15
- glass_icon_state = "margaritaglass"
- glass_name = "glass of margarita"
+ glass_name = "margarita"
glass_desc = "On the rocks with salt on the rim. Arriba~!"
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/mead
name = "Mead"
id = "mead"
description = "A Viking's drink, though a cheap one."
reagent_state = LIQUID
- color = "#664300"
+ color = "#FFBB00"
strength = 30
nutriment_factor = 1
- glass_icon_state = "meadglass"
- glass_name = "glass of mead"
+ glass_name = "mead"
glass_desc = "A Viking's beverage, though a cheap one."
- glass_center_of_mass = list("x"=17, "y"=10)
/datum/reagent/ethanol/moonshine
name = "Moonshine"
id = "moonshine"
description = "You've really hit rock bottom now... your liver packed its bags and left last night."
- color = "#664300"
+ color = "#0064C8"
strength = 12
- glass_icon_state = "glass_clear"
- glass_name = "glass of moonshine"
+ glass_name = "moonshine"
glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
/datum/reagent/ethanol/neurotoxin
@@ -1826,10 +1688,10 @@
color = "#2E2E61"
strength = 10
- glass_icon_state = "neurotoxinglass"
- glass_name = "glass of Neurotoxin"
+ glass_name = "Neurotoxin"
glass_desc = "A drink that is guaranteed to knock you silly."
- glass_center_of_mass = list("x"=16, "y"=8)
+ glass_icon = DRINK_ICON_NOISY
+ glass_special = list("neuroright")
/datum/reagent/ethanol/neurotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1842,10 +1704,8 @@
color = "#585840"
strength = 30
- glass_icon_state = "patronglass"
- glass_name = "glass of Patron"
+ glass_name = "Patron"
glass_desc = "Drinking patron in the bar, with all the subpar ladies."
- glass_center_of_mass = list("x"=7, "y"=8)
/datum/reagent/ethanol/pwine
name = "Poison Wine"
@@ -1856,10 +1716,8 @@
druggy = 50
halluci = 10
- glass_icon_state = "pwineglass"
- glass_name = "glass of ???"
+ glass_name = "???"
glass_desc = "A black ichor with an oily purple sheer on top. Are you sure you should drink this?"
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/pwine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -1881,24 +1739,20 @@
color = "#C73C00"
strength = 30
- glass_icon_state = "red_meadglass"
- glass_name = "glass of red mead"
+ glass_name = "red mead"
glass_desc = "A true Viking's beverage, though its color is strange."
- glass_center_of_mass = list("x"=17, "y"=10)
/datum/reagent/ethanol/sbiten
name = "Sbiten"
id = "sbiten"
description = "A spicy Vodka! Might be a little hot for the little guys!"
- color = "#664300"
+ color = "#FFA371"
strength = 15
adj_temp = 50
targ_temp = 360
- glass_icon_state = "sbitenglass"
- glass_name = "glass of Sbiten"
+ glass_name = "Sbiten"
glass_desc = "A spicy mix of Vodka and Spice. Very hot."
- glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/screwdrivercocktail
name = "Screwdriver"
@@ -1907,23 +1761,19 @@
color = "#A68310"
strength = 15
- glass_icon_state = "screwdriverglass"
- glass_name = "glass of Screwdriver"
+ glass_name = "Screwdriver"
glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
- glass_center_of_mass = list("x"=15, "y"=10)
/datum/reagent/ethanol/silencer
name = "Silencer"
id = "silencer"
description = "A drink from Mime Heaven."
nutriment_factor = 1
- color = "#664300"
+ color = "#FFFFFF"
strength = 12
- glass_icon_state = "silencerglass"
- glass_name = "glass of Silencer"
+ glass_name = "Silencer"
glass_desc = "A drink from mime Heaven."
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/singulo
name = "Singulo"
@@ -1932,10 +1782,8 @@
color = "#2E6671"
strength = 10
- glass_icon_state = "singulo"
- glass_name = "glass of Singulo"
+ glass_name = "Singulo"
glass_desc = "A blue-space beverage."
- glass_center_of_mass = list("x"=17, "y"=4)
/datum/reagent/ethanol/snowwhite
name = "Snow White"
@@ -1944,10 +1792,8 @@
color = "#FFFFFF"
strength = 30
- glass_icon_state = "snowwhite"
- glass_name = "glass of Snow White"
+ glass_name = "Snow White"
glass_desc = "A cold refreshment."
- glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/suidream
name = "Sui Dream"
@@ -1956,10 +1802,8 @@
color = "#00A86B"
strength = 100
- glass_icon_state = "sdreamglass"
- glass_name = "glass of Sui Dream"
+ glass_name = "Sui Dream"
glass_desc = "A froofy, fruity, and sweet mixed drink. Understanding the name only brings shame."
- glass_center_of_mass = list("x"=16, "y"=5)
/datum/reagent/ethanol/syndicatebomb
name = "Syndicate Bomb"
@@ -1968,10 +1812,8 @@
color = "#2E6671"
strength = 10
- glass_icon_state = "syndicatebomb"
- glass_name = "glass of Syndicate Bomb"
+ glass_name = "Syndicate Bomb"
glass_desc = "Tastes like terrorism!"
- glass_center_of_mass = list("x"=16, "y"=4)
/datum/reagent/ethanol/tequilla_sunrise
name = "Tequila Sunrise"
@@ -1980,8 +1822,7 @@
color = "#FFE48C"
strength = 25
- glass_icon_state = "tequillasunriseglass"
- glass_name = "glass of Tequila Sunrise"
+ glass_name = "Tequilla Sunrise"
glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
/datum/reagent/ethanol/threemileisland
@@ -1992,36 +1833,32 @@
strength = 10
druggy = 50
- glass_icon_state = "threemileislandglass"
- glass_name = "glass of Three Mile Island iced tea"
+ glass_name = "Three Mile Island iced tea"
glass_desc = "A glass of this is sure to prevent a meltdown."
- glass_center_of_mass = list("x"=16, "y"=2)
/datum/reagent/ethanol/toxins_special
name = "Toxins Special"
id = "phoronspecial"
description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!"
reagent_state = LIQUID
- color = "#664300"
+ color = "#7F00FF"
strength = 10
adj_temp = 15
targ_temp = 330
- glass_icon_state = "toxinsspecialglass"
- glass_name = "glass of Toxins Special"
+ glass_name = "Toxins Special"
glass_desc = "Whoah, this thing is on FIRE"
/datum/reagent/ethanol/vodkamartini
name = "Vodka Martini"
id = "vodkamartini"
description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious."
- color = "#664300"
+ color = "#0064C8"
strength = 12
- glass_icon_state = "martiniglass"
- glass_name = "glass of vodka martini"
+ glass_name = "vodka martini"
glass_desc ="A bastardisation of the classic martini. Still great."
- glass_center_of_mass = list("x"=17, "y"=8)
+
/datum/reagent/ethanol/vodkatonic
name = "Vodka and Tonic"
@@ -2030,10 +1867,9 @@
color = "#0064C8" // rgb: 0, 100, 200
strength = 15
- glass_icon_state = "vodkatonicglass"
- glass_name = "glass of vodka and tonic"
+ glass_name = "vodka and tonic"
glass_desc = "For when a gin and tonic isn't Russian enough."
- glass_center_of_mass = list("x"=16, "y"=7)
+
/datum/reagent/ethanol/white_russian
name = "White Russian"
@@ -2042,10 +1878,9 @@
color = "#A68340"
strength = 15
- glass_icon_state = "whiterussianglass"
- glass_name = "glass of White Russian"
+ glass_name = "White Russian"
glass_desc = "A very nice looking drink. But that's just, like, your opinion, man."
- glass_center_of_mass = list("x"=16, "y"=9)
+
/datum/reagent/ethanol/whiskey_cola
name = "Whiskey Cola"
@@ -2054,22 +1889,19 @@
color = "#3E1B00"
strength = 25
- glass_icon_state = "whiskeycolaglass"
- glass_name = "glass of whiskey cola"
+ glass_name = "whiskey cola"
glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
- glass_center_of_mass = list("x"=16, "y"=9)
+
/datum/reagent/ethanol/whiskeysoda
name = "Whiskey Soda"
id = "whiskeysoda"
description = "For the more refined griffon."
- color = "#664300"
+ color = "#EAB300"
strength = 15
- glass_icon_state = "whiskeysodaglass2"
- glass_name = "glass of whiskey soda"
+ glass_name = "whiskey soda"
glass_desc = "Ultimate refreshment."
- glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/specialwhiskey // I have no idea what this is and where it comes from
name = "Special Blend Whiskey"
@@ -2078,7 +1910,5 @@
color = "#523600"
strength = 7
- glass_icon_state = "whiskeyglass"
- glass_name = "glass of special blend whiskey"
- glass_desc = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything. The smell of it singes your nostrils."
- glass_center_of_mass = list("x"=16, "y"=12)
+ glass_name = "special blend whiskey"
+ glass_desc = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything."
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
index c3cb7b4d2b4..92d09d1e183 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
@@ -112,8 +112,7 @@
color = "#C8A5DC"
affects_dead = 1 //This can even heal dead people.
- glass_icon_state = "golden_cup"
- glass_name = "golden cup"
+ glass_name = "liquid gold"
glass_desc = "It's magic. We don't have to explain it."
/datum/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
@@ -197,8 +196,7 @@
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
color = "#E0E8EF"
- glass_icon_state = "glass_clear"
- glass_name = "glass of holy water"
+ glass_name = "holy water"
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
/datum/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
index bc0072511a3..884ee830f0c 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
@@ -331,13 +331,10 @@
id = "beer2"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
reagent_state = LIQUID
- color = "#664300"
+ color = "#FFD300"
- glass_icon_state = "beerglass"
- glass_name = "glass of beer"
+ glass_name = "beer"
glass_desc = "A freezing pint of beer"
- glass_center_of_mass = list("x"=16, "y"=8)
-
/* Drugs */
/datum/reagent/space_drugs
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index e9c3df50985..a2938bb56dc 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -622,7 +622,7 @@
if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
continue
- flick("e_flash", M.flash)
+ M.flash_eyes()
M.Weaken(15)
if(4 to 5)
@@ -630,7 +630,7 @@
if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
continue
- flick("e_flash", M.flash)
+ M.flash_eyes()
M.Stun(5)
/datum/chemical_reaction/emp_pulse
@@ -1003,7 +1003,7 @@
if(holder.my_atom && istype(holder.my_atom, required))
return ..()
return 0
-
+
/datum/chemical_reaction/slime/golem
name = "Prometheans"
id = "m_promethean"
@@ -1016,7 +1016,7 @@
var/location = get_turf(holder.my_atom)
new /obj/item/slime_cube(location)
qdel(holder.my_atom)
-
+
/* Food */
/datum/chemical_reaction/tofu
@@ -1499,7 +1499,7 @@
name = "Allies Cocktail"
id = "alliescocktail"
result = "alliescocktail"
- required_reagents = list("classicmartini" = 1, "vodka" = 1)
+ required_reagents = list("martini" = 1, "vodka" = 1)
result_amount = 2
/datum/chemical_reaction/demonsblood
diff --git a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm
new file mode 100644
index 00000000000..c367d8b09c3
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm
@@ -0,0 +1,146 @@
+#define DRINK_ICON_FILE 'icons/pdrink.dmi'
+
+/var/const/DRINK_FIZZ = "fizz"
+/var/const/DRINK_ICE = "ice"
+/var/const/DRINK_ICON_DEFAULT = ""
+/var/const/DRINK_ICON_NOISY = "_noise"
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2
+ name = "glass" // Name when empty
+ var/base_name = "glass" // Name to put in front of drinks, i.e. "[base_name] of [contents]"
+ desc = "A generic drinking glass." // Description when empty
+ icon = DRINK_ICON_FILE
+ var/base_icon = "square" // Base icon name
+ volume = 30
+
+ var/list/filling_states // List of percentages full that have icons
+
+ var/list/extras = list() // List of extras. Two extras maximum
+
+ var/rim_pos
+
+ center_of_mass = list("x"=16, "y"=10)
+
+ amount_per_transfer_from_this = 5
+ possible_transfer_amounts = list(5,10,15,30)
+ flags = OPENCONTAINER
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/examine(mob/M as mob)
+ ..()
+
+ for(var/I in extras)
+ if(istype(I, /obj/item/weapon/glass_extra))
+ M << "There is \a [I] in \the [src]."
+ else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
+ M << "There is \a [I] on the rim."
+ else
+ M << "There is \a [I] somewhere on the glass. Somehow."
+
+ if(has_ice())
+ M << "There is some ice floating in the drink."
+
+ if(has_fizz())
+ M << "It is fizzing slightly."
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_ice()
+ if(reagents.reagent_list.len > 0)
+ var/datum/reagent/R = reagents.get_master_reagent()
+ if(!((R.id == "ice") || ("ice" in R.glass_special))) // if it's not a cup of ice, and it's not already supposed to have ice in, see if the bartender's put ice in it
+ if(reagents.has_reagent("ice", reagents.total_volume / 10)) // 10% ice by volume
+ return 1
+
+ return 0
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_fizz()
+ if(reagents.reagent_list.len > 0)
+ var/datum/reagent/R = reagents.get_master_reagent()
+ if(!("fizz" in R.glass_special))
+ var/totalfizzy = 0
+ for(var/datum/reagent/re in reagents.reagent_list)
+ if("fizz" in re.glass_special)
+ totalfizzy += re.volume
+ if(totalfizzy >= reagents.total_volume / 5) // 20% fizzy by volume
+ return 1
+ return 0
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/New()
+ ..()
+ icon_state = base_icon
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/on_reagent_change()
+ ..()
+ update_icon()
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/can_add_extra(obj/item/weapon/glass_extra/GE)
+ if(!("[base_icon]_[GE.glass_addition]left" in icon_states(DRINK_ICON_FILE)))
+ return 0
+ if(!("[base_icon]_[GE.glass_addition]right" in icon_states(DRINK_ICON_FILE)))
+ return 0
+
+ return 1
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/update_icon()
+ underlays.Cut()
+
+ if (reagents.reagent_list.len > 0)
+ var/datum/reagent/R = reagents.get_master_reagent()
+ name = "[base_name] of [R.glass_name ? R.glass_name : "something"]"
+ desc = R.glass_desc ? R.glass_desc : initial(desc)
+
+ var/list/under_liquid = list()
+ var/list/over_liquid = list()
+
+ var/amnt = 100
+ var/percent = round((reagents.total_volume / volume) * 100)
+ for(var/k in filling_states)
+ if(percent <= k)
+ amnt = k
+ break
+
+ if(has_ice())
+ over_liquid |= "[base_icon][amnt]_ice"
+
+ if(has_fizz())
+ over_liquid |= "[base_icon][amnt]_fizz"
+
+ for(var/S in R.glass_special)
+ if("[base_icon]_[S]" in icon_states(DRINK_ICON_FILE))
+ under_liquid |= "[base_icon]_[S]"
+ else if("[base_icon][amnt]_[S]" in icon_states(DRINK_ICON_FILE))
+ over_liquid |= "[base_icon][amnt]_[S]"
+
+ for(var/k in under_liquid)
+ underlays += image(DRINK_ICON_FILE, src, k, -3)
+
+ var/image/filling = image(DRINK_ICON_FILE, src, "[base_icon][amnt][R.glass_icon]", -2)
+ filling.color = reagents.get_color()
+ underlays += filling
+
+ for(var/k in over_liquid)
+ underlays += image(DRINK_ICON_FILE, src, k, -1)
+ else
+ name = initial(name)
+ desc = initial(desc)
+
+ var/side = "left"
+ for(var/item in extras)
+ if(istype(item, /obj/item/weapon/glass_extra))
+ var/obj/item/weapon/glass_extra/GE = item
+ var/image/I = image(DRINK_ICON_FILE, src, "[base_icon]_[GE.glass_addition][side]")
+ if(GE.glass_color)
+ I.color = GE.glass_color
+ underlays += I
+ else if(istype(item, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
+ var/obj/FS = item
+ var/image/I = image(FS)
+
+ var/fsy = rim_pos[1] - 20
+ var/fsx = rim_pos[side == "left" ? 2 : 3] - 16
+
+ var/matrix/M = matrix()
+ M.Scale(0.5)
+ M.Translate(fsx, fsy)
+ I.transform = M
+ underlays += I
+ else continue
+ side = "right"
diff --git a/code/modules/reagents/reagent_containers/drinkingglass/extras.dm b/code/modules/reagents/reagent_containers/drinkingglass/extras.dm
new file mode 100644
index 00000000000..5a92b61c889
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/drinkingglass/extras.dm
@@ -0,0 +1,72 @@
+/obj/item/weapon/reagent_containers/food/drinks/glass2/attackby(obj/item/I as obj, mob/user as mob)
+ if(extras.len >= 2) return ..() // max 2 extras, one on each side of the drink
+
+ if(istype(I, /obj/item/weapon/glass_extra))
+ var/obj/item/weapon/glass_extra/GE = I
+ if(can_add_extra(GE))
+ extras += GE
+ user.remove_from_mob(GE)
+ GE.loc = src
+ user << "You add \the [GE] to \the [src]."
+ update_icon()
+ else
+ user << "There's no space to put \the [GE] on \the [src]!"
+ else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
+ if(!rim_pos)
+ user << "There's no space to put \the [I] on \the [src]!"
+ return
+ var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/FS = I
+ extras += FS
+ user.remove_from_mob(FS)
+ FS.pixel_x = 0 // Reset its pixel offsets so the icons work!
+ FS.pixel_y = 0
+ FS.loc = src
+ user << "You add \the [FS] to \the [src]."
+ update_icon()
+ else
+ return ..()
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/attack_hand(mob/user as mob)
+ if(src != user.get_inactive_hand())
+ return ..()
+
+ if(!extras.len)
+ user << "There's nothing on the glass to remove!"
+ return
+
+ var/choice = input(user, "What would you like to remove from the glass?") as null|anything in extras
+ if(!choice || !(choice in extras))
+ return
+
+ if(user.put_in_active_hand(choice))
+ user << "You remove \the [choice] from \the [src]."
+ extras -= choice
+ else
+ user << "Something went wrong, please try again."
+
+ update_icon()
+
+/obj/item/weapon/glass_extra
+ name = "generic glass addition"
+ desc = "This goes on a glass."
+ var/glass_addition
+ var/glass_desc
+ var/glass_color
+ w_class = 1
+ icon = DRINK_ICON_FILE
+
+/obj/item/weapon/glass_extra/stick
+ name = "stick"
+ desc = "This goes in a glass."
+ glass_addition = "stick"
+ glass_desc = "There is a stick in the glass."
+ icon_state = "stick"
+
+/obj/item/weapon/glass_extra/straw
+ name = "straw"
+ desc = "This goes in a glass."
+ glass_addition = "straw"
+ glass_desc = "There is a straw in the glass."
+ icon_state = "straw"
+
+#undef DRINK_ICON_FILE
diff --git a/code/modules/reagents/reagent_containers/drinkingglass/glass_boxes.dm b/code/modules/reagents/reagent_containers/drinkingglass/glass_boxes.dm
new file mode 100644
index 00000000000..d9c19321ca4
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/drinkingglass/glass_boxes.dm
@@ -0,0 +1,75 @@
+/obj/item/weapon/storage/box/mixedglasses
+ name = "glassware box"
+ desc = "A box of assorted glassware"
+ can_hold = list(/obj/item/weapon/reagent_containers/food/drinks/glass2)
+ New()
+ ..()
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/square(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/shake(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/shot(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/pint(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/mug(src)
+ new /obj/item/weapon/reagent_containers/food/drinks/glass2/wine(src)
+
+/obj/item/weapon/storage/box/glasses
+ name = "box of glasses"
+ var/glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2
+ can_hold = list(/obj/item/weapon/reagent_containers/food/drinks/glass2)
+ New()
+ ..()
+
+ for(var/i = 1 to 7)
+ new glass_type(src)
+
+/obj/item/weapon/storage/box/glasses/square
+ name = "box of half-pint glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/square
+
+/obj/item/weapon/storage/box/glasses/rocks
+ name = "box of rocks glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks
+
+/obj/item/weapon/storage/box/glasses/shake
+ name = "box of milkshake glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/shake
+
+/obj/item/weapon/storage/box/glasses/cocktail
+ name = "box of cocktail glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail
+
+/obj/item/weapon/storage/box/glasses/shot
+ name = "box of shot glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/shot
+
+/obj/item/weapon/storage/box/glasses/pint
+ name = "box of pint glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/pint
+
+/obj/item/weapon/storage/box/glasses/mug
+ name = "box of glass mugs"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/mug
+
+/obj/item/weapon/storage/box/glasses/wine
+ name = "box of wine glasses"
+ glass_type = /obj/item/weapon/reagent_containers/food/drinks/glass2/wine
+
+/obj/item/weapon/storage/box/glass_extras
+ name = "box of cocktail garnishings"
+ var/extra_type = /obj/item/weapon/glass_extra
+ can_hold = list(/obj/item/weapon/glass_extra)
+ storage_slots = 14
+ New()
+ ..()
+
+ for(var/i = 1 to 14)
+ new extra_type(src)
+
+/obj/item/weapon/storage/box/glass_extras/straws
+ name = "box of straws"
+ extra_type = /obj/item/weapon/glass_extra/straw
+
+/obj/item/weapon/storage/box/glass_extras/sticks
+ name = "box of drink sticks"
+ extra_type = /obj/item/weapon/glass_extra/stick
diff --git a/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm b/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm
new file mode 100644
index 00000000000..feec8bf16e7
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm
@@ -0,0 +1,72 @@
+/obj/item/weapon/reagent_containers/food/drinks/glass2/square
+ name = "half-pint glass"
+ base_name = "glass"
+ base_icon = "square"
+ desc = "Your standard drinking glass."
+ filling_states = list(20, 40, 60, 80, 100)
+ volume = 30
+ possible_transfer_amounts = list(5,10,15,30)
+ rim_pos = list(23,13,20) // y, x0, x1
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks
+ name = "rocks glass"
+ base_name = "glass"
+ base_icon = "rocks"
+ filling_states = list(25, 50, 75, 100)
+ volume = 20
+ possible_transfer_amounts = list(5,10,20)
+ rim_pos = list(21, 10, 23)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/shake
+ name = "milkshake glass"
+ base_name = "glass"
+ base_icon = "shake"
+ filling_states = list(25, 50, 75, 100)
+ volume = 30
+ possible_transfer_amounts = list(5,10,15,30)
+ rim_pos = list(25, 13, 21)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail
+ name = "cocktail glass"
+ base_name = "glass"
+ base_icon = "cocktail"
+ filling_states = list(33, 66, 100)
+ volume = 15
+ possible_transfer_amounts = list(5,10,15)
+ rim_pos = list(22, 13, 21)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/shot
+ name = "shot glass"
+ base_name = "shot"
+ base_icon = "shot"
+ filling_states = list(33, 66, 100)
+ volume = 5
+ possible_transfer_amounts = list(1,2,5)
+ rim_pos = list(17, 13, 21)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/pint
+ name = "pint glass"
+ base_name = "pint"
+ base_icon = "pint"
+ filling_states = list(16, 33, 50, 66, 83, 100)
+ volume = 60
+ possible_transfer_amounts = list(5,10,15,30,60)
+ rim_pos = list(25, 12, 21)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/mug
+ name = "glass mug"
+ base_name = "mug"
+ base_icon = "mug"
+ filling_states = list(25, 50, 75, 100)
+ volume = 40
+ possible_transfer_amounts = list(5,10,20,40)
+ rim_pos = list(22, 12, 20)
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/wine
+ name = "wine glass"
+ base_name = "glass"
+ base_icon = "wine"
+ filling_states = list(20, 40, 60, 80, 100)
+ volume = 25
+ possible_transfer_amounts = list(5, 10, 15, 25)
+ rim_pos = list(25, 12, 21)
diff --git a/code/modules/reagents/reagent_containers/drinkingglass/shaker.dm b/code/modules/reagents/reagent_containers/drinkingglass/shaker.dm
new file mode 100644
index 00000000000..b653f14c603
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/drinkingglass/shaker.dm
@@ -0,0 +1,31 @@
+/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask
+ name = "fitness shaker"
+ base_name = "shaker"
+ desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits."
+ icon_state = "fitness-cup_black"
+ base_icon = "fitness-cup"
+ volume = 100
+ matter = list("plastic" = 2000)
+ filling_states = list(10,20,30,40,50,60,70,80,90,100)
+ possible_transfer_amounts = list(5, 10, 15, 25)
+ rim_pos = null // no fruit slices
+ var/lid_color = "black"
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/New()
+ ..()
+ lid_color = pick("black", "red", "blue")
+ update_icon()
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/update_icon()
+ ..()
+ icon_state = "[base_icon]_[lid_color]"
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake
+ name = "protein shake"
+
+/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/New()
+ ..()
+ reagents.add_reagent("nutriment", 30)
+ reagents.add_reagent("iron", 10)
+ reagents.add_reagent("protein", 35)
+ reagents.add_reagent("water", 25)
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 36a8b40feff..ba671cdb502 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -12,8 +12,15 @@
slot_flags = SLOT_EARS
volume = 5
-/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/flag)
- if(!target.reagents || !flag) return
+
+/obj/item/weapon/reagent_containers/dropper/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
+/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/proximity)
+ if(!target.reagents || !proximity) return
if(reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index 53f910b9c2d..ace72d08bdb 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -11,7 +11,13 @@
volume = 50
/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change()
- return
+ if (reagents.reagent_list.len > 0)
+ var/datum/reagent/R = reagents.get_master_reagent()
+ if(R.price_tag)
+ price_tag = R.price_tag
+ else
+ price_tag = null
+ return
/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob)
if(!is_open_container())
@@ -96,13 +102,16 @@
volume = 150
flags = CONDUCT | OPENCONTAINER
+/obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change()
+ ..()
+
///////////////////////////////////////////////Drinks
//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly
// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50.
// Formatting is the same as food.
/obj/item/weapon/reagent_containers/food/drinks/milk
- name = "Space Milk"
+ name = "milk carton"
desc = "It's milk. White and nutritious goodness!"
icon_state = "milk"
item_state = "carton"
@@ -113,7 +122,7 @@
reagents.add_reagent("milk", 50)
/obj/item/weapon/reagent_containers/food/drinks/soymilk
- name = "SoyMilk"
+ name = "soymilk carton"
desc = "It's soy milk. White and nutritious goodness!"
icon_state = "soymilk"
item_state = "carton"
@@ -123,7 +132,7 @@
reagents.add_reagent("soymilk", 50)
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton
- name = "Small Carton of Milk"
+ name = "small milk carton"
volume = 30
icon_state = "mini-milk"
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New()
@@ -131,16 +140,16 @@
reagents.add_reagent("milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate
- name = "Small Carton of Chocolate Milk"
+ name = "small chocolate milk carton"
desc = "It's milk! This one is in delicious chocolate flavour."
-
+ icon_state = "mini-milk_choco"
/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New()
..()
reagents.add_reagent("chocolate_milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/coffee
- name = "Robust Coffee"
+ name = "\improper Robust Coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
icon_state = "coffee"
center_of_mass = list("x"=15, "y"=10)
@@ -149,7 +158,7 @@
reagents.add_reagent("coffee", 30)
/obj/item/weapon/reagent_containers/food/drinks/tea
- name = "Duke Purple Tea"
+ name = "cup of Duke Purple Tea"
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
icon_state = "teacup"
item_state = "coffee"
@@ -160,7 +169,7 @@
reagents.add_reagent("tea", 30)
/obj/item/weapon/reagent_containers/food/drinks/ice
- name = "Ice Cup"
+ name = "cup of ice"
desc = "Careful, cold ice, do not chew."
icon_state = "coffee"
center_of_mass = list("x"=15, "y"=10)
@@ -169,7 +178,7 @@
reagents.add_reagent("ice", 30)
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate
- name = "Dutch Hot Coco"
+ name = "cup of Dutch hot coco"
desc = "Made in Space South America."
icon_state = "hot_coco"
item_state = "coffee"
@@ -189,7 +198,7 @@
reagents.add_reagent("dry_ramen", 30)
/obj/item/weapon/reagent_containers/food/drinks/sillycup
- name = "Paper Cup"
+ name = "paper cup"
desc = "A paper water cup."
icon_state = "water_cup_e"
possible_transfer_amounts = null
@@ -200,6 +209,7 @@
..()
/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change()
+ ..()
if(reagents.total_volume)
icon_state = "water_cup"
else
@@ -222,13 +232,16 @@
// icon states.
/obj/item/weapon/reagent_containers/food/drinks/shaker
- name = "Shaker"
+ name = "shaker"
desc = "A metal shaker to mix drinks in."
icon_state = "shaker"
amount_per_transfer_from_this = 10
volume = 120
center_of_mass = list("x"=17, "y"=10)
+/obj/item/weapon/reagent_containers/food/drinks/shaker/on_reagent_change()
+ ..()
+
/obj/item/weapon/reagent_containers/food/drinks/teapot
name = "teapot"
desc = "An elegant teapot. It simply oozes class."
@@ -238,13 +251,19 @@
volume = 120
center_of_mass = list("x"=17, "y"=7)
+/obj/item/weapon/reagent_containers/food/drinks/teapot/on_reagent_change()
+ ..()
+
/obj/item/weapon/reagent_containers/food/drinks/flask
- name = "Captain's Flask"
+ name = "\improper Captain's flask"
desc = "A metal flask belonging to the captain"
icon_state = "flask"
volume = 60
center_of_mass = list("x"=17, "y"=7)
+/obj/item/weapon/reagent_containers/food/drinks/flask/on_reagent_change()
+ ..()
+
/obj/item/weapon/reagent_containers/food/drinks/flask/shiny
name = "shiny flask"
desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it."
@@ -256,7 +275,7 @@
icon_state = "lithiumflask"
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
- name = "Detective's Flask"
+ name = "\improper Detective's flask"
desc = "A metal flask with a leather band and golden badge belonging to the detective."
icon_state = "detflask"
volume = 60
@@ -282,3 +301,7 @@
icon_state = "britcup"
volume = 30
center_of_mass = list("x"=15, "y"=13)
+
+/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change()
+ ..()
+
diff --git a/code/modules/reagents/reagent_containers/food/drinks/cup.dm b/code/modules/reagents/reagent_containers/food/drinks/cup.dm
new file mode 100644
index 00000000000..087d2dec5b7
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/food/drinks/cup.dm
@@ -0,0 +1,39 @@
+/obj/item/weapon/reagent_containers/food/drinks/cup
+ name = "coffee cup"
+ desc = "The container of oriental luxuries."
+ icon_state = "cup_empty"
+ amount_per_transfer_from_this = 5
+ volume = 30
+ center_of_mass = list("x"=16, "y"=16)
+
+/obj/item/weapon/reagent_containers/food/drinks/cup/on_reagent_change()
+ ..()
+ if (reagents.reagent_list.len > 0)
+ var/datum/reagent/R = reagents.get_master_reagent()
+
+ if(R.cup_icon_state)
+ icon_state = R.cup_icon_state
+ else
+ icon_state = "cup_brown"
+
+ if(R.cup_name)
+ name = R.cup_name
+ else
+ name = "Cup of.. what?"
+
+ if(R.cup_desc)
+ desc = R.cup_desc
+ else
+ desc = "You can't really tell what this is."
+
+ if(R.cup_center_of_mass)
+ center_of_mass = R.cup_center_of_mass
+ else
+ center_of_mass = list("x"=16, "y"=16)
+
+ else
+ icon_state = "cup_empty"
+ name = "coffee cup"
+ desc = "The container of oriental luxuries."
+ center_of_mass = list("x"=16, "y"=16)
+ return
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 4eb927444e7..d131cdf9c9a 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -69,8 +69,15 @@
flags |= OPENCONTAINER
update_icon()
-/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/flag)
- if(!is_open_container() || !flag)
+/obj/item/weapon/reagent_containers/glass/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
+/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/proximity)
+
+ if(!is_open_container() || !proximity)
return
for(var/type in can_be_placed_into)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 884afc5ed83..771ce4cc274 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -20,6 +20,12 @@
// reagents.add_reagent("tricordrazine", 30)
// return
+/obj/item/weapon/reagent_containers/hypospray/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ attack(M, user)
+ return 1
+
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
user << "[src] is empty."
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 09ae98eb908..87b5311be2f 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -52,6 +52,14 @@
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I as obj, mob/user as mob)
return
+/obj/item/weapon/reagent_containers/syringe/do_surgery(mob/living/carbon/M, mob/living/user)
+ if(user.a_intent == I_HURT)
+ return 0
+ if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool
+ return ..()
+ afterattack(M, user, 1)
+ return 1
+
/obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user, proximity)
if(!proximity || !target.reagents)
return
@@ -66,7 +74,6 @@
syringestab(target, user)
return
-
switch(mode)
if(SYRINGE_DRAW)
diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm
index 35f064321c6..7ebdc5fbb69 100644
--- a/code/modules/research/mechfab_designs.dm
+++ b/code/modules/research/mechfab_designs.dm
@@ -11,7 +11,7 @@
id = "ripley_chassis"
build_path = /obj/item/mecha_parts/chassis/ripley
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 20000)
+ materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/ripley/chassis/firefighter
name = "Firefigher chassis"
@@ -23,35 +23,35 @@
id = "ripley_torso"
build_path = /obj/item/mecha_parts/part/ripley_torso
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 40000, "glass" = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 11250)
/datum/design/item/mechfab/ripley/left_arm
name = "Ripley left arm"
id = "ripley_left_arm"
build_path = /obj/item/mecha_parts/part/ripley_left_arm
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/ripley/right_arm
name = "Ripley right arm"
id = "ripley_right_arm"
build_path = /obj/item/mecha_parts/part/ripley_right_arm
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/ripley/left_leg
name = "Ripley left leg"
id = "ripley_left_leg"
build_path = /obj/item/mecha_parts/part/ripley_left_leg
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 30000)
+ materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/ripley/right_leg
name = "Ripley right leg"
id = "ripley_right_leg"
build_path = /obj/item/mecha_parts/part/ripley_right_leg
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 30000)
+ materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/odysseus
category = "Odysseus"
@@ -61,49 +61,49 @@
id = "odysseus_chassis"
build_path = /obj/item/mecha_parts/chassis/odysseus
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 20000)
+ materials = list(DEFAULT_WALL_MATERIAL = 15000)
/datum/design/item/mechfab/odysseus/torso
name = "Odysseus torso"
id = "odysseus_torso"
build_path = /obj/item/mecha_parts/part/odysseus_torso
time = 18
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/odysseus/head
name = "Odysseus head"
id = "odysseus_head"
build_path = /obj/item/mecha_parts/part/odysseus_head
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 7500)
/datum/design/item/mechfab/odysseus/left_arm
name = "Odysseus left arm"
id = "odysseus_left_arm"
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
time = 12
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/mechfab/odysseus/right_arm
name = "Odysseus right arm"
id = "odysseus_right_arm"
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
time = 12
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/mechfab/odysseus/left_leg
name = "Odysseus left leg"
id = "odysseus_left_leg"
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
time = 13
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/mechfab/odysseus/right_leg
name = "Odysseus right leg"
id = "odysseus_right_leg"
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
time = 13
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/mechfab/gygax
category = "Gygax"
@@ -113,56 +113,56 @@
id = "gygax_chassis"
build_path = /obj/item/mecha_parts/chassis/gygax
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/gygax/torso
name = "Gygax torso"
id = "gygax_torso"
build_path = /obj/item/mecha_parts/part/gygax_torso
time = 30
- materials = list(DEFAULT_WALL_MATERIAL = 50000, "glass" = 20000)
+ materials = list(DEFAULT_WALL_MATERIAL = 37500, "glass" = 15000)
/datum/design/item/mechfab/gygax/head
name = "Gygax head"
id = "gygax_head"
build_path = /obj/item/mecha_parts/part/gygax_head
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 20000, "glass" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 7500)
/datum/design/item/mechfab/gygax/left_arm
name = "Gygax left arm"
id = "gygax_left_arm"
build_path = /obj/item/mecha_parts/part/gygax_left_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 30000)
+ materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/gygax/right_arm
name = "Gygax right arm"
id = "gygax_right_arm"
build_path = /obj/item/mecha_parts/part/gygax_right_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 30000)
+ materials = list(DEFAULT_WALL_MATERIAL = 22500)
/datum/design/item/mechfab/gygax/left_leg
name = "Gygax left leg"
id = "gygax_left_leg"
build_path = /obj/item/mecha_parts/part/gygax_left_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 35000)
+ materials = list(DEFAULT_WALL_MATERIAL = 26250)
/datum/design/item/mechfab/gygax/right_leg
name = "Gygax right leg"
id = "gygax_right_leg"
build_path = /obj/item/mecha_parts/part/gygax_right_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 35000)
+ materials = list(DEFAULT_WALL_MATERIAL = 26250)
/datum/design/item/mechfab/gygax/armour
name = "Gygax armour plates"
id = "gygax_armour"
build_path = /obj/item/mecha_parts/part/gygax_armour
time = 60
- materials = list(DEFAULT_WALL_MATERIAL = 50000, "diamond" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 37500, "diamond" = 7500)
/datum/design/item/mechfab/durand
category = "Durand"
@@ -172,75 +172,74 @@
id = "durand_chassis"
build_path = /obj/item/mecha_parts/chassis/durand
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/mechfab/durand/torso
name = "Durand torso"
id = "durand_torso"
build_path = /obj/item/mecha_parts/part/durand_torso
time = 30
- materials = list(DEFAULT_WALL_MATERIAL = 55000, "glass" = 20000, "silver" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 41250, "glass" = 15000, "silver" = 7500)
/datum/design/item/mechfab/durand/head
name = "Durand head"
id = "durand_head"
build_path = /obj/item/mecha_parts/part/durand_head
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 10000, "silver" = 3000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 7500, "silver" = 2250)
/datum/design/item/mechfab/durand/left_arm
name = "Durand left arm"
id = "durand_left_arm"
build_path = /obj/item/mecha_parts/part/durand_left_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
+ materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
/datum/design/item/mechfab/durand/right_arm
name = "Durand right arm"
id = "durand_right_arm"
build_path = /obj/item/mecha_parts/part/durand_right_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 35000, "silver" = 3000)
+ materials = list(DEFAULT_WALL_MATERIAL = 26250, "silver" = 2250)
/datum/design/item/mechfab/durand/left_leg
name = "Durand left leg"
id = "durand_left_leg"
build_path = /obj/item/mecha_parts/part/durand_left_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
+ materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
/datum/design/item/mechfab/durand/right_leg
name = "Durand right leg"
id = "durand_right_leg"
build_path = /obj/item/mecha_parts/part/durand_right_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 40000, "silver" = 3000)
+ materials = list(DEFAULT_WALL_MATERIAL = 30000, "silver" = 2250)
/datum/design/item/mechfab/durand/armour
name = "Durand armour plates"
id = "durand_armour"
build_path = /obj/item/mecha_parts/part/durand_armour
time = 60
- materials = list(DEFAULT_WALL_MATERIAL = 50000, "uranium" = 10000)
-
-/datum/design/item/mecha_tracking
- name = "Exosuit tracking beacon"
- build_type = MECHFAB
- time = 5
- materials = list(DEFAULT_WALL_MATERIAL = 500)
- build_path = /obj/item/mecha_parts/mecha_tracking
- category = "Misc"
+ materials = list(DEFAULT_WALL_MATERIAL = 37500, "uranium" = 7500)
/datum/design/item/mecha
build_type = MECHFAB
category = "Exosuit Equipment"
time = 10
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/mecha/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a '[item_name]' exosuit module."
+/datum/design/item/mecha/tracking
+ name = "Exosuit tracking beacon"
+ id = "mech_tracker"
+ time = 5
+ materials = list(DEFAULT_WALL_MATERIAL = 375)
+ build_path = /obj/item/mecha_parts/mecha_tracking
+
/datum/design/item/mecha/hydraulic_clamp
name = "Hydraulic clamp"
id = "hydraulic_clamp"
@@ -265,20 +264,20 @@
name = "Flare launcher"
id = "mecha_flare_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare
- materials = list(DEFAULT_WALL_MATERIAL = 12500)
+ materials = list(DEFAULT_WALL_MATERIAL = 9375)
/datum/design/item/mecha/sleeper
name = "Sleeper"
id = "mech_sleeper"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
- materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 7500)
/datum/design/item/mecha/syringe_gun
name = "Syringe gun"
id = "mech_syringe_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000)
+ materials = list(DEFAULT_WALL_MATERIAL = 2250, "glass" = 1500)
/*
/datum/design/item/mecha/syringe_gun
@@ -292,7 +291,7 @@
name = "Passenger compartment"
id = "mech_passenger"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
- materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 3750, "glass" = 3750)
//obj/item/mecha_parts/mecha_equipment/repair_droid,
//obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING
@@ -352,7 +351,7 @@
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 6000, "uranium" = 6000)
+ materials = list(DEFAULT_WALL_MATERIAL = 15000, "gold" = 4500, "uranium" = 4500)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited
// *** Nonweapon modules
@@ -375,7 +374,7 @@
desc = "An exosuit-mounted rapid construction device."
id = "mech_rcd"
time = 120
- materials = list(DEFAULT_WALL_MATERIAL = 30000, "phoron" = 25000, "silver" = 20000, "gold" = 20000)
+ materials = list(DEFAULT_WALL_MATERIAL = 22500, "phoron" = 18750, "silver" = 15000, "gold" = 15000)
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd
@@ -391,7 +390,7 @@
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
id = "mech_repair_droid"
req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 1000, "silver" = 2000, "glass" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
/datum/design/item/mecha/phoron_generator
@@ -399,13 +398,13 @@
id = "mech_phoron_generator"
req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/generator
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750)
/datum/design/item/mecha/energy_relay
name = "Energy relay"
id = "mech_energy_relay"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 2000, "silver" = 3000, "glass" = 2000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 1500, "silver" = 2250, "glass" = 1500)
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
/datum/design/item/mecha/ccw_armor
@@ -413,14 +412,14 @@
desc = "Exosuit close-combat armor booster."
id = "mech_ccw_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
- materials = list(DEFAULT_WALL_MATERIAL = 20000, "silver" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250, "silver" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
/datum/design/item/mecha/proj_armor
desc = "Exosuit projectile armor booster."
id = "mech_proj_armor"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 20000, "gold" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 15000, "gold" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
/datum/design/item/mecha/diamond_drill
@@ -428,7 +427,7 @@
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
id = "mech_diamond_drill"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "diamond" = 6500)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "diamond" = 4875)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
/datum/design/item/mecha/generator_nuclear
@@ -436,7 +435,7 @@
desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy."
id = "mech_generator_nuclear"
req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 500, "glass" = 1000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750)
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
/datum/design/item/synthetic_flash
@@ -444,6 +443,6 @@
id = "sflash"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_type = MECHFAB
- materials = list(DEFAULT_WALL_MATERIAL = 750, "glass" = 750)
+ materials = list(DEFAULT_WALL_MATERIAL = 562, "glass" = 562)
build_path = /obj/item/device/flash/synthetic
category = "Misc"
\ No newline at end of file
diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm
index 8c0670e7066..9629bb31f10 100644
--- a/code/modules/research/prosfab_designs.dm
+++ b/code/modules/research/prosfab_designs.dm
@@ -49,7 +49,7 @@
//////////////////// Prosthetics ////////////////////
/datum/design/item/prosfab/pros/torso
time = 35
- materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 10000, "plasteel" = 2000)
+ materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 7500, "plasteel" = 1500)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
var/gender = MALE
@@ -72,7 +72,7 @@
id = "pros_head"
build_path = /obj/item/organ/external/head
time = 30
- materials = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 5000, "plasteel" = 1000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 3750, "plasteel" = 750)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
/datum/design/item/prosfab/pros/l_arm
@@ -80,63 +80,63 @@
id = "pros_l_arm"
build_path = /obj/item/organ/external/arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 18000)
+ materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/pros/l_hand
name = "Prosthetic left hand"
id = "pros_l_hand"
build_path = /obj/item/organ/external/hand
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/pros/l_leg
name = "Prosthetic left leg"
id = "pros_l_leg"
build_path = /obj/item/organ/external/leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/prosfab/pros/l_foot
name = "Prosthetic left foot"
id = "pros_l_foot"
build_path = /obj/item/organ/external/foot
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/pros/r_arm
name = "Prosthetic right arm"
id = "pros_r_arm"
build_path = /obj/item/organ/external/arm/right
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 18000)
+ materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/pros/r_hand
name = "Prosthetic right hand"
id = "pros_r_hand"
build_path = /obj/item/organ/external/hand/right
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/pros/r_leg
name = "Prosthetic right leg"
id = "pros_r_leg"
build_path = /obj/item/organ/external/leg/right
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/prosfab/pros/r_foot
name = "Prosthetic right foot"
id = "pros_r_foot"
build_path = /obj/item/organ/external/foot/right
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/pros/cell
name = "Prosthetic powercell"
id = "pros_cell"
build_path = /obj/item/organ/internal/cell
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 4000, "plasteel" = 2000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 3000, "plasteel" = 1500)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/eyes
@@ -144,63 +144,63 @@
id = "pros_eyes"
build_path = /obj/item/organ/internal/eyes/robot
time = 15
- materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 7500)
+ materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 5625)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
//////////////////// Cyborg Parts ////////////////////
/datum/design/item/prosfab/cyborg
category = "Cyborg Parts"
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 3750)
/datum/design/item/prosfab/cyborg/exoskeleton
name = "Robot exoskeleton"
id = "robot_exoskeleton"
build_path = /obj/item/robot_parts/robot_suit
time = 50
- materials = list(DEFAULT_WALL_MATERIAL = 50000)
+ materials = list(DEFAULT_WALL_MATERIAL = 37500)
/datum/design/item/prosfab/cyborg/torso
name = "Robot torso"
id = "robot_torso"
build_path = /obj/item/robot_parts/chest
time = 35
- materials = list(DEFAULT_WALL_MATERIAL = 40000)
+ materials = list(DEFAULT_WALL_MATERIAL = 30000)
/datum/design/item/prosfab/cyborg/head
name = "Robot head"
id = "robot_head"
build_path = /obj/item/robot_parts/head
time = 35
- materials = list(DEFAULT_WALL_MATERIAL = 25000)
+ materials = list(DEFAULT_WALL_MATERIAL = 18750)
/datum/design/item/prosfab/cyborg/l_arm
name = "Robot left arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 18000)
+ materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/cyborg/r_arm
name = "Robot right arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 18000)
+ materials = list(DEFAULT_WALL_MATERIAL = 13500)
/datum/design/item/prosfab/cyborg/l_leg
name = "Robot left leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
/datum/design/item/prosfab/cyborg/r_leg
name = "Robot right leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
- materials = list(DEFAULT_WALL_MATERIAL = 15000)
+ materials = list(DEFAULT_WALL_MATERIAL = 11250)
//////////////////// Cyborg Internals ////////////////////
@@ -208,7 +208,7 @@
category = "Cyborg Internals"
build_type = PROSFAB
time = 12
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/cyborg/component/binary_communication_device
name = "Binary communication device"
@@ -246,7 +246,7 @@
category = "Cyborg Modules"
build_type = PROSFAB
time = 12
- materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500)
/datum/design/item/prosfab/robot_upgrade/rename
name = "Rename module"
@@ -264,28 +264,28 @@
name = "Emergency restart module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
id = "borg_restart_module"
- materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 3750)
build_path = /obj/item/borg/upgrade/restart
/datum/design/item/prosfab/robot_upgrade/vtec
name = "VTEC module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
id = "borg_vtec_module"
- materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 5000)
+ materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 3750)
build_path = /obj/item/borg/upgrade/vtec
/datum/design/item/prosfab/robot_upgrade/tasercooler
name = "Rapid taser cooling module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
id = "borg_taser_module"
- materials = list(DEFAULT_WALL_MATERIAL = 80000, "glass" = 6000, "gold" = 2000, "diamond" = 500)
+ materials = list(DEFAULT_WALL_MATERIAL = 60000, "glass" = 4500, "gold" = 1500, "diamond" = 375)
build_path = /obj/item/borg/upgrade/tasercooler
/datum/design/item/prosfab/robot_upgrade/jetpack
name = "Jetpack module"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
id = "borg_jetpack_module"
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "phoron" = 15000, "uranium" = 20000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "phoron" = 11250, "uranium" = 15000)
build_path = /obj/item/borg/upgrade/jetpack
/datum/design/item/prosfab/robot_upgrade/syndicate
@@ -293,5 +293,5 @@
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
- materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "diamond" = 10000)
+ materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 11250, "diamond" = 7500)
build_path = /obj/item/borg/upgrade/syndicate
\ No newline at end of file
diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm
index 92b85fdb364..c52f75acee7 100644
--- a/code/modules/spells/targeted/equip/horsemask.dm
+++ b/code/modules/spells/targeted/equip/horsemask.dm
@@ -26,7 +26,7 @@
for(var/mob/living/target in targets)
target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \
"Your face burns up, and shortly after the fire you realise you have the face of a horse!")
- flick("e_flash", target.flash)
+ target.flash_eyes()
/spell/targeted/equip_item/horsemask/summon_item(var/new_type)
var/obj/item/new_item = new new_type
diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm
index ee0dfecb4fd..8e6e8da21ff 100644
--- a/code/modules/surgery/limb_reattach.dm
+++ b/code/modules/surgery/limb_reattach.dm
@@ -40,7 +40,7 @@
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/E = tool
- user.visible_message("[user] has attached [target]'s [E.name] to the [E.amputation_point].>", \
+ user.visible_message("[user] has attached [target]'s [E.name] to the [E.amputation_point].", \
"You have attached [target]'s [E.name] to the [E.amputation_point].")
user.drop_from_inventory(E)
E.replaced(target)
diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm
index 82c6ad543c8..d0ba9591117 100644
--- a/code/modules/surgery/other.dm
+++ b/code/modules/surgery/other.dm
@@ -149,6 +149,7 @@
if(container.reagents.has_reagent("peridaxon"))
affected.status &= ~ORGAN_DEAD
+ affected.owner.update_body(1)
user.visible_message("\blue [user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]", \
"\blue You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].")
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 6635753ed92..bede5263e2a 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -166,15 +166,18 @@
if(..())
var/obj/item/stack/cable_coil/C = tool
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- var/limb_can_operate = ((affected && affected.open >= 3) && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH)
- if(limb_can_operate)
- if(istype(C))
- if(!C.get_amount() >= 3)
- user << "You need three or more cable pieces to repair this damage."
- return SURGERY_FAILURE
- C.use(3)
- return 1
- return SURGERY_FAILURE
+
+ var/limb_can_operate = (affected && affected.open == 2 && affected.burn_dam > 0 && target_zone != "mouth")
+
+ if(!limb_can_operate)
+ return 0
+
+ if(istype(C))
+ if(!C.can_use(10))
+ user << "You need ten or more cable pieces to repair this damage." //usage amount made more consistent with regular cable repair
+ return SURGERY_FAILURE
+ C.use(10)
+ return 1
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index cc56b311b59..109da96b697 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -68,7 +68,7 @@
proc/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
return null
-proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/human/user)
+/proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/human/user)
if(!istype(user) || !istype(E)) return
var/germ_level = user.germ_level
@@ -77,7 +77,7 @@ proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
-proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
+/obj/item/proc/do_surgery(mob/living/carbon/M, mob/living/user)
if(!istype(M))
return 0
if (user.a_intent == I_HURT) //check for Hippocratic Oath
@@ -88,18 +88,18 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
return 1
for(var/datum/surgery_step/S in surgery_steps)
//check if tool is right or close enough and if this step is possible
- if(S.tool_quality(tool))
- var/step_is_valid = S.can_use(user, M, zone, tool)
+ if(S.tool_quality(src))
+ var/step_is_valid = S.can_use(user, M, zone, src)
if(step_is_valid && S.is_valid_target(M))
if(step_is_valid == SURGERY_FAILURE) // This is a failure that already has a message for failing.
return 1
M.op_stage.in_progress += zone
- S.begin_step(user, M, zone, tool) //start on it
+ S.begin_step(user, M, zone, src) //start on it
//We had proper tools! (or RNG smiled.) and user did not move or change hands.
- if(prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
- S.end_step(user, M, zone, tool) //finish successfully
- else if ((tool in user.contents) && user.Adjacent(M)) //or
- S.fail_step(user, M, zone, tool) //malpractice~
+ if(prob(S.tool_quality(src)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
+ S.end_step(user, M, zone, src) //finish successfully
+ else if ((src in user.contents) && user.Adjacent(M)) //or
+ S.fail_step(user, M, zone, src) //malpractice~
else // This failing silently was a pain.
user << "You must remain close to your patient to conduct surgery."
M.op_stage.in_progress -= zone // Clear the in-progress flag.
@@ -109,11 +109,11 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
return 1 //don't want to do weapony things after surgery
if (user.a_intent == I_HELP)
- user << "You can't see any useful way to use [tool] on [M]."
+ user << "You can't see any useful way to use [src] on [M]."
return 1
return 0
-proc/sort_surgeries()
+/proc/sort_surgeries()
var/gap = surgery_steps.len
var/swapped = 1
while (gap > 1 || swapped)
diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm
index e01bc6f8520..b50e42acd63 100644
--- a/code/modules/xenobio2/machinery/core_extractor.dm
+++ b/code/modules/xenobio2/machinery/core_extractor.dm
@@ -126,6 +126,7 @@
spawn(30)
icon_state = "scanner_0old"
qdel(occupant)
+ occupant = null //If qdel's being slow or acting up, let's make sure we can't make more cores from this one.
inuse = 0
eject_contents()
update_light_color()
diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm
index f5d124a9f1f..c8bd8d374c9 100644
--- a/code/modules/xenobio2/machinery/gene_manipulators.dm
+++ b/code/modules/xenobio2/machinery/gene_manipulators.dm
@@ -99,6 +99,7 @@
/obj/machinery/xenobio/proc/finished_task()
active = 0
+ in_use = 0
if(failed_task)
failed_task = 0
visible_message("\icon[src] [src] pings unhappily, flashing a red warning light.")
@@ -332,7 +333,7 @@
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
- ui = new(user, src, ui_key, "xenobio_editor.tmpl", "Biological Genetic Bombarder UI", 470, 450)
+ ui = new(user, src, ui_key, "xenobio_editor.tmpl", "biological genetic bombarder UI", 470, 450)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
@@ -375,21 +376,21 @@
/obj/machinery/xenobio/editor/proc/move_into_editor(var/mob/user,var/mob/living/victim)
if(src.occupant)
- user << "The biological genetic bombarder is full, empty it first!"
+ user << "The [src] is full, empty it first!"
return
if(in_use)
- user << "The biological genetic bombarder is locked and running, wait for it to finish."
+ user << "The [src] is locked and running, wait for it to finish."
return
if(!(istype(victim, /mob/living/simple_animal/xeno/slime)) )
- user << "This is not a suitable subject for the biological genetic bombarder!"
+ user << "This is not a suitable subject for the [src]!"
return
- user.visible_message("[user] starts to put [victim] into the biological genetic bombarder!")
+ user.visible_message("[user] starts to put [victim] into the [src]!")
src.add_fingerprint(user)
if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant)
- user.visible_message("[user] stuffs [victim] into the biological genetic bombarder!")
+ user.visible_message("[user] stuffs [victim] into the [src]!")
if(victim.client)
victim.client.perspective = EYE_PERSPECTIVE
victim.client.eye = src
diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm
index a3f88825c53..7b482d5c1d6 100644
--- a/code/modules/xenobio2/machinery/injector.dm
+++ b/code/modules/xenobio2/machinery/injector.dm
@@ -67,19 +67,20 @@
src.occupant = victim
/obj/machinery/xenobio2/manualinjector/proc/eject_contents()
- for(var/obj/thing in (contents - component_parts - circuit - beaker))
- thing.forceMove(loc)
+ eject_xeno()
+ eject_beaker()
+ return
+
+/obj/machinery/xenobio2/manualinjector/proc/eject_xeno()
if(occupant)
occupant.forceMove(loc)
occupant = null
- return
-
+
/obj/machinery/xenobio2/manualinjector/proc/eject_beaker()
if(beaker)
var/obj/item/weapon/reagent_containers/glass/beaker/B = beaker
B.loc = loc
beaker = null
- return
/obj/machinery/xenobio2/manualinjector/proc/inject_reagents()
if(!occupant)
diff --git a/code/modules/xenobio2/machinery/injector_computer.dm b/code/modules/xenobio2/machinery/injector_computer.dm
index f65599e4850..7bcccd55ca8 100644
--- a/code/modules/xenobio2/machinery/injector_computer.dm
+++ b/code/modules/xenobio2/machinery/injector_computer.dm
@@ -99,7 +99,7 @@
injector.inject_reagents()
active = 0
if(href_list["eject_occupant"])
- injector.eject_contents()
+ injector.eject_xeno()
if(href_list["eject_beaker"])
injector.eject_beaker()
diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm
index 3626304bfef..9faa4272b40 100644
--- a/code/modules/xenobio2/machinery/slime_replicator.dm
+++ b/code/modules/xenobio2/machinery/slime_replicator.dm
@@ -73,12 +73,14 @@
icon_state = "restruct_1"
spawn(30)
var/mob/living/simple_animal/xeno/slime/S = new(src)
- S.traitdat = core.traits
+ S.traitdat = new() //New instance, so that if the core is deleted, the slime retains a trait datum.
S.nameVar = core.nameVar
S.name = "[S.nameVar] baby slime"
+ core.traits.copy_traits(S.traitdat)
S.ProcessTraits()
- qdel(core)
spawn(30)
+ qdel(core)
+ core = null //If qdel's being a bit slow or acting up, let's just make sure we can't clone the core.
inuse = 0
eject_slime()
icon_state = "restruct_0"
diff --git a/code/modules/xenobio2/mob/slime/slime procs.dm b/code/modules/xenobio2/mob/slime/slime procs.dm
index adc8f4e5baf..f2ee6013b7f 100644
--- a/code/modules/xenobio2/mob/slime/slime procs.dm
+++ b/code/modules/xenobio2/mob/slime/slime procs.dm
@@ -24,7 +24,23 @@ Slime specific procs go here.
traitdat.traits[TRAIT_XENO_CANLEARN] = prob(68)
traitdat.traits[TRAIT_XENO_SPEED] = round(rand(-10,10))
-
+/mob/living/simple_animal/xeno/slime/RandomChemicals()
+ ..()
+ if(prob(40))
+ var/hasMutToxin
+ for(var/R in traitdat.chems)
+ if(R == "mutationtoxin")
+ hasMutToxin = 1
+ var/chemamount
+ if(hasMutToxin)
+ var/list/chemchoices = (xenoChemList - traitdat.chems)
+
+ var/chemtype = pick(chemchoices)
+ chemamount = rand(1,5)
+ traitdat.chems[chemtype] = chemamount
+ else
+ chemamount = rand(1,5)
+ traitdat.chems["mutationtoxin"] = chemamount
/mob/living/simple_animal/xeno/slime/proc/GrowUp()
GenerateAdult()
diff --git a/code/modules/xenobio2/mob/slime/slime.dm b/code/modules/xenobio2/mob/slime/slime.dm
index b214b346306..65d4ad64d88 100644
--- a/code/modules/xenobio2/mob/slime/slime.dm
+++ b/code/modules/xenobio2/mob/slime/slime.dm
@@ -4,6 +4,7 @@ Slime definitions, Life and New live here.
/mob/living/simple_animal/xeno/slime //Adult values are found here
nameVar = "grey" //When mutated, nameVar might change.
desc = "A shifting, mass of goo."
+ faction = "slime"
speak_emote = list("garbles", "chirps", "blurbles")
colored = 1
color = "#CACACA"
@@ -68,6 +69,7 @@ Slime definitions, Life and New live here.
"toxin" = list("toxic" = 0.5),
"carpotoxin" = list("toxic" = 1, "mut" = 1.5),
"phoron" = list("toxic" = 1.5, "mut" = 0.03),
+ "virusfood" = list("nutr" = 1.5, "mut" = 0.32),
"cyanide" = list("toxic" = 3.5),
"slimejelly" = list("nutr" = 0.5),
"amutationtoxin" = list("toxic" = 0.1, "heal" = 1.5, "mut" = 3),
diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm
index 7b1bf7dfac2..e72f6a4f2bc 100644
--- a/code/modules/xenobio2/mob/xeno.dm
+++ b/code/modules/xenobio2/mob/xeno.dm
@@ -8,6 +8,7 @@ Also includes Life and New
/mob/living/simple_animal/xeno
name = "Xeno"
real_name = "Xeno"
+ faction = "xeno" //Needs to be set.
desc = "Something's broken, yell at someone."
melee_damage_lower = 0
melee_damage_upper = 0
@@ -46,33 +47,32 @@ Also includes Life and New
//Life additions
/mob/living/simple_animal/xeno/Life()
- if(src.stat == DEAD)
- return 0
-
if(stasis)
stasis--
if(stasis < 0)
stasis = 0
return 0
+
..()
- handle_reagents()
- if((mut_level >= mut_max) && !(mutable & NOMUT))
- Mutate()
- mut_level -= mut_max
+ if(!(stat == DEAD))
+ handle_reagents()
+ if((mut_level >= mut_max) && !(mutable & NOMUT))
+ Mutate()
+ mut_level -= mut_max
- ProcessSpeechBuffer()
+ ProcessSpeechBuffer()
- //Have to feed the xenos somehow.
- if(nutrition < 0)
- nutrition = 0
- if((nutrition > 0 ) && traitdat.traits[TRAIT_XENO_EATS])
- if(nutrition >= 300)
- nutrition -= hunger_factor
- else
- if(traitdat.traits[TRAIT_XENO_EATS])
- health = starve_damage
+ //Have to feed the xenos somehow.
+ if(nutrition < 0)
+ nutrition = 0
+ if((nutrition > 0 ) && traitdat.traits[TRAIT_XENO_EATS])
+ if(nutrition >= 300)
+ nutrition -= hunger_factor
+ else
+ if(traitdat.traits[TRAIT_XENO_EATS])
+ health = starve_damage
- return 1 //Everything worked okay.
+ return 1 //Everything worked okay.
/mob/living/simple_animal/xeno/New()
@@ -94,4 +94,8 @@ Also includes Life and New
if(!health)
stat = DEAD
-
\ No newline at end of file
+
+/mob/living/simple_animal/xeno/Destroy()
+ traitdat.Destroy() //Let's clean up after ourselves.
+ traitdat = null
+ ..()
\ No newline at end of file
diff --git a/code/modules/xenobio2/mob/xeno_product.dm b/code/modules/xenobio2/mob/xeno_product.dm
index b084b8eea64..a9989c3c459 100644
--- a/code/modules/xenobio2/mob/xeno_product.dm
+++ b/code/modules/xenobio2/mob/xeno_product.dm
@@ -10,4 +10,9 @@ Xenobiological product lives here as a basic type.
var/source = "Unknown"
var/product = "mess"
var/nameVar = "blah"
+
+/obj/item/xenoproduct/Destroy()
+ traits.Destroy() //Let's not leave any traits hanging around.
+ traits = null
+ ..()
\ No newline at end of file
diff --git a/html/changelog.html b/html/changelog.html
index e5cdf2a7a26..bce4d1d2360 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -53,6 +53,88 @@
-->
+ 15 June 2016
+ Yoshax updated:
+
+ - The categories for items in the cargo ordering console have been reworked. Items shoulw now be in more sensible categories. If you cannot find something, try the sensible category.
+
+
+ 14 June 2016
+ Arokha updated:
+
+ - Adds video-calls on communicators for existing calls
+ - Adds a 'decline' to incoming communicator calls
+ - New wallets that let you color them how you want
+ - Fixes communicators being able to hear speech
+ - Fixes deadcalls to communicators
+ - Fixed dropping head/foot/glove items on limb loss
+ - Suit coolers inside mecha now work
+ - Fixed printing '1' to world over and over
+ - Made mech tracking beacon constructable again
+ - Change how emotes and LOOC propogate to nearby people
+ - Rewrote how get_mobs_and_objs_in_view_fast works
+ - Can now see through the red external airlock doors
+
+ Datraen updated:
+
+ - Adds a chance for slimes to get mutation toxin for creation of prometheans (40%).
+ - Simple animals outside of the hostile subtype won't follow you as a zombie.
+ - Xeno hostility is more apparent now.
+ - Slime cores can no longer create twice as many slimes through an exploit.
+
+ GinjaNinja32 updated:
+
+ - Rewrote drinking glasses. There are now eight types of glass, and drink appearance is based on color and the type of glass you put it in.
+ - There are now 'glass extras' you can add to drinks. Straws, drink sticks, and fruit slices (yes, all of them) all work. You can add up to two extras per glass. Add extras by clicking the glass with the extra, remove by clicking the glass with an empty hand while it's in your other hand.
+ - Adding 'fizzy' things (soda water, cola, etc) or ice to a drink will make it be fizzy or have ice floating in it.
+
+ Yoshax updated:
+
+ - Everything produced in Robotics is now 25% cheaper to produce.
+
+
+ 08 June 2016
+ Yoshax updated:
+
+ - There is now more soap on the map. The chef also gets a dropper.
+ - Changes in gravity now stun for much longer.
+ - Bullets now have a better chance of penetrating objects such as filing cabinets, consoles, fax machines, etc. This applies to all bullets.
+ - The research outpost toxins department now has reinforced phoron windows.
+ - Spears now do their correct damage instead of doing around half.
+
+
+ 07 June 2016
+ Datraen updated:
+
+ - Adds a trait tool for Xenobio2. It was supposed to be in the initial implementation, but fell through the cracks, sorry!
+ - Fixed the xenobio smartfridge not displaying it's starting core amount.
+ - Fixed an inverted check with slimes.
+
+ EmperorJon updated:
+
+ - Increased loadout points from 10 back to 15. We've added so many things like lunchboxes and communicators that everyone just takes by default, so a few more points will be nice.
+
+ JerTheAce updated:
+
+ - Adds a variety of new guns. Some of these guns and and their ammunition are purchasable through antag uplink, cargo, or can be spawned during Renegade or Heist modes.
+ - Adds ammunition clips for reloading magazines and some guns (such as bolt-actions).
+ - All magazines and ammunitions can now be produced with the autolathe.
+ - New bullpup SMG is available in armory area on CentCom level.
+ - Revolvers now use 6 shots. Finally.
+ - Most guns that didn't use magazines before for some reason (such as the Uzi) now use magazines.
+ - All casings now update icons if they have been spent.
+ - Corrects Pulse Rifle charge cost consistency.
+ - Corrects and improves a number of icons for guns, including a couple of energy guns, and adds fallback icons so they do not turn invisible when held or strapped to your back.
+ - Made the icons for some guns look differently depending on what magazine is loaded into them.
+ - Made antag uplink menu for guns and ammo more informative.
+ - Machinegun magazines no longer fit in pockets.
+ - Made names and descriptions for all projectile guns and ammo consistent while removing grammar and spelling errors.
+ - Autolathe no longer exploitable for ammo by repeatedly recycling empty magazines.
+ - Guns now check a list of compatible magazines.
+ - Ranged mobs no longer drop usable .357 casings.
+ - Added a variety of new gun sound effects, and swapped out the old default gun sound.
+
+
30 May 2016
EmperorJon updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index c051458c702..5bd5b1d80c7 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -2343,3 +2343,84 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Includes character preview with toggleable equipment, visible loadout
items, ghost character sprites, and custom colour underwear. Your underwear
will have reset, so you'll need to set it back.
+2016-06-07:
+ Datraen:
+ - rscadd: Adds a trait tool for Xenobio2. It was supposed to be in the initial implementation,
+ but fell through the cracks, sorry!
+ - bugfix: Fixed the xenobio smartfridge not displaying it's starting core amount.
+ - bugfix: Fixed an inverted check with slimes.
+ EmperorJon:
+ - tweak: Increased loadout points from 10 back to 15. We've added so many things
+ like lunchboxes and communicators that everyone just takes by default, so a
+ few more points will be nice.
+ JerTheAce:
+ - rscadd: Adds a variety of new guns. Some of these guns and and their ammunition
+ are purchasable through antag uplink, cargo, or can be spawned during Renegade
+ or Heist modes.
+ - rscadd: Adds ammunition clips for reloading magazines and some guns (such as bolt-actions).
+ - rscadd: All magazines and ammunitions can now be produced with the autolathe.
+ - maptweak: New bullpup SMG is available in armory area on CentCom level.
+ - tweak: Revolvers now use 6 shots. Finally.
+ - tweak: Most guns that didn't use magazines before for some reason (such as the
+ Uzi) now use magazines.
+ - tweak: All casings now update icons if they have been spent.
+ - tweak: Corrects Pulse Rifle charge cost consistency.
+ - tweak: Corrects and improves a number of icons for guns, including a couple of
+ energy guns, and adds fallback icons so they do not turn invisible when held
+ or strapped to your back.
+ - tweak: Made the icons for some guns look differently depending on what magazine
+ is loaded into them.
+ - tweak: Made antag uplink menu for guns and ammo more informative.
+ - tweak: Machinegun magazines no longer fit in pockets.
+ - spellcheck: Made names and descriptions for all projectile guns and ammo consistent
+ while removing grammar and spelling errors.
+ - bugfix: Autolathe no longer exploitable for ammo by repeatedly recycling empty
+ magazines.
+ - bugfix: Guns now check a list of compatible magazines.
+ - bugfix: Ranged mobs no longer drop usable .357 casings.
+ - soundadd: Added a variety of new gun sound effects, and swapped out the old default
+ gun sound.
+2016-06-08:
+ Yoshax:
+ - maptweak: There is now more soap on the map. The chef also gets a dropper.
+ - tweak: Changes in gravity now stun for much longer.
+ - tweak: Bullets now have a better chance of penetrating objects such as filing
+ cabinets, consoles, fax machines, etc. This applies to all bullets.
+ - maptweak: The research outpost toxins department now has reinforced phoron windows.
+ - bugfix: Spears now do their correct damage instead of doing around half.
+2016-06-14:
+ Arokha:
+ - rscadd: Adds video-calls on communicators for existing calls
+ - rscadd: Adds a 'decline' to incoming communicator calls
+ - rscadd: New wallets that let you color them how you want
+ - bugfix: Fixes communicators being able to hear speech
+ - bugfix: Fixes deadcalls to communicators
+ - bugfix: Fixed dropping head/foot/glove items on limb loss
+ - bugfix: Suit coolers inside mecha now work
+ - bugfix: Fixed printing '1' to world over and over
+ - bugfix: Made mech tracking beacon constructable again
+ - tweak: Change how emotes and LOOC propogate to nearby people
+ - tweak: Rewrote how get_mobs_and_objs_in_view_fast works
+ - tweak: Can now see through the red external airlock doors
+ Datraen:
+ - tweak: Adds a chance for slimes to get mutation toxin for creation of prometheans
+ (40%).
+ - bugfix: Simple animals outside of the hostile subtype won't follow you as a zombie.
+ - bugfix: Xeno hostility is more apparent now.
+ - bugfix: Slime cores can no longer create twice as many slimes through an exploit.
+ GinjaNinja32:
+ - rscadd: Rewrote drinking glasses. There are now eight types of glass, and drink
+ appearance is based on color and the type of glass you put it in.
+ - rscadd: There are now 'glass extras' you can add to drinks. Straws, drink sticks,
+ and fruit slices (yes, all of them) all work. You can add up to two extras per
+ glass. Add extras by clicking the glass with the extra, remove by clicking the
+ glass with an empty hand while it's in your other hand.
+ - rscadd: Adding 'fizzy' things (soda water, cola, etc) or ice to a drink will make
+ it be fizzy or have ice floating in it.
+ Yoshax:
+ - tweak: Everything produced in Robotics is now 25% cheaper to produce.
+2016-06-15:
+ Yoshax:
+ - tweak: The categories for items in the cargo ordering console have been reworked.
+ Items shoulw now be in more sensible categories. If you cannot find something,
+ try the sensible category.
diff --git a/html/changelogs/Datraen-Xenobio2Update2.yml b/html/changelogs/Datraen-Xenobio2Update2.yml
deleted file mode 100644
index 7db43469277..00000000000
--- a/html/changelogs/Datraen-Xenobio2Update2.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: Datraen
-
-
-delete-after: True
-
-changes:
- - rscadd: "Adds a trait tool for Xenobio2. It was supposed to be in the initial implementation, but fell through the cracks, sorry!"
- - bugfix: "Fixed the xenobio smartfridge not displaying it's starting core amount."
- - bugfix: "Fixed an inverted check with slimes."
diff --git a/html/changelogs/EmperorJon-05_Jun._Increase_snowflake.yml b/html/changelogs/EmperorJon-05_Jun._Increase_snowflake.yml
deleted file mode 100644
index 43035ad588d..00000000000
--- a/html/changelogs/EmperorJon-05_Jun._Increase_snowflake.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-author: EmperorJon
-
-delete-after: True
-
-changes:
- - tweak: "Increased loadout points from 10 back to 15. We've added so many things like lunchboxes and communicators that everyone just takes by default, so a few more points will be nice."
\ No newline at end of file
diff --git a/html/changelogs/JerTheAce_GunsGunsGuns.yml b/html/changelogs/JerTheAce_GunsGunsGuns.yml
deleted file mode 100644
index 005fd728f1a..00000000000
--- a/html/changelogs/JerTheAce_GunsGunsGuns.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-################################
-# Example Changelog File
-#
-# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
-#
-# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
-# When it is, any changes listed below will disappear.
-#
-# Valid Prefixes:
-# bugfix
-# wip (For works in progress)
-# tweak
-# soundadd
-# sounddel
-# rscadd (general adding of nice things)
-# rscdel (general deleting of nice things)
-# imageadd
-# imagedel
-# maptweak
-# spellcheck (typo fixes)
-# experiment
-#################################
-
-# Your name.
-author: JerTheAce
-
-# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
-delete-after: True
-
-# Any changes you've made. See valid prefix list above.
-# INDENT WITH TWO SPACES. NOT TABS. SPACES.
-# SCREW THIS UP AND IT WON'T WORK.
-# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
-# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
-changes:
- - rscadd: "Adds a variety of new guns. Some of these guns and and their ammunition are purchasable through antag uplink, cargo, or can be spawned during Renegade or Heist modes."
- - rscadd: "Adds ammunition clips for reloading magazines and some guns (such as bolt-actions)."
- - rscadd: "All magazines and ammunitions can now be produced with the autolathe."
- - maptweak: "New bullpup SMG is available in armory area on CentCom level."
- - tweak: "Revolvers now use 6 shots. Finally."
- - tweak: "Most guns that didn't use magazines before for some reason (such as the Uzi) now use magazines."
- - tweak: "All casings now update icons if they have been spent."
- - tweak: "Corrects Pulse Rifle charge cost consistency."
- - tweak: "Corrects and improves a number of icons for guns, including a couple of energy guns, and adds fallback icons so they do not turn invisible when held or strapped to your back."
- - tweak: "Made the icons for some guns look differently depending on what magazine is loaded into them."
- - tweak: "Made antag uplink menu for guns and ammo more informative."
- - tweak: "Machinegun magazines no longer fit in pockets."
- - spellcheck: "Made names and descriptions for all projectile guns and ammo consistent while removing grammar and spelling errors."
- - bugfix: "Autolathe no longer exploitable for ammo by repeatedly recycling empty magazines."
- - bugfix: "Guns now check a list of compatible magazines."
- - bugfix: "Ranged mobs no longer drop usable .357 casings."
- - soundadd: "Added a variety of new gun sound effects, and swapped out the old default gun sound."
diff --git a/html/changelogs/JerTheAce_Prayer.yml b/html/changelogs/JerTheAce_Prayer.yml
new file mode 100644
index 00000000000..e8c82094105
--- /dev/null
+++ b/html/changelogs/JerTheAce_Prayer.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: JerTheAce
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "CentCom Fax, Admin Prayer, and CentCom emergency messages now prompt admins with a pleasing sound effect."
+ - tweak: "Fax machines now sound like fax machines and not polaroid cameras."
diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi
index 4ed82dd5ed2..4f14b81e3e5 100644
Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ
diff --git a/icons/mob/screen_full.dmi b/icons/mob/screen_full.dmi
new file mode 100644
index 00000000000..e84b0546950
Binary files /dev/null and b/icons/mob/screen_full.dmi differ
diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi
new file mode 100644
index 00000000000..cf74d73796c
Binary files /dev/null and b/icons/mob/screen_gen.dmi differ
diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi
index 75d2b5ebf48..e1a2c1c2ae4 100644
Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index cba5ea04cae..2c2e234a3ff 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index 453baecbc04..81ad5fa3914 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index b9190b3f65a..be5e694f228 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/wallet.dmi b/icons/obj/wallet.dmi
new file mode 100644
index 00000000000..101a138156e
Binary files /dev/null and b/icons/obj/wallet.dmi differ
diff --git a/icons/pdrink.dmi b/icons/pdrink.dmi
new file mode 100644
index 00000000000..dbbed71d511
Binary files /dev/null and b/icons/pdrink.dmi differ
diff --git a/icons/turf/overlays.dmi b/icons/turf/overlays.dmi
index a96f6b14bc5..d4dae7101a1 100644
Binary files a/icons/turf/overlays.dmi and b/icons/turf/overlays.dmi differ
diff --git a/maps/polaris-1.dmm b/maps/polaris-1.dmm
index 1bf8dc324ab..9409c47a3ba 100644
--- a/maps/polaris-1.dmm
+++ b/maps/polaris-1.dmm
@@ -516,12 +516,12 @@
"ajV" = (/obj/structure/table/woodentable,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
"ajW" = (/obj/structure/morgue,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"ajX" = (/obj/structure/table/woodentable,/obj/item/weapon/coin/silver,/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/camera/network/civilian{c_tag = "CIV - Recreation Area Fore"; dir = 2},/obj/item/clothing/glasses/threedglasses,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
-"ajY" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/closet/jcloset,/turf/simulated/floor/tiled,/area/janitor)
+"ajY" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"ajZ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/item/weapon/stool/padded,/obj/effect/landmark/start{name = "Janitor"},/turf/simulated/floor/tiled,/area/janitor)
"aka" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/security_starboard)
"akb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/library)
"akc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/library)
-"akd" = (/obj/structure/closet/jcloset,/obj/machinery/alarm{pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/janitor)
+"akd" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/closet/jcloset,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/janitor)
"ake" = (/obj/structure/girder,/turf/simulated/floor,/area/maintenance/pool)
"akf" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Library"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"akg" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/janitor)
@@ -807,7 +807,7 @@
"apA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/medical_emergency_hallway)
"apB" = (/obj/structure/table/reinforced,/obj/item/stack/tile/wood,/turf/simulated/floor/wood,/area/vacant/vacant_site)
"apC" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/quartermaster/delivery)
-"apD" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/wood,/area/vacant/vacant_site)
+"apD" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 4; pixel_y = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/simulated/floor/wood,/area/vacant/vacant_site)
"apE" = (/obj/item/stack/tile/wood,/turf/simulated/floor,/area/vacant/vacant_site)
"apF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/storage/primary)
"apG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/medical_emergency_hallway)
@@ -1010,7 +1010,7 @@
"atv" = (/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/main)
"atw" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/red{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/main)
"atx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/security/main)
-"aty" = (/obj/effect/floor_decal/corner/red{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/item/weapon/storage/box/drinkingglasses,/turf/simulated/floor/tiled,/area/security/main)
+"aty" = (/obj/effect/floor_decal/corner/red{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/item/weapon/storage/box/glasses/square,/turf/simulated/floor/tiled,/area/security/main)
"atz" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/tiled,/area/security/main)
"atA" = (/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/item/weapon/storage/box/donut,/turf/simulated/floor/tiled,/area/security/main)
"atB" = (/obj/effect/floor_decal/corner/red{dir = 5},/obj/machinery/photocopier,/turf/simulated/floor/tiled,/area/security/main)
@@ -1023,7 +1023,7 @@
"atI" = (/obj/structure/table/standard,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/megaphone,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/corner/red/full{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"atJ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"atK" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
-"atL" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/soap,/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
+"atL" = (/obj/structure/closet/jcloset,/obj/machinery/alarm{pixel_y = 22},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/janitor)
"atM" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/structure/urinal{pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"atN" = (/turf/simulated/wall,/area/maintenance/security_starboard)
"atO" = (/obj/item/weapon/stool/padded,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/locker)
@@ -1242,17 +1242,33 @@
"axT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"axU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/table/standard,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/posibrain,/turf/simulated/floor/tiled,/area/assembly/robotics)
"axV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
+"axW" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/holodeck_control)
+"axX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
+"axY" = (/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/obj/structure/table/standard,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
+"axZ" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
+"aya" = (/obj/structure/table/standard,/obj/machinery/light{dir = 8},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled,/area/holodeck_control)
+"ayb" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/purple/diagonal,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
+"ayc" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/camera/network/medbay{c_tag = "MED - Virology Quarantine Starboard"; dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/medical/virology)
"ayd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aye" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"ayf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"ayg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"ayh" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"ayi" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Chapel Access Port"; dir = 2},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
+"ayj" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
+"ayk" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
+"ayl" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/packageWrap,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"aym" = (/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
+"ayn" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
+"ayo" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
"ayp" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/chapel_hallway)
+"ayq" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
"ayr" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"ays" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"ayt" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 28},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"ayu" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"ayv" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
+"ayw" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_3)
"ayx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
"ayy" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/interrogation)
"ayz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/security/interrogation)
@@ -1260,6 +1276,7 @@
"ayB" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/light_switch{pixel_x = 0; pixel_y = -26},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"ayC" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"ayD" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/standard,/obj/machinery/camera/network/security{c_tag = "SEC - Evidence Storage"; dir = 8},/obj/item/weapon/storage/laundry_basket,/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
+"ayE" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4)
"ayF" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
"ayG" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/button/remote/airlock{id = "HoSdoor"; name = "Office Door"; pixel_x = -36; pixel_y = 29},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 30},/obj/machinery/button/remote/blast_door{id = "security_lockdown"; name = "Brig Lockdown"; pixel_x = -36; pixel_y = 39; req_access = list(2)},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hos)
"ayH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
@@ -1304,6 +1321,15 @@
"azu" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"azv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"azw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
+"azx" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9)
+"azy" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10)
+"azz" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_1)
+"azA" = (/obj/structure/table/standard,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_2)
+"azB" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_7)
+"azC" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_8)
+"azD" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
+"azE" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/doublebrown,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
+"azF" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"azG" = (/turf/space,/area/syndicate_station/northwest)
"azH" = (/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"azI" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
@@ -1327,6 +1353,7 @@
"aAa" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/security/riot_control)
"aAb" = (/turf/simulated/floor,/area/security/riot_control)
"aAc" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor,/area/security/riot_control)
+"aAd" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"aAe" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/maintenance/security_starboard)
"aAf" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/security_starboard)
"aAg" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/maintenance/security_starboard)
@@ -1352,7 +1379,14 @@
"aAA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"aAB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
"aAC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway)
+"aAD" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
+"aAE" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
+"aAF" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
+"aAG" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
+"aAH" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
+"aAI" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 5"; dir = 1},/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"aAJ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/chapel)
+"aAK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"aAL" = (/turf/simulated/wall/r_wall,/area/security/armoury)
"aAM" = (/obj/structure/closet/bombclosetsecurity,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aAN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
@@ -1559,6 +1593,7 @@
"aEG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway)
"aEH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor/northleft{name = "Weapons locker"; req_access = list(2)},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aEI" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
+"aEJ" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"aEK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
"aEL" = (/obj/machinery/computer/security{pixel_y = 0},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
"aEM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/warden)
@@ -1598,7 +1633,9 @@
"aFu" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
"aFv" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
"aFw" = (/obj/machinery/computer/arcade,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
+"aFx" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"aFy" = (/obj/structure/table/woodentable,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/item/device/paicard,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
+"aFz" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"aFA" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area)
"aFB" = (/obj/structure/closet/athletic_mixed,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
"aFC" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
@@ -1616,6 +1653,7 @@
"aFO" = (/obj/machinery/door/blast/regular{id = "Armoury"; name = "Emergency Access"},/turf/simulated/floor/tiled,/area/security/armoury)
"aFP" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/security/brig)
"aFQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/security/brig)
+"aFR" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"aFS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden)
"aFT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/warden)
"aFU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/security/warden)
@@ -1647,6 +1685,7 @@
"aGu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/maintenance/security_starboard)
"aGv" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/janitor)
"aGw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/brig)
+"aGx" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"aGy" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aGz" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aGA" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/lawoffice)
@@ -1713,7 +1752,9 @@
"aHJ" = (/obj/machinery/flasher{id = "Cell 3"; pixel_x = -28; pixel_y = 0},/obj/structure/bed/padded,/turf/simulated/floor/tiled,/area/security/prison)
"aHK" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera/network/prison{c_tag = "SEC - Brig Cell 3"; dir = 8},/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/tiled,/area/security/prison)
"aHL" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/maintenance/security_starboard)
+"aHM" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"aHN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/security_starboard)
+"aHO" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"aHP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/janitor)
"aHQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/janitor)
"aHR" = (/obj/machinery/light_switch{pixel_x = 34; pixel_y = 1},/obj/machinery/button/remote/blast_door{id = "janitor_blast"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Custodial Closet"; dir = 9},/turf/simulated/floor/tiled,/area/janitor)
@@ -1777,6 +1818,7 @@
"aIX" = (/obj/machinery/door/blast/regular{dir = 1; id = "Cell 3"; name = "Cell Door"},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/prison)
"aIY" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/security_starboard)
"aIZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor,/area/maintenance/security_starboard)
+"aJa" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"aJb" = (/turf/simulated/floor/tiled,/area/janitor)
"aJc" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/janitor)
"aJd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/janitor)
@@ -1810,6 +1852,7 @@
"aJF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/cryopod{density = 0; layer = 3.3; pixel_y = 32},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
"aJG" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aJH" = (/obj/effect/floor_decal/corner/red{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
+"aJI" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"aJJ" = (/turf/simulated/wall/r_wall,/area/security/range)
"aJK" = (/turf/simulated/wall,/area/security/range)
"aJL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/range)
@@ -1828,6 +1871,7 @@
"aJY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "visitdoor"; name = "Visitation Area"; req_access = list(63)},/turf/simulated/floor/tiled,/area/security/prison)
"aJZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/turf/simulated/floor/tiled,/area/security/prison)
"aKa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/turf/simulated/floor/tiled,/area/security/prison)
+"aKb" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"aKc" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/computer/arcade,/turf/simulated/floor/tiled,/area/security/prison)
"aKd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/prison)
"aKe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/prison)
@@ -1839,7 +1883,10 @@
"aKk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/prison)
"aKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/security_starboard)
"aKm" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor)
+"aKn" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"aKo" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/janitor)
+"aKp" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
+"aKq" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"aKr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/lawoffice)
"aKs" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/lawoffice)
"aKt" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/weapon/material/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/tiled/dark,/area/lawoffice)
@@ -1854,6 +1901,9 @@
"aKC" = (/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool)
"aKD" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool)
"aKE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
+"aKF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
+"aKG" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
+"aKH" = (/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
"aKI" = (/turf/simulated/floor/tiled,/area/security/range)
"aKJ" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/security/range)
"aKK" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
@@ -1891,7 +1941,11 @@
"aLq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/security_starboard)
"aLr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access = list(26)},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/janitor)
"aLs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/janitor)
+"aLt" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
+"aLu" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
+"aLv" = (/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"aLw" = (/obj/item/weapon/stool/padded,/obj/effect/landmark/start{name = "Janitor"},/turf/simulated/floor/tiled,/area/janitor)
+"aLx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"aLy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aLz" = (/obj/machinery/button/remote/blast_door{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -34; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Internal Affairs"; dir = 5},/turf/simulated/floor/tiled/dark,/area/lawoffice)
"aLA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/lawoffice)
@@ -2157,12 +2211,9 @@
"aQQ" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Art Storage"; dir = 8},/turf/simulated/floor/tiled,/area/storage/art)
"aQR" = (/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft)
"aQS" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/tiled/dark,/area/lawoffice)
-"aQT" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/holodeck_control)
"aQU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aQV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
"aQW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
-"aQX" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
-"aQY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aRa" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom)
"aRb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool)
"aRc" = (/obj/effect/floor_decal/spline/plain{dir = 10},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool)
@@ -2812,7 +2863,7 @@
"bdB" = (/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass,/area/hydroponics/garden)
"bdC" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/tiled,/area/hydroponics/garden)
"bdD" = (/obj/structure/table/marble,/obj/machinery/door/firedoor/border_only,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (EAST)"; icon_state = "register_idle"; dir = 4},/obj/machinery/door/blast/shutters{dir = 8; id = "coffeeshop"; layer = 3.1; name = "Cafe Shutters"},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop)
-"bdE" = (/obj/structure/table/marble,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 8; pixel_y = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop)
+"bdE" = (/obj/structure/table/marble,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop)
"bdF" = (/obj/structure/cable/green,/obj/structure/flora/pottedplant,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bdG" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bdH" = (/obj/machinery/camera/network/northern_star{c_tag = "Hall - Recreation Aft"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
@@ -3271,7 +3322,7 @@
"bmw" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor/tiled/dark,/area/server)
"bmx" = (/obj/effect/floor_decal/corner/purple{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bmy" = (/obj/effect/floor_decal/corner/purple,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/white,/area/rnd/research)
-"bmz" = (/obj/structure/table/standard,/obj/structure/noticeboard{pixel_y = 28},/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 4; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Break Room Emergency Phone"},/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/drinkingglasses,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
+"bmz" = (/obj/structure/table/standard,/obj/structure/noticeboard{pixel_y = 28},/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 4; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Break Room Emergency Phone"},/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/box/glasses/square,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bmA" = (/obj/effect/floor_decal/corner/purple/diagonal,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
"bmB" = (/obj/effect/floor_decal/corner/purple/diagonal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
"bmC" = (/obj/structure/closet/wardrobe/science_white,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/purple/diagonal,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
@@ -3350,7 +3401,6 @@
"bnX" = (/obj/structure/bed/chair/comfy/purp{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/wood,/area/rnd/research)
"bnY" = (/obj/structure/table/glass,/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/rnd/research)
"bnZ" = (/obj/structure/bed/chair/comfy/purp{dir = 8},/turf/simulated/floor/wood,/area/rnd/research)
-"boa" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/purple/diagonal,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/item/weapon/soap,/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
"bob" = (/obj/effect/floor_decal/corner/purple/diagonal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
"boc" = (/obj/structure/undies_wardrobe,/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/white,/area/rnd/research_restroom)
"bod" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/rnd/lab)
@@ -3486,7 +3536,6 @@
"bqE" = (/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bqF" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/medical/virology)
"bqG" = (/obj/effect/floor_decal/corner/lime{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/virology)
-"bqH" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/camera/network/medbay{c_tag = "MED - Virology Quarantine Starboard"; dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bqI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/airless,/area/maintenance/disposal)
"bqJ" = (/obj/machinery/computer/shuttle_control/research{name = "research elevator control console"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bqK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
@@ -3685,8 +3734,6 @@
"bux" = (/obj/structure/table/standard,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"buy" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"buz" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_y = 0},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
-"buA" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
-"buB" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"buC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay_primary_storage)
"buD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"buE" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -4671,7 +4718,6 @@
"bNC" = (/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
"bND" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bNE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
-"bNF" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/packageWrap,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bNG" = (/obj/structure/table/woodentable,/obj/machinery/light,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop)
"bNH" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bNI" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
@@ -4877,7 +4923,6 @@
"bRC" = (/obj/machinery/door/airlock{name = "Private Restroom"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain)
"bRD" = (/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain)
"bRE" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain)
-"bRF" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/device/retail_scanner/civilian,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bRG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bRH" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light,/obj/machinery/button/remote/blast_door{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access = list(28)},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"bRI" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
@@ -6284,18 +6329,14 @@
"cte" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"ctf" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
"ctg" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
-"cth" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
"cti" = (/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"ctj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"ctk" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
"ctl" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
"ctm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator)
"ctn" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"cto" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
-"ctp" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"ctq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"ctr" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
-"cts" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"ctt" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"ctu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
"ctv" = (/obj/structure/table/standard,/obj/item/weapon/tape_roll,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled,/area/quartermaster/office)
@@ -6350,7 +6391,6 @@
"cus" = (/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cut" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atm{pixel_y = 30},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cuu" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
-"cuv" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
"cuy" = (/obj/effect/floor_decal/corner/lime{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor/tiled,/area/hydroponics)
"cuz" = (/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
@@ -6359,9 +6399,7 @@
"cuC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
"cuD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
"cuE" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
-"cuF" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"cuG" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
-"cuH" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cuI" = (/obj/item/frame/light,/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cuJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"cuL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
@@ -6370,7 +6408,6 @@
"cuO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"cuP" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"cuQ" = (/obj/structure/closet/secure_closet/personal,/obj/item/clothing/head/kitty,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
-"cuR" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cuS" = (/turf/simulated/wall,/area/quartermaster/storage)
"cuT" = (/obj/structure/curtain/open/shower,/obj/machinery/door/window/southright{name = "Shower"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
"cuU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -6401,20 +6438,16 @@
"cvt" = (/obj/machinery/atm{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge)
"cvu" = (/obj/structure/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"cvv" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering Break Room"; req_one_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/break_room)
-"cvw" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cvx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cvy" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5)
"cvA" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cvB" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6)
-"cvC" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"cvD" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
-"cvE" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cvF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cvG" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11)
"cvH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cvI" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cvJ" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12)
-"cvK" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cvL" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12)
"cvM" = (/turf/space,/area/supply/station)
"cvN" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Port Primary 1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port)
@@ -6530,7 +6563,6 @@
"cxU" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cxV" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cxW" = (/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"; req_one_access = list(5,10,63)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
-"cxX" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 5"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cxY" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cxZ" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"cya" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
@@ -6648,21 +6680,17 @@
"cAi" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_3)
"cAj" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_3)
"cAk" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
-"cAl" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_3)
"cAm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cAn" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cAo" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_4)
-"cAp" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4)
"cAq" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
"cAr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/qm)
"cAs" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_9)
"cAt" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9)
"cAu" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
-"cAv" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9)
"cAw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cAx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cAy" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_10)
-"cAz" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10)
"cAA" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10)
"cAB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"cAC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -6740,24 +6768,16 @@
"cBW" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor,/area/maintenance/bar)
"cBX" = (/obj/structure/table/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/bar)
"cBY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/virology)
-"cBZ" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
-"cCa" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"cCb" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3)
"cCc" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4)
"cCd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cCe" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4)
"cCf" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
-"cCg" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
-"cCh" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
-"cCi" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
-"cCj" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cCk" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
"cCl" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9)
"cCm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cCn" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10)
"cCo" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
-"cCp" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
-"cCq" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10)
"cCr" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"cCs" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Bay Starboard"; dir = 8; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"cCt" = (/turf/simulated/wall,/area/quartermaster/warehouse)
@@ -7026,7 +7046,6 @@
"cHy" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_1)
"cHz" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_1)
"cHA" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4)
-"cHB" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_1)
"cHC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cHD" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cHE" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_2)
@@ -7036,11 +7055,9 @@
"cHI" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_7)
"cHJ" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/southright{name = "Shower"},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_7)
"cHK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9)
-"cHL" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_7)
"cHM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cHN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"cHO" = (/turf/simulated/wall,/area/crew_quarters/sleep/vistor_room_8)
-"cHP" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_8)
"cHQ" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_8)
"cHR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"cHS" = (/obj/machinery/door/firedoor/border_only,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
@@ -7167,7 +7184,6 @@
"cKj" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/monitoring)
"cKk" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"cKl" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
-"cKm" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/item/weapon/soap,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"cKn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"cKo" = (/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northleft{name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/engineering,/obj/structure/window/basic{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"cKp" = (/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northright{dir = 1; name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/engineering,/obj/structure/window/basic{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
@@ -7204,7 +7220,6 @@
"cKU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Room 1"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_1)
"cKV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Room 2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"cKW" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_2)
-"cKX" = (/obj/structure/table/standard,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_2)
"cKY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"cKZ" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
"cLa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_2)
@@ -7715,7 +7730,7 @@
"cUW" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUX" = (/obj/machinery/pipedispenser,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cUY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/visitor_lodging)
-"cUZ" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/structure/table/reinforced,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/turf/simulated/floor/tiled,/area/engineering/break_room)
+"cUZ" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/structure/table/reinforced,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/turf/simulated/floor/tiled,/area/engineering/break_room)
"cVa" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/engineering/break_room)
"cVb" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/corner/white{tag = "icon-corner_white (NORTH)"; icon_state = "corner_white"; dir = 1},/obj/effect/floor_decal/corner/blue{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/tiled,/area/engineering/foyer)
"cVc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/foyer)
@@ -9530,7 +9545,6 @@
"dEJ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
"dEK" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage)
"dEL" = (/turf/simulated/mineral,/area/mine/explored/upper_level)
-"dEM" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5)
"dEN" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6)
"dEO" = (/turf/simulated/wall,/area/medical/first_aid_station_starboard)
"dEP" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11)
@@ -9742,7 +9756,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyahyahyahyahyahyahyamuaqMapZapZaqNaqOaqPaqQaqQaqRaqSaqTaqUaqVaqWaqXaqYaLqaLqaLqaLqaLqaLqaLqaLqafhaeZafkafjafxafnafzafyafxafAafOafCagbapwanraahagHagcaiAagUagPagQaeQagSagUaizaiyagdagHagHagHagHagHaahaahapzagiagearparoagnagjagoaaNaahaahakzaqFaqGaqHaqIaqJaqKaqGaqHaqFakzakzanZanZaqLanZanZanZanZanZanZanZanZanZanZaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyahyahyahyahyahyahyahyamuarParQarRarSarTarUarVarWarXarYarZasaasbascasdamuayZagpagrayZayZagsayZayZauNayZanransansansansagIansansagOagJasrapwanraahagHagWahUagUagPagUagTagUagUaiyagUagUaiOaiNaiMaiMagHaahaahapzassagXasuapzagYabZagZaaNaahaahakzarEarFarGarHarIarJarKarLarMakzaahaahanZahiahhahhahhahhahhahkahjanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyasGasGasGasHasIasJasIasKasGasGamuasLasLasMasNasOasPasNasLasLamuamuamuamuamuamuasLasQasRasRasRasRasRatNayZauNatNanranraqkaqkanranranranransahlahmanranraahagHajiajiagUagPagUahnajeajeajfajeajeajdahpajbahuagHaahaahdEOdEOdEOdEOapzahvabSafwaaNaaNaahakzaqFaqFaqFaqIaqJaqKaqFaqFaqFakzaahaahanZaAJarOanZanZanZanZaAJarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiatiatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzatAatBatCatDatEatFatGatHatIasQatJatKatLatMasRatNatNahwatNahxanranranranraahaahanrahzatQatRanraeAaahagHagUagUagUahBajzahCagUagUajwagUagUaiOajvajuahDagHaahdEOdEOahHahGahJahIagaabEahLahKaaNaahakzamfatganQaqIaqJaqKatganQathakzaahamXamXamXamXamXanyanxanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiatiatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzatAatBatCatDatEatFatGatHatIasQatJatKajYatMasRatNatNahwatNahxanranranranraahaahanrahzatQatRanraeAaahagHagUagUagUahBajzahCagUagUajwagUagUaiOajvajuahDagHaahdEOdEOahHahGahJahIagaabEahLahKaaNaahakzamfatganQaqIaqJaqKatganQathakzaahamXamXamXamXamXanyanxanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyatiatiauiaujaukaulaumaunauoaupauqaurausautauuauvauwauxauyauzauAauBauCauBauDauEauFauGauHauGauIasQauJauKauLauMasRaahatNauNatNatNanraahaahaahaahaahanrasTauOasranraahaahagHajUahNahMahWahRahXagUagUajNajMajLagHajKajJagHagHaahdEOahYaibahZaigaicaikaihafwaimaaNaahakzaqFaufaugaqIaqJaqKauhaugaqFakzaahamXaoxanzanzaoyaozanzapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahyahyahyahyahyatiauXauYauZatiavaavbavcavdaveavdavfavfavgavhaviavjavkavfavlavmavnavoavpavqatDavravsavtavuavvavwavxavyavzavAasRaahatNavBatNaahaahaahaahaahaahaahanrasTauOasranraahaahagHagHakbakcagHainahXagUagHakbakcagHagHagHagHagHahyahydEOaioaOqaipairaiqabYafvafwaisaaNaahakzauSauTakzauUauVauWakzauSauTakzaahamXaitanzanzapBaiuapDapEanZaixanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaxsaxsaxsaxsaxsaxsaxsaxsaahatiavKavLavMatiavNavOavdavdavPavQavfavRavSavTavUavTavVavWavXavYavZawaawbawcawdaweaweawfaweawgasQawhawiasRawjasRaahatNauNatNaahaahaahaahaahaahanranrawkaiBawmanranrahyahyahyahyahyagHaiCaiDakfagHahyahyahyaahaahaahahyahyahydEOaiEaiGaiFdEOaaNaiIaiHaiJaaNaaNahyahyahyahyaiKavHavIavJaiKahyahyahyaahamXanwanzanzaquaquaquapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9755,8 +9769,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALdFKaDxaJGdFLdFNdFMdFPdFOaALaCvaCwaCxaCyaCzazHaCAaCBaCCaCDaCEaCFaCGaCHaCIaCJaCKaCLaCMaCNaCNaCOaCPaCQaCRaCSaCTaCUaCVaCWaCXaCYaCZaDadEhaDbaDcaJFdEiaDfaJHaDhaDiaDjaAeaDkaDlauNatNdpJayZayZayZayZayZayZaFmaxlaxmaxdavCahyahyahyahyahyahyahyaCjaDmaDnaCjahyahyahyahyahyahyahyahyaahaahaahaahaahaDoaDpaDqaDraDsaClaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDtaDuaDvaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALdFQaDxaGVdFRdFSdFRdFTaDxaDyazHaDzaDAaDBazHazHaDCaBGaBGaDDaBGaDEaDGaDHaDIaDJaDKaDLaDMaDNaDOazMaDPaDQaDRaBVaDSaDTaDUaDVaDWaDXaDYaDZaEaaEbaEcaEdaEaaEeaEfaEgaEhaEiaEjaEkaElaEmatNayZayZdqFaFmaFmaFmaFmaFmaxlaxmaEnavCahyahyahyahyahyahyahyaCjaEoaDnaCjahyahyahyahyahyahyahyahyahyahyaahaahaahaEpaEtaEraEsaGyaClaEuaEuaEuaEuaEuaEuaEuaEuaEuaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEwaExaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaALaALaALdFUaDxaDxaDxaDxdFVaEBaALaECaEDaEEaEFdFWaEHaEFaEIaEzaDDaDFaELaEMaENaEOaEPaEQaERaESaETaEUazMaBVaEVaBVaEWaEXaEYaEZaFaaFbaFcaFdaFaaFeaFfaFeaFaaFeaFgaFeaFhayPaFiatNaFjaFkaFlatNdANdqFaFmaFmaGvajSajTaFmaFnaxcaxdaFoaFoaFoaFoaFoahyahyahyaCjaDmaCjaCjahyahyahyahyahyahyahyahyahyahyahyaahaahaFpaFqaFraFsaFtaClaFuaFvaFwajVaFyajXaLgaFAaFuaEvaFBaFBaFCaFDaFEaFFaFGaFFaFHaFDaFCaFIaEvaDtaFJaYeaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaALaALaALaALbaDaPwbfbaDxdGaaFNaFOaFPaCIaFQaEFaECaEKaEFaFSaFTaFUaFVaFWaFXaFYaFZazMaGaaGbaGcaGdaGeazMaGfaGgaGhaGiaGjaGkaGlaFaaGmaGnaGoaFaaGpaGqaGraFaaGpaGnaGraFhaahaahatNaGsaGtaGuatNayZaFmaFmajYaHPajZaLwaKwaxlaxmaGzaFoaGAaGBaGCaFoaFoahyahyaCjaDmaCjahyahyaGDaGDaGEaGFaGFaGFaGGaGFaGFaGFaGFaGHaGDaGIaGJaGKaGLaClaFKaGNaGOaGNaGPaGNaGOaGNaGQaEvaGRaGSaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGTaDtaFJaYdaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALaALaALaALdGbdGcaGZaHaaHbaHcaHdaHeaHfaGwaHhaHiaHjaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHlaHuaHvaHwaHxaHyaHzaHAaHBaHCaFaaHDaHEaHFaFaaHGaHHaHIaFaaHJaHEaHKaFhaahaahatNaHLakaaHNatNayZaFmakdaJbaHPaHQaHRaFmaHSaxmaxdaFoaHTaHUaHVaHWaFoaFoahyaCjaDmaCjahyahyaGDaHXaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaIaaIbaIcaIdaClaIeaGNaGNaIfaIgaIhaGNaGNaIiaEvaGRaIjaIkaIkaIkaIkaIkaIkaIkaIkaIkaIlaGRaDtaFJdGHakedBlaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaALaALaALaALbaDaPwbfbaDxdGaaFNaFOaFPaCIaFQaEFaECaEKaEFaFSaFTaFUaFVaFWaFXaFYaFZazMaGaaGbaGcaGdaGeazMaGfaGgaGhaGiaGjaGkaGlaFaaGmaGnaGoaFaaGpaGqaGraFaaGpaGnaGraFhaahaahatNaGsaGtaGuatNayZaFmaFmakdaHPajZaLwaKwaxlaxmaGzaFoaGAaGBaGCaFoaFoahyahyaCjaDmaCjahyahyaGDaGDaGEaGFaGFaGFaGGaGFaGFaGFaGFaGHaGDaGIaGJaGKaGLaClaFKaGNaGOaGNaGPaGNaGOaGNaGQaEvaGRaGSaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGTaDtaFJaYdaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALaALaALaALdGbdGcaGZaHaaHbaHcaHdaHeaHfaGwaHhaHiaHjaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHlaHuaHvaHwaHxaHyaHzaHAaHBaHCaFaaHDaHEaHFaFaaHGaHHaHIaFaaHJaHEaHKaFhaahaahatNaHLakaaHNatNayZaFmatLaJbaHPaHQaHRaFmaHSaxmaxdaFoaHTaHUaHVaHWaFoaFoahyaCjaDmaCjahyahyaGDaHXaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaIaaIbaIcaIdaClaIeaGNaGNaIfaIgaIhaGNaGNaIiaEvaGRaIjaIkaIkaIkaIkaIkaIkaIkaIkaIkaIlaGRaDtaFJdGHakedBlaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGedGddGfaDxdGadGgaIraIsaItaIuaIvaIwaHgaIyaIzaIAaIBaICaIDaIEaIFaIGaIHaIIaIHaIJaIKaILaIMaINaIOaBXaIPaIQaGkaIRaFaaISaITaIUaFaaIVaIWaIVaFaaIVaIXaIVaFhaahaahatNaIYaIZaHNatNaFmaFmakgaJbaJcaJdaJeaJfaJgaJhaJiaJjaJkaJlaJmaJnaJoaFoahyaCjaDmaCjahyahyaGDaJpaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaJraFraFsaQkaClaJsaGNaJtaJuaJvaJwaJxaGNaJyaEvaJzaJAaJBaJCaJCaJCaJCaJCaJCaJCaJDaGRaJEaDtaFJdBtaVCaVCdGIdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGhaGVdFRdFRdFRdGjdGiaALaJJaJKaJKaJKaJLaJMaJKaJNaJKaJOaJPaJKaJQaJRaJSaJTaJQaJUaJVaJWaFaaJXaJYaFaaJZaKaaFabnNaFaaFaaKcaKdaKeaKfaKgaKhbjdaKjaKiaKdaKkaFhaFhaahatNatNaKlaLpaLqaLraLsakiaJbaJbakjakkaFmaxlaxmaxdaKraJkaKsaKtaJkaKuaFoahyaCjaDmaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaIbaIcaLJaDoaKyaGNaJtaJuaJvaJwaJxaGNaLKaKzaKAaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaFJaVCaDtdGIaVCdGKaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGkaDxaDxaDxaDxaDxdFPbqpaALaJJaKIaKIaKJaKIaKKaKLaKMaKNaKOaKPaKQaJQaKRaKSaKTaKUaKVaKWaKXaFaaKYaKZaFaaLaaLbaLcaLdaLeaLfboJaLhaLiaLjaLkaLlboJaLmaLmaLmaLmaLnaFhaahaahatNaLoaHNayZaKmaklaknakmakpakoaKoaFmaLyaxmaxdaFoaLzaLAaJkaJkaLBaFoahyaCjaLCaLDaGDaLEaLFaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaLIaIbaIcaLJaFpakqaLLaLLaLMaLNaLOaLLaLLaLLaLQaLRaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaFJaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9764,8 +9778,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGmaDxaDxdGqdGraDxdFPdGsaALaJJaNcaNdaNeaNeaNeaNfaNgaNhaNiaNjaNkaNlaNmaNnaNoaNpaNqaNraNsaFaaNtaNuaFaaNvaNwaFaaNxaNyaFaaLmaNzaNAaNBaNCaNDaNEaNFaNEaLmaNGaFhaFhaahaahatNaNHaNIatNaahaNJaNKaNLaNMaNNaNOaNPaxlaxmawnaFoaNQaNRaJkaJkaNSaFoahyaCjaNTaNUaNVaNWaNXaNYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaMIaLIaNZaOaaObaOcaOdaOdaOdaOeaOdaOfaOdaOgaOdaOhaOiaOjaKBaKCaKCaOkaOlaOmaKCaKCaKDaGRaOnaDtaOoaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALdGtaDxaJGaDxaDxaDxdGvdGuaALaJJaLUaOvaOwaOwaOxaOyaOzaOAaOBaOCaODaOEaOFaMdaOGaOHaKSaOIaOJaOKaOLaOMaFaaONaOOaOPaLmaLmaOQaLmaORaFhaOSaOTaOTaOUaFaaFaaOVaFaaFaaahaahaahatNatNaNIatNaahaNJaOWaOXaOYaOZaOXaPaaxlaxmawnaJjaJkaPbaPcaJkaKuaFoahyaCjaPdakraGDaPfaPgaLGaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHZaPhaLIaIcaPiaPjaPlaPlaPlaPmaPnaPoaPlaPpaPlaPraPsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaJEaDtaPtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALdGwaDxaDxaDxaDxaDxaALaALaJJaKIaPxaKIaKIaKIaPyaPzaPAaPBaPCaPDaJQaKVaPEaPFaPFaPFaPGaPHaPIaPJaPKaPLaPMaPNaPOaPNaPPaPQaPNaPRaPSaKxaPUaPTaPWaFaaPXaPYdGLaFaaahaahaahaahatNaHNatNaahaNJaQaaOXaQbaQcaQdaQeaQfaQgaQhaKraJkaQiaJmaJnaQjaFoahyaCjaPdaCjaGDaGDaGDaGDaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaKvaLIaIcaQmaQlaLPaQnaQnaQoaQnaQnaQpaQqaPkaLQaQsaJAaKBaKCaKCaKCaKCaKCaKCaKCaKDaGRaKEaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALbtpbtobtobtraALaALaahaJJaJJaPxaKIaQtaQuaQvaLXaQwaQxaQyaQzaJQaQAaQBaQCaKSaQCaQDaQEaFhaFhaFhaFhaQFboJaQGaQHaQHaMtaLmaQIaQJaPNaPPaQKaQLaFaaQMaPYaQNaFaaahaahaahaahatNaHNatNaahaNJaNJaQOaOXaQPaQQaNPawnaxmaQRaFoaJkaJkaHVaQSaFoaFoahyaCjaPdaCjaahaahaGDaQTaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaQUaQVaDraQWaClaQnaQnaQXaQYaYSaQnaQnaRaaQnaQnaRbaJAaRcaRdaRdaRdaRdaRdaRdaRdaReaGRaJEaDtaFJaksaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahahyaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaahaahaahaALaALaALaALaALaALaALaALaahaahaRgaRhaRgaRgaJJaJJaJJaJJaJJaJJaJJaRiaRiaRiaPqaRkaPqaRiaRiaRiaahaahaFhaFhaRlaRmaPVaRoaRpaRqaRraPSaKxaRsaRnaRuaFhaFaaFaaRvaFaaahaahaahatNatNaHNatNaahaahaNJaNJaRwaRxaRyaPaawnaxmaRzaFoaRAaRBaGCaFoaFoahyahyaCjaPdaCjaahaahaGDaHXaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaIaaLIaIcaRCaClbZuaREaRFaRGaYSaQnaRHaRGaRIaQnaRbaRJaRKaRKaRKaRKaRKaRKaRKaRKaRKaRLaGRaRMaFJdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaALaALaALbtpbtobtobtraALaALaahaJJaJJaPxaKIaQtaQuaQvaLXaQwaQxaQyaQzaJQaQAaQBaQCaKSaQCaQDaQEaFhaFhaFhaFhaQFboJaQGaQHaQHaMtaLmaQIaQJaPNaPPaQKaQLaFaaQMaPYaQNaFaaahaahaahaahatNaHNatNaahaNJaNJaQOaOXaQPaQQaNPawnaxmaQRaFoaJkaJkaHVaQSaFoaFoahyaCjaPdaCjaahaahaGDaxWaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaJqaQUaQVaDraQWaClaQnaQnaxYaxXaxZaQnaQnaRaaQnaQnaRbaJAaRcaRdaRdaRdaRdaRdaRdaRdaReaGRaJEaDtaFJaksaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahahyaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaRfaahaahaahaALaALaALaALaALaALaALaALaahaahaRgaRhaRgaRgaJJaJJaJJaJJaJJaJJaJJaRiaRiaRiaPqaRkaPqaRiaRiaRiaahaahaFhaFhaRlaRmaPVaRoaRpaRqaRraPSaKxaRsaRnaRuaFhaFaaFaaRvaFaaahaahaahatNatNaHNatNaahaahaNJaNJaRwaRxaRyaPaawnaxmaRzaFoaRAaRBaGCaFoaFoahyahyaCjaPdaCjaahaahaGDayaaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaLHaIaaLIaIcaRCaClbZuaREaRFaRGaYSaQnaRHaRGaRIaQnaRbaRJaRKaRKaRKaRKaRKaRKaRKaRKaRKaRLaGRaRMaFJdGJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaRPaRPaRPaRPaRPaRPaRPaRPaRQaRfaahaahaahaahaALaALaALaALaALaALaahaahaahaRgaRRaRSaRTahyahyahyahyahyahyahyahyahyaRUaRVaRVaRVaRUahyahyaahaahaahaFhaFhaRWaRXaRXaRYaFhaFhaFhaFhaFhaFhaFhaFhaahaFaaRZaFaaahaahaahatNaSaaSbatNaahaahahyaNJaNJaNJaNJaNJaScaSdawnaFoaFoaFoaFoaFoahyahyahyaCjaPdaCjaCjaahaGDaGDaGEaGFaGFaGFaSeaGFaGFaGFaGFaGHaGDaGIaSfaGKaGLaClaQnaQnaSgaShaSiaSjaSkaSlaSmaSjaRbaSnaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaGRaDtaFJaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaROaRPaSoaSpaSqaSraSsaStaSoaSuaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaSxaSxaSxaSxaSyaSzaRTahyahyahyahyahyahyahyahyahyaSAaSBaSCaSDaSAahyahyaahaahaahaahahyahyahyahyahyahyahyahyahyahyahyaahaahaahaFaaFaaFaaahaahaahatNaSEaSFatNaahaahahyahyahyahyahyaSGawnaxmawnaSGahyahyahyahyahyahyahyaCjaSHaSIaCjaahaahahyahyahyahyahyahyahyahyahyahyahyaDoaFqaSJaFsaFtaClaRDaSKaSLaSMaSNaQnaRHaSOaRIaQnaSPaGRaFCaSQaSRaFFaSSaFFaSTaSQaFCaSUaEvaDtaOoaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSVaSWaSXaSXaSXaSXaSXaSXaSXaSYaSvaSwaRfaahaahaahaahaahaahaahaahaahaSxaSZaTaaTbaTcaTdaTeaRTahyahyahyaTfaTgaThaTiaTfahyaTjaTkaTlaTkaTjahyahyaahaahaahaahaahahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahatNaHNaTmatNaahaahahyahyahyahyahyaTnawnaxmawnaTnahyaToaTpaTqaTraToahyaCjaPdaDnaCjaahaahahyahyahyahyahyahyahyahyahyahyahyaEpbdHaLIaIcaLJaClaQnaQnaQnaQnaQnaQnaQnaQnaQnaQnaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaEvaTtaOoaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9790,11 +9804,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahbilbjybjzbjAbjBbjCbjDbjEbilbjFbjGbjHbjIbjJbjKbjLbhobjMbjNbjObjPbhoaahaahaahahyahyahyahyahyahybaibjQbjRbjSbhrbecbjTbjUbjVbgwbhubefaahaahaahaahbjWbjWbjWbjWbjXbjWbjWbjWbjWaahaahaahaZdbjYaZHaZdahybcybaUdCFbbGbbGbbGbbGdCGbjZbhAbhAbhAbkadCFbbGbbGbbGbkbbbGbbGbkcaZibkdaYGbetaUwbkeaToaahbeZbkfbkgblRbeZbfhbfhbfhbfhbkibfhbALbkkbklbgYbkmbknbkobkpbgYbkqbkrbksbktbgZbkubkvbkwbkxbkybkzbkAbkBbkCbkDbkEbkFbhfbdObkGaZmaahaahbgmbgmbgmbgmbkHbkIbkHbkJbkHbkKbkHbgmbgmbgmbgmbkLbkMbkNbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkObkPbkRbkQbkSbkPbkPahyaahaahaahaahaahaahaahaahaahbilbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbhoblibljblkblkbhobllbllbllbllahyahyahyahyahybbobboblmblnblobeebefblpbjVbgwblqbefaahaahaahaahbjWblrblsbltblublvblwblxbjWaahaahaahaZdaZdaZHaZdahyaZIblydCwbeqbbGblzbbGbbGdCrbjZblAbkabfMbbGbbGblzbbGblBdCHdCIaZIaZfaToaZjblDaZlaToaToaahbeZblEblFblGbeZblHblIblJdGQblLblMblNbhOblWbgYbgYblPblQbpabgYblSblTblUblVbgZbrKbhZbhYblXbhYbhYblYbhfblZbmabhfbmbbhfbmcaZWaZmaahbgmbgmbifbmdbkHbmebmfbmgbmhbmibmfbmgbmjbkJbmkbmlbmibmmbmgbmnbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkPbmobmpbmqbmpbmobkRahyahyaahbkPbkPbkPbkPaahaahaahbilbmrbmsbjAbmtbmubmvbmwbilbmxbfubmybdTbrebdTbrebhoblibmAbmBbmCblkbmDbmEbmFbllbmGbmHbmIbllahyahyaZyaZzbcnbhrbeebmJbmKbmLbmMbefbefaahaahaahaahbjWbmNbmObmPbmQbmPbmRbmSbjWaahaahaahaahaZdaZHaZdahyaZIbmTdCJbbJbbGbfPbfQbmUbbGbdCbdCbdCbbGbmUbeVbfNbbGbbGdCKbmVaZIahyaZPaYGaYHaUwaToaahaahbeZbmWbmXbmYbmZbnabnbbncbncbndbnebnfbngbnhbnibgYbnjbnkbnlbgYbnmbnnbnobnpbgZbnqbnrbhYbnsbhYbntbnubhfbnvbnwbhfbnxbhfbnyaZWaZmaahbgmbnzbnAbnBbnCbnDbnEbnDbnFbnDbnGbihbnHbkJbnIbnJbnKbnLbihbnMaFMbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkboabobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahaahbjWbjWbombonboobopboqbonborbjWbjWaahaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDboEbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQbmqbpbbpcbpcbmqbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbprbpsbprbptbpubpvbpwbpxbMKbpzbpzbpzbpAblkblkbpBblkblkbpCbpDbpEbpEbpEbpFbpGbllahyahybamaZzbcnbfBbeebefbefbefbefbefaahaahaahaahbjWbpHbpIbpJbpKbpLbpKbpMbpNbpObjWaahaahaahaZdaZHaZdahybejbiHdCDdCLbbGbelbbGbfPbenbbGbbGbbGbeobeWbbGbelbbGdCHdCMbdxbejahybbNaYGaYHaUwbpPahyaahbeZbpQbpRbgNbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqabqbbqcbqdbqcbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnboObqoaCqbqqbqrbqsbqtboOaZWaZmaahbgmbqubqvbqwbkJbqxbqybqzbgmbqAbqBbqCbqCbqDbsnbqCbqEbqFbqGboZbqHbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkaybbobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahaahbjWbjWbombonboobopboqbonborbjWbjWaahaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDboEbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQbmqbpbbpcbpcbmqbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbprbpsbprbptbpubpvbpwbpxbMKbpzbpzbpzbpAblkblkbpBblkblkbpCbpDbpEbpEbpEbpFbpGbllahyahybamaZzbcnbfBbeebefbefbefbefbefaahaahaahaahbjWbpHbpIbpJbpKbpLbpKbpMbpNbpObjWaahaahaahaZdaZHaZdahybejbiHdCDdCLbbGbelbbGbfPbenbbGbbGbbGbeobeWbbGbelbbGdCHdCMbdxbejahybbNaYGaYHaUwbpPahyaahbeZbpQbpRbgNbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqabqbbqcbqdbqcbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnboObqoaCqbqqbqrbqsbqtboOaZWaZmaahbgmbqubqvbqwbkJbqxbqybqzbgmbqAbqBbqCbqCbqDbsnbqCbqEbqFbqGboZaycbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAacOacAacAacAacAacAacAacAacOacAacAacAacAaaaaaaacAacAacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqIaadahybkQbnPbqJbpcbpcbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqTbqWbqXbqTbqYbqZbrabrbbrcbrdbgqbinbMNbrfbrgbpzbrhbrebribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbllahyahybambrtbrubrvaZyahyahyahyahyahyahyaahaahaahbjWbjWbrwbrxbpKbpKbpKbrybrzbjWbjWaahaahaahaZdaZHaZdahybcyaTsbrBdCDdCLbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGdCHdCCbrCbdBbcyahyaTobrEaYHbrFbrGahyahybeZbfTblFbrHbeZbrIbrJbvUbrLbEEblMbrNbrObrPbrQbrRbrSbrTbrSbrSbrSbrUbrVbrWbrXbrYbrZbrYbsabrYbrYbsbbscaCrbsebsfbsgbsgboOaZWaZmaahbgmboPbshboRbkHbmibsibsjbskbslbmmbmmbsmbkHbuYbmmbsobspbmiboZbsqbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsrahyahybssbmqbstbpcbpcbmqbsubsvbswbsxbsybszbsAbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbsBbfubsCbdTbekbsEbsFbsFbsGbsHbsIbsJbrlbsKbrnbsLbsMbsNbrrbsObsPahyahybamaZzbcnbhrbamahyahyahyahyahyahyaahaahaahaahbjWbsQbrxbsRbsSbsTbsUbsQbjWaahaahaahaahaZdaZHaZdahyaZIbdqbbEbsVdCDdCLbbIbbJbbKbbGbbGbbGbbIbbJbbKdCHdCCbrCbbEbdqaZIahyaZPaYGbetaUwbrGahyahybeZbeZbsWbeZbeZblMblMblMbsXbsXbsXbsXbsYbsZbsXbsXbtabtbbtcbtdbtdbtebtfbtbbtgbthbtibtjbtkawrbtmboObtnaCsaCuaCtaCuaDwboOaZWaZmaahbgmbtsbttbnBbtubnDbtvbnDbtwbmmbtxbmmbtybkJbyTbijbtzbtAbtBbtCbtDbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPaahaahaahaahaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahaahaahbjWbujbukbulbumbukbukbujbjWaahaahaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzbuAbuBbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPaahaahaahaahaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahaahaahbjWbujbukbulbumbukbukbujbjWaahaahaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzayjaykbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadacOaaaaadaadaaaaaaaaaaaaaaabtHbtHbvdbvebtHbvfbvgbvhawxbvjbvkbkPbmobmpbmqbmpbmobkRahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahbdTbvlbvmbvnbMNbvobvpbvqbvrbMKbvsbvtbvubvvbvwbvxbvybvzbvAbvBbvCbllahyahybaiaZzbMObhrbaiahyahyahyaahaahaahaahaahaahaahbjWbjWbjWbvDbjWbjWbjWbjWbjWaahaahaahaahaZdaZHaZdahyahyahybbMaZLbaJbgEbgEbvGbvHbiEbhzbiEbvKbvLbgEbgEbiGaZJbbDahyahyahybbNaYGbRLaUwbvNahyahybvObosbuqbvQboNbvSbvTbxbbsXanvbvWbvXbvYbvYbvZbwabwbbwcbwdbwebwebwfbwgbQwbwibwjbwkbwlbwmbwnbwoboObwpbwqbwrbtqbwsbwtboOaZWaZmaahaahbgmbgmbgmbgmbAQbwvbwwbmfbyUbwybwzbkJbkJbGRbkJbwAbwBbwCbgmbgmaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaadaadaaaaaaaaaaaabtHbwDbwEbwFbtHbwGbwHbwIbwJbwKbwLbkObkPbkRbkQbkSbkPbkPaahaahahyahyahyahyahyahyaahaahbwMbwMbwMbwMbwMbwMbwMbwMbwMbwNbwObwPbdTbrAbwRbwSbwTbMNbwUbuabsCbucbwVbwWbwXbllbwYbwZbwYbllahybeebeeblmblnblobboahyahyaahaahaahaahaahaahaahaahaahaahaahbxaaahaahaahaahaahaahaahaahaZdaZdaZHaZdaZdahyahyahyaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIahyahyahyahyaToaZjblDaZlaToaToahybxcbxdbxebvSbxfbxgbxhbxibsXanAbxkbxlbxmbvYbvYbxnbqhbxpbxqbthbthbxrbtfbxsbxtbxubxvbxwbxxbADbvRboOboOboOboObxAboOboOboOaZWaZmaahaahaahaahaahbgmbxBbxCbkJbxDbkJbxBbxEbkJbxFbxGbkJbxHbxIbkJbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaadaadaaaaaaaaabtHbxJbxKbxLbtHdDfbxMbxNbxObxPbxQbtLaahaahaahahyahyaahaahahyahyahyahyaahaahaahaahbwMbwMbxRbxSbxTbxUbxVbxWbxXbwMbxYbxZbyabdTbybbycbydbyebdTbyfbuabygbyhbyhbyhbyhbyhbyibyjbykbyhbfzbeebylaZzbcnbymbboaZdaahaahaahaahaahaahaahaahaahaahaahaahbxaaahaahaahaahaahaahaahaZdaZdaZGaZHaZGaZdaZdahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaZdaTobbObynbiPbyoaTobypbyqbyrbysbytbyubyvbywbyxbyybyzbyAbyBbyCbvYbxobsXbyEbtbbyFbyGbyHbyIbyJbyKbyLbyMbyNbxybyPbyQbyRbySbIxbCLbyVbyWbyXbyYbySaZWaZmaahaahaahaahaahbgmbyZbzabzbbzcbzdbzebzfbzgbzhbzibkJdkQbzkbzlbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9806,9 +9820,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaahaahaahaahaahaahaahaahbtHbtHbtHbtHbtHbIgbIhbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbIjbGJbGIbGJbGJbGJbGJbIkbwMbIlbfubImbInbIobIpbIqbIrbFibItbIAbIybIubIubIwbIubJXbJWbIzbJYbKcahyahybIBbecbRQbecbICbHcbIDbIEbIFbIFbIGbIHbIIbIJbFuaxjaxibIMbHjbINbIObIPbHjaahaahaahaahaZdaZGaZHbEgbIQbIRbISbITbEgbIUbIVbIWbFJbFJbIXbIYbIZbJabJabJabJabJabJbbJcbJdahyahybJeaYGbRSaUvbpPahyahybuobosbvSbvSbJfbJgbvSbvSbJhbJibJjbJkbxqbJlbJmbJnbthbJobJpbJqbKLbJsbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbySbglbfpaZmaahaahaahaahaahaahbgmbgmbLDbJKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaacAaaaaaaaahaahahyahyahyahyahyahyahyahyaahaahaahbtHbtHbJLbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbJMbGJbJNbJObGJbGJbGJbIkbwMbJPbtUbJQbJRbJSbIdbJUbJVbFibGYbKabJZbIubIubIubIubKbbIubIubLzbLAahyahybKdbecbcnbecbKebHcbKfbKgbKhbKibKjbKhbKhbKkbFubKlbILbKmbHjbKnbKobKpbHjaahaahaahaahaZdbKqaZHbEgbIQbKrbKsbKtbEgbKubKvbKwbFJbKxbKycuybKAbJabJabJabJabJabKBbKCbKDahyahybrGbKEbynbKFbrGahyahybvObsDbKHbKHbKIbKKbMHaGMbKNbKNbKObKPbKQbKRbKNbKSbKTbKUbKVbKSbKWbKWbKWbKWbKWbKXbKYbKZbLabySbySbySbySbySbySbySbySbySbySbLbbLcaZmbLdbLebLebLebLdbLdbLfbLgbLhbLibLfbLdaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadacAaaabLjaahbLkbLkbLlbkQbkQbkQbLmbLkbLkahyaahaahaahbtHbLnbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbLobLpbLqbGJbLrbGJbLsbwMbwMbLtbfubImbFibLubLvbLwbLxbLybGYbLCbLBbIvbIubIubIubKbbIvbIubLEbLAahyahybKdbLGbhqbecbKebHcbLHbLIbKhbLJbLKbLLbLMbLNbLObLPbLQbLRbLSbLTbLUbLVbHjaahaahaahaahaZdaZdaZHbEgbEgbLWbEgbEgbEgbLXbLYcAgbMabKxbMbcuBbMdbMebMfbMgbMhbKBbKBbMibKDahyahybvNbMjbgJaUvbvNahyahybMkbMlbMmbKJbOcbMkbMkbMkbMkaPubMqbMrbMsbMtbMsbKSbMubMvbMwbMxbKWbMybMzbMAbMBbMCbMDbMEbMFbMGbOdbMIbMJbRXbMLbMMdFecbabUSbMQbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNabNcbLdaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHbNhbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHbtHbtHbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwbNxbKhbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEbNFbQAbNHbFJbFJbNIbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbMobNBbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHbNhbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHbtHbtHbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwbNxbKhbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEaylbQAbNHbFJbFJbNIbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbMobNBbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaahaahaahbOLbOMbONbOObOPbOQbOLbORahyahyaahaahbtHbOSbIibOTbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbOUbOVbOWbOXbOYbOZbzHbPabPbbPcbPdbPebPfbPgbImbInbIobPhbPibLxbPjbGYbSRbSQbSSbNqbNqbNrbNpbSSbRlbSTbGYahyahybKdbecbcnbecbPobHcbFubPpbKhbPqbPrbPsbKhbPtbFubPubPvbPwbNCbPxbPybPzbPAbNCbPBbNCbNCaahaZdaZHbEgbPCbPDbPEbPEbPFbPEbPEbPGbFJbPHbEgbPIbPJbPKbPLbPMbPNbPIbPJbPKbEjbPObPPaToaZjblDbHCaToaToahybMkbPQbPRbPSbPTbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbKSbQebQfbQgbQhbKWbQibQjbQkbMBbQlbQmbQnbQobQpbQqbQrbQsbQtbQpbQubQvdGRbMPbMQbQxbQybQzbMUbMVbWWbQBbOJanDbQDbQEbOJcAfbLdaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaahaahaahbNgbQFbQGbQHbQHbQIbNgahyahyahyaahaahbtHbQJbQKbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbyfbJRbRabRbbRcbRdbRebGYbNobNpbNpbNpbNpbNpbNpbNpbRlbSUbGYahyahybKdbecbcnbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbFubRxbPvbRybNCbRzbRAbRBbRBbRCbRDbREbNCaahaZdaZHbEgbRFbRGbFJbRHbRIbFJbFJbFJbFJbRJbEgbupbTlbTkbRNbRObRPbRObRPbvEbRTbRUbRUbRVbRWbetaUvbvFaToahybMkbRYbRZbSabNWbSbbScbSdbSebSfbSgbShbSibMpbvIbKSbXibQfbSlbSmbKWbKWbKWbKWbKWbSnbSobSpbSpbSpbSpbSpbSqbSrbSqbSqbSqbSqbSqbSsbStbSubSvbSwbSwbSwbLdbLdbSxbSycNtbSxbLdbLdaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaahaahaahbNgbQFbQGbQHbQHbQIbNgahyahyahyaahaahbtHbQJbQKbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbyfbJRbRabRbbRcbRdbRebGYbNobNpbNpbNpbNpbNpbNpbNpbRlbSUbGYahyahybKdbecbcnbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbFubRxbPvbRybNCbRzbRAbRBbRBbRCbRDbREbNCaahaZdaZHbEgaynbRGbFJbRHbRIbFJbFJbFJbFJbRJbEgbupbTlbTkbRNbRObRPbRObRPbvEbRTbRUbRUbRVbRWbetaUvbvFaToahybMkbRYbRZbSabNWbSbbScbSdbSebSfbSgbShbSibMpbvIbKSbXibQfbSlbSmbKWbKWbKWbKWbKWbSnbSobSpbSpbSpbSpbSpbSqbSrbSqbSqbSqbSqbSqbSsbStbSubSvbSwbSwbSwbLdbLdbSxbSycNtbSxbLdbLdaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbOLbSAbQGbQHbQHbSBbOLbORahyahyaahaahbtHbSCbIibSDbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbSEbSEbSFbSGbSEbSHbSIbSJbSKbSLbSMbSNbSObSPbSLbSLbSLbSLbSLbGYbUDbPlbPmbNpbNpbSzcpCcpubRlbXTbGYahyahybKdbecbcnbSVbbobbobFubFubFubFubFubFubSWbFubFubSXbSYbSZbNCbTabTbbTcbTdbNCbTebTfbNCaahaZdaZHbEgbFLbvJbEgbEgbThbTibTibTibTibEgbEgbTjbTkbTlbTmbTnbTkbTlbTkbTobTpaUvaUvaUvaUvbTqbTrbTsaToahybMkbGxbTubTvbTubTtbScbTxbTybVhbTAbTBbTCbTDbTEbKSbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbTTbSpbTUbTVbTWbOabTXbTZbSqbUabUbbSubUcbUdbUebSuaahaahbSxbUfbUgbSxaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbNebNfbNgbUhbNgbNfbNebLkahyahyaahaahbtHbtHbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbUibUjbUkbUlbSEbUmbUnbUnbUobUpbUqbUrbUsbUtbUubUvbUwbUxbGYbXUbRgbYYbNpbNpcbIbRgcGibRlcGQbGYahyahybKdbecbcnaZzbUFahybUGbUHbUIbUJbUKbULbULbUMbUGbUNbUObUPbNCbNCbUQbNCbNCbNCbNCbNCbNCaahaZdaZHaZdbvMbUTbUUbUVbUWbUWbUWbUWbUWbYobUYbTkbTlbUZbVabVbbVcbTkbTlbVdbVeaUvaUvbVfbVgbdvaUvbvPaToahybMkbVibVjbVkbVlbVmbVnbVobVpbVqbVrbVsdGSbKNbKNbKSbKSbKSbKSbKSbTJbVtbVubVvbVwbVxbVybVzbVAbVBbVCbSpbVDbVEbVFbVGbVGbVHbSqbVIbVJbSubVKbVLbVMbSuaahaahbSxbVNcAhbSxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbLlbVPbVQbVRbVSbVTbLmbLkahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbVUbVVbVWbVXbVYbVZbWabWbbWcbWdbWebWfbWgbWhbWibWibWjbWkbUEcNkcIgcNkdHrdHrcNkdHscNkdHtcNkbUEahyahybKdbWobcnaZzbamahybWpbWqbULbWrbWsbWsbWtbWubUGbWvbWwbUPbWxbWybWzbWAbWBbWCbWDbWEbNCaahaZdbWFanEbWHbWIbWJclZbWLbWKbTwbWKbWLbWKbWJbTlbTkbWNdBObVabWPbTlbTkbWQbURbPObPPaTobHCblDbHCaToaToahybMkbWRbWSbMkbWRbWSbMkbMkbMkbYAbWUbWVbCAbKNaahaahaahaahaahaahbTJbWXbWYbWZbTNbXabXbbTQbXcbXdbXebSpbXfbXgbXhcccbXjbXkbSqbXlbXmbXnbXobXpbSubSuaahaahbSxbXqbXrbSxbSxaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9832,22 +9846,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpacpbchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrcvWdElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgcpKcpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocqpcqqcqrcqscrJcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwcxUcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahcrXcrXcrXcrXcrXctfctgcthcrXctictjcrZctkctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoctpcsactqctrcscctscttcuTcsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuucuvcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEcuFcuEcrZcuGcuHcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQcuRcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahcrXcvwcvxcvwcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZcvCcvDcvCcrZcvEcvFcvEcsacsacvGcsacsacvHcvIcsccsccvJcsccsccvKcvLcvKcscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahcrXcrXcrXcrXcrXctfctgayocrXctictjcrZayqctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoayscsactqctrcscayvcttcuTcsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuuazEcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEazFcuEcrZcuGaAdcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQaADcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahcrXaAEcvxaAEcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZaAFcvDaAFcrZaAGcvFaAGcsacsacvGcsacsacvHcvIcsccsccvJcsccscaAHcvLaAHcscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPcvQcvRcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahcrXcxVdEMcxXcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyidENcykcrZcyldEPcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyydEQcyAcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahcrXcxVaAKaAIcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyidENcykcrZcyldEPcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyydEQcyAcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZddeczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicAjcBxcAlcAicAmcAncAocApcCccBbcAoaahaahaahaahaahaahaahcAscAtcClcAvcAscAwcCmcAycAzcAAcBAcAyaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAicAicAicAicAicBmcDydHfcAiczpcBpcAocDDcDCcBscAocAocAocAocAocAscAscAscAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahcAicBZcCacCbcAicAicFlcAicAicCdcvAcAocFmcCecAocAocCfcCgcChcAocCicCjcCkcAscAscFncAscAscvHcFycAycAycCncAycAycCocCpcCqcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahcAicCbaEJcCbcAicAjcBxaywcAicAmcAncAoayEcCccBbcAocCfaFxcCfcAocCkaFzcCkcAscAtcClazxcAscAwcCmcAyazycAAcBAcAycCoaFRcCocAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAiaGxaHMaGxcAicBmcDydHfcAiczpcBpcAocDDcDCcBscAoaJaaHOaJacAoaKbaJIaKbcAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAyaKnaKpaKncAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahcAiaKqaKFaHMcAicAicFlcAicAicCdcvAcAocFmcCecAocAoaHOaKGaKHcAoaLuaLtaJIcAscAscFncAscAscvHcFycAycAycCncAycAyaKpaLxaLvcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcCxcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcBQcCEcCDcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcCMcCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcDicBgcDjcDkcDlcDmcBgcBgcBgcBgcWQcQzcBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHdERcPacrQaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcBQcCEcCDcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtcEuddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQecZMcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahcAicFfdEScFhcFicFjcIKcIJcAicyccydcAocIPcILcFocFpcFqdEUcFscAocFtdEVcFvcFwcFxcIQcIRcAscyscAxcKacJRcFBcFCcFDcFEdEWcFGcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcElcFUcxqcxraahaahcBIcCFcCEcCDcBIcFWcGpcFYcFZcwdcGacGbcGccCKcGdcGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcGMcGNcxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahcHycHzcKTcHBcHycHCcHDcHEcKXcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgcHLcHIcHMcLhcHOcHPcHQcJtcHOaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcGMcGNcxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahcHycHzcKTazzcHycHCcHDcHEazAcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgazBcHIcHMcLhcHOazCcHQcJtcHOaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacJwcGCcDXcHTcDXcHUcHVcxgcxgcHWcCtcHXcGKcHYcHZcIacCtbkQcIbcIccIccIccIcbkQaahaahaahcxrcIdcIecxraahaahaahcBIcBQcIfcGOcBIcIhcIicIjcIkcwdcIlcImcIncCKcGecIocGecEwcGecEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcIpczecIqcAVcIrcIscItcAWcIuczecGkcxzaahaahaahaahaahaahaahczicAbcziaahaahcBacIvcIwcHhcFXcIycKDcrOcrPcIAcDicHmcIBcICcIDcIEcHmaahaahcBgcHqcBgcOTdDlcNKcNTcNLcNNctzcNOcNPcNQdDmcNScNTdDncQGdDodDqdDpdDrcQGaahaahcHycHycHycHycHycIIcMpdHhcHyczpcuAcHEcMqcIMcINcHEcHEcHEcHEcHEcHIcHIcHIcHIcIOcMrdHicHIcuLcBvcHOcMtcIScITcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahyaahcJecJecJfcJgcJeaahaahaahcBIcBQcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQdFdcsYcOWdHjcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahyaahcJecKgcKhcKicJecKjcKjcKjcBIcBIcKkcKlcBIcKmcKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahyaahcJecKgcKhcKicJecKjcKjcKjcBIcBIcKkcKlcBIazDcKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahaahcJecLtcLudEXcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcLKcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOawvcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahcHycMidEYcMkcMlcMmcMndBWcHycyccydcHEdBYdBXdCadBZdCcdEZdCedCddCgdFadCidChdCkdCjdClcHIcysdCmdCodCncMEcMFcMGcMHdFbcMJcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQcIccMKcNZcMMcIcbkQcMNcMNcMNcMNcMPcMOcKjcMQcMRcMScMTcMUcMVcMWdDDcoucMZcNacMUcNbcNccNdcNecrVcOpcNhcNicNjcTfcLGcNlcLGcLGahyahycwhcNmcNncziczicziczicziczicNocNpcxzcNqcxzcNrcxzcNqcxzcEDcEDcziczicziczicziczicziczicUqcXxcUucKCcNucLPcLPcNvcNwcNwcNxcNycNzcNAcNBcNCcNDcNEcNEcNEcNFcLPcNGcKCcZgdDEcBgahyahyaahaahaahaahaahaahaahaahcWudDFdbMdbMdDGcWuaahaahaahaahaahaahcHycHycHycHycHycHycHycHycHyczpcuAcHEcHEcHEcHEcHEcHEcHEcHEcHEcHIcHIcHIcHIcHIcHIcHIcHIcuLczqcHOcHOcHOcHOcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQbkQcOsahycOMbkQbkQcMNcOacObcOccOdcOecOfcOgcOhcOicMTcOjcOkcOlcOlcOmcOncOocPFcOqcNccNdcNecOrcPPcOtcOtcyzdDHcOvcOtcOwcLGahyahycwhcOxcOycOzcOAcOBcOCcOCcOCcOCcOAcOAcOAcODcOEcOFcOAcOCcOCcOGcOCcOCcOCcOCcOCcOCcOCcOCdlDdBIdBHcKCcOKcLPcLPcOLcLPcLPcPYcONcOOcOPcOQcONcPYcLPcLPcLPcORcLPcLPcKCdBJcHqcBgahyahyahyaahaahaahaahaahaahaahcWudDIdbMdbMdDJcWuaahaahaahaahaahaahcPdcPecPfcPgcPhaGYcPjcPkcPdcPlcPmcPncuscPpcPpcPqcPpcutcPrcPscPpcPtcPpcPucPpcPpcvkcPncPwcPlcPxcPycPzcPAaEycPCcPDcPEcPxaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/polaris-2.dmm b/maps/polaris-2.dmm
index dba980372f9..91f9006b6ba 100644
--- a/maps/polaris-2.dmm
+++ b/maps/polaris-2.dmm
@@ -825,7 +825,7 @@
"pS" = (/obj/structure/reagent_dispensers/beerkeg,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"pT" = (/obj/machinery/vending/boozeomat,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"pU" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
-"pV" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/drinkingglasses,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
+"pV" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"pW" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
"pX" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
"pY" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start)
@@ -839,7 +839,7 @@
"qg" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"qh" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"qi" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
-"qj" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
+"qj" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"qk" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"ql" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"qm" = (/obj/effect/landmark{name = "Nuclear-Code"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership)
@@ -1298,7 +1298,7 @@
"yX" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"yY" = (/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"yZ" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
-"za" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/drinkingglasses,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
+"za" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"zb" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command)
"zc" = (/obj/machinery/computer/security,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"zd" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
@@ -1735,7 +1735,7 @@
"Hs" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"Ht" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"Hu" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
-"Hv" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
+"Hv" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar)
"Hw" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"Hx" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome)
"Hy" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
@@ -2125,7 +2125,7 @@
"OS" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac)
"OT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"OU" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram)
-"OV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
+"OV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"})
"OW" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac)
"OX" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/plating,/area/centcom/evac)
"OY" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac)
@@ -2454,7 +2454,7 @@
"Vj" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Vk" = (/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Vl" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-
+
(1,1,1) = {"
aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajapaqarasatauavawaxayaaabacadaeafagahaaaiajakalamanaoagafajacadahakazaAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaAaBaCaDaEaFaGaHaIaJazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQaQaQaQaQaQaQaQaQaQaQaQaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaR
ajaTaUaVaWaXaYaZbabbbcbdbebfbgbhaYaXbcaUaVaZbdaWbfbbbhbeaZbcabauavawbibjbkblbmbeaXbfaZbcbbbhbeaXbfaZbcbbbhbhbeaXbfaZbcbbbhbhbmazaEbnbobpaqarasatauavawbibjbkblbqbnbobpaqarasatauaNazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQbrbsaQbrbsaQbrbsaQbrbsaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbubububvbububububububwbxbybxbybxbxbybxbybxbwbzbAbAbAbAbAbAbAbAbAbwbBbCbDbDbDbDbDbDbDbDbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIbJbKbKbKbKbKbLbM
diff --git a/maps/polaris-5.dmm b/maps/polaris-5.dmm
index 7399aa2e705..284c6cf9c13 100644
--- a/maps/polaris-5.dmm
+++ b/maps/polaris-5.dmm
@@ -29,26 +29,26 @@
"aC" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/research/tox_store)
"aD" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/tox_store)
"aE" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Test Chamber North"; network = list("Research","Toxins Test Area")},/turf/simulated/floor/tiled/airless,/area/outpost/research/test_area)
-"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/mixing)
-"aG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/mixing)
+"aF" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/turf/simulated/floor/plating,/area/outpost/research/mixing)
+"aG" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced,/turf/simulated/floor/plating,/area/outpost/research/mixing)
"aH" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aI" = (/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
-"aK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/mixing)
+"aK" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/turf/simulated/floor/plating,/area/outpost/research/mixing)
"aL" = (/obj/machinery/portable_atmospherics/powered/pump,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"aM" = (/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"aN" = (/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access = list(8)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/research/tox_store)
"aO" = (/turf/simulated/floor/tiled,/area/outpost/research/tox_store)
"aP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/research/tox_store)
"aQ" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
-"aR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/mixing)
+"aR" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced,/turf/simulated/floor/plating,/area/outpost/research/mixing)
"aS" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aT" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aU" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/obj/machinery/meter,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aV" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aX" = (/obj/structure/closet/secure_closet/scientist,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
-"aY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/mixing)
+"aY" = (/obj/structure/grille,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced,/turf/simulated/floor/plating,/area/outpost/research/mixing)
"aZ" = (/obj/machinery/portable_atmospherics/powered/scrubber,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"ba" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"bb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
@@ -129,7 +129,6 @@
"cy" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/tvalve/bypass{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"cz" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"cA" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
-"cB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/mixing)
"cC" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"cD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/corner/purple,/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"cE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
@@ -657,7 +656,7 @@
"mG" = (/obj/structure/table/standard,/obj/item/weapon/material/ashtray/glass,/obj/item/weapon/reagent_containers/food/drinks/coffee,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"mH" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"mI" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/outpost/research/dorms)
-"mJ" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/obj/machinery/light,/turf/simulated/floor/wood,/area/outpost/research/dorms)
+"mJ" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/machinery/light,/turf/simulated/floor/wood,/area/outpost/research/dorms)
"mK" = (/obj/structure/table/glass,/obj/item/device/camera_film{pixel_x = 2; pixel_y = 2},/obj/item/device/camera,/turf/simulated/floor/wood,/area/outpost/research/dorms)
"mL" = (/obj/item/weapon/bedsheet/purple,/obj/structure/bed/padded,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/carpet/blue,/area/outpost/research/dorms)
"mM" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/outpost/research/dorms)
@@ -1591,7 +1590,7 @@
"EE" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology)
"EF" = (/obj/machinery/recharger/wallcharger{pixel_x = 32},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology)
"EG" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1664,14 +1663,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadanaoagapaqarakasasafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalatauatalalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadavawaxayagazaAazakaBasaCaDafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalatatataEatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaGaHaIaIaJaIaKaLaMaQaNaOaPaDaDcdafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalatatatatatatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaSaTaUaVaWaXaYaZbabbbcbdbebfaOaObgafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalatatatatatatatatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaSaTaUaVaWaXaRaZbabbbcbdbebfaOaObgafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalatatatatatatatatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadbhbibjbkblbmadbnbobpafbqaObraOaOcIafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalatatatbsatatatatatbtatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadbubvbwbxbybzbAadbBbCbDafbEbFbGbHbIbgakafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalatatatatbsatatatbtatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbJbKbLbMbNbObPadadbQbRbSafafbFbTbHbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalatbVbVbVbVatbsbWbtatatatatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbYbZcaadadadcbcccKadcecfcgchciafafafakbUcjckclcmcncnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacocpcpcpcpcpcpcpcpauatatatatcqauamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrctcscucvcwcxcyczcAcBcCcDcEcFcGcHdJcJdQbUcLcMcNbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalatbWbWbWbWatcObVcPatatatatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrctcscucvcwcxcyczcAaYcCcDcEcFcGcHdJcJdQbUcLcMcNbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalatbWbWbWbWatcObVcPatatatatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcQcQcRcScTcUcVcWcWcXcYcZaedadbdcdddedfdgdhdidjdkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldHdnalalatatatatcOatatatcPatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrdpdodqcvdrdsdtczducBdvdwdxdydzcHdAdBdCbUdDdEdFdGdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlDDcpcpdIatatatcOatatatatatcPatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrdpdodqcvdrdsdtczduaYdvdwdxdydzcHdAdBdCbUdDdEdFdGdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlDDcpcpdIatatatcOatatatatatcPatatatalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXadadadadadadewdKdLaddMdNdOdPfjdRdRdRdSbUdTdUdVdWdXdYdlaaaaaadldZdXdXdXdXdXdXdXdXdXdXdXdXdXdXdXdXeaebcpalalatatatatatatatatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadecedeeefegeheiadadbQejekdRdRelemenbUbUbUbUbUffeodXdXdXdXdXepacacacacacacacacacacacacacacacaceqeqereqalalatatatatatatatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadedeeeseseseeetadbBeuevdRfnexeyezeADXpEDZDYEaoVacacacacacacacacacacacacacacacacacacacacacacacacacacacalalatatateDatatatalalacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl
index bb0a26842f5..58b86a30d7e 100644
--- a/nano/templates/communicator.tmpl
+++ b/nano/templates/communicator.tmpl
@@ -103,7 +103,12 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
{{:value.name}}
- {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
+ {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
+ {{if data.video_comm == null}}
+ {{:helper.link('Start Video', 'signal-diag', {'startvideo' : value.ref})}}
+ {{else data.video_comm == value.ref}}
+ {{:helper.link('End Video', 'signal-diag', {'endvideo' : value.true_name}, null, 'redButton')}}
+ {{/if}}
{{/for}}
@@ -114,7 +119,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
{{:value.name}}
- {{:value.address}} {{:helper.link('Dial', 'signal-diag', {'dial' : value.address})}}
+ {{:value.address}} {{:helper.link('Accept', 'signal-diag', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}}
{{/for}}
diff --git a/polaris.dme b/polaris.dme
index f380db585c2..4034985edb1 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -63,6 +63,7 @@
#include "code\_helpers\type2type.dm"
#include "code\_helpers\unsorted.dm"
#include "code\_helpers\vector.dm"
+#include "code\_onclick\_defines.dm"
#include "code\_onclick\adjacent.dm"
#include "code\_onclick\ai.dm"
#include "code\_onclick\click.dm"
@@ -77,6 +78,7 @@
#include "code\_onclick\hud\action.dm"
#include "code\_onclick\hud\ai.dm"
#include "code\_onclick\hud\alien_larva.dm"
+#include "code\_onclick\hud\fullscreen.dm"
#include "code\_onclick\hud\gun_mode.dm"
#include "code\_onclick\hud\hud.dm"
#include "code\_onclick\hud\human.dm"
@@ -166,7 +168,6 @@
#include "code\datums\progressbar.dm"
#include "code\datums\recipe.dm"
#include "code\datums\sun.dm"
-#include "code\datums\supplypacks.dm"
#include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
@@ -196,6 +197,23 @@
#include "code\datums\repositories\cameras.dm"
#include "code\datums\repositories\crew.dm"
#include "code\datums\repositories\repository.dm"
+#include "code\datums\supplypacks\atmospherics.dm"
+#include "code\datums\supplypacks\contraband.dm"
+#include "code\datums\supplypacks\costumes.dm"
+#include "code\datums\supplypacks\engineering.dm"
+#include "code\datums\supplypacks\hospitality.dm"
+#include "code\datums\supplypacks\hydroponics.dm"
+#include "code\datums\supplypacks\materials.dm"
+#include "code\datums\supplypacks\medical.dm"
+#include "code\datums\supplypacks\misc.dm"
+#include "code\datums\supplypacks\munitions.dm"
+#include "code\datums\supplypacks\recreation.dm"
+#include "code\datums\supplypacks\robotics.dm"
+#include "code\datums\supplypacks\science.dm"
+#include "code\datums\supplypacks\security.dm"
+#include "code\datums\supplypacks\supply.dm"
+#include "code\datums\supplypacks\supplypacks.dm"
+#include "code\datums\supplypacks\voidsuits.dm"
#include "code\datums\underwear\bottom.dm"
#include "code\datums\underwear\socks.dm"
#include "code\datums\underwear\top.dm"
@@ -215,6 +233,8 @@
#include "code\datums\uplink\uplink_categories.dm"
#include "code\datums\uplink\uplink_items.dm"
#include "code\datums\uplink\visible_weapons.dm"
+#include "code\datums\vending\stored_item.dm"
+#include "code\datums\vending\vending.dm"
#include "code\datums\wires\airlock.dm"
#include "code\datums\wires\alarm.dm"
#include "code\datums\wires\apc.dm"
@@ -1325,6 +1345,7 @@
#include "code\modules\mob\language\synthetic.dm"
#include "code\modules\mob\living\autohiss.dm"
#include "code\modules\mob\living\damage_procs.dm"
+#include "code\modules\mob\living\death.dm"
#include "code\modules\mob\living\default_language.dm"
#include "code\modules\mob\living\inventory.dm"
#include "code\modules\mob\living\life.dm"
@@ -1723,6 +1744,11 @@
#include "code\modules\reagents\reagent_containers\pill.dm"
#include "code\modules\reagents\reagent_containers\spray.dm"
#include "code\modules\reagents\reagent_containers\syringes.dm"
+#include "code\modules\reagents\reagent_containers\drinkingglass\drinkingglass.dm"
+#include "code\modules\reagents\reagent_containers\drinkingglass\extras.dm"
+#include "code\modules\reagents\reagent_containers\drinkingglass\glass_boxes.dm"
+#include "code\modules\reagents\reagent_containers\drinkingglass\glass_types.dm"
+#include "code\modules\reagents\reagent_containers\drinkingglass\shaker.dm"
#include "code\modules\reagents\reagent_containers\food\cans.dm"
#include "code\modules\reagents\reagent_containers\food\condiment.dm"
#include "code\modules\reagents\reagent_containers\food\drinks.dm"
@@ -1730,7 +1756,7 @@
#include "code\modules\reagents\reagent_containers\food\sandwich.dm"
#include "code\modules\reagents\reagent_containers\food\snacks.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm"
-#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm"
+#include "code\modules\reagents\reagent_containers\food\drinks\cup.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm"
#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm"
diff --git a/sound/effects/ding.ogg b/sound/effects/ding.ogg
new file mode 100644
index 00000000000..33516f793f3
Binary files /dev/null and b/sound/effects/ding.ogg differ
diff --git a/sound/effects/printer.ogg b/sound/effects/printer.ogg
new file mode 100644
index 00000000000..c9546490f17
Binary files /dev/null and b/sound/effects/printer.ogg differ
diff --git a/sound/voice/ManUp1.ogg b/sound/voice/ManUp1.ogg
index 9239a02e177..6fe58b52701 100644
Binary files a/sound/voice/ManUp1.ogg and b/sound/voice/ManUp1.ogg differ
|