diff --git a/code/WorkInProgress/computer3/computers/communications.dm b/code/WorkInProgress/computer3/computers/communications.dm
index 20c29aaec43..68a1020a750 100644
--- a/code/WorkInProgress/computer3/computers/communications.dm
+++ b/code/WorkInProgress/computer3/computers/communications.dm
@@ -317,6 +317,7 @@
if(STATE_CANCELSHUTTLE)
dat = confirm_menu("cancel the shuttle","cancelshuttle2")
if(STATE_MESSAGELIST)
+ dat += "\[ Back \]
"
dat += "Messages:"
for(var/i = 1; i<=messagetitle.len; i++)
dat += "
[messagetitle[i]]"
diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm
index 18666b56217..fc32220b6d4 100644
--- a/code/_onclick/cyborg.dm
+++ b/code/_onclick/cyborg.dm
@@ -40,13 +40,14 @@
face_atom(A) // change direction to face what you clicked on
- if(aiCamera.in_camera_mode)
- aiCamera.camera_mode_off()
- if(is_component_functioning("camera"))
- aiCamera.captureimage(A, usr)
- else
- src << "Your camera isn't functional."
- return
+ if(aiCamera)
+ if(aiCamera.in_camera_mode)
+ aiCamera.camera_mode_off()
+ if(is_component_functioning("camera"))
+ aiCamera.captureimage(A, usr)
+ else
+ src << "Your camera isn't functional."
+ return
/*
cyborg restrained() currently does nothing
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index a20997140f0..ab27aeb73df 100755
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -1114,11 +1114,28 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/autodrobe
name = "Autodrobe Supply crate"
contains = list(/obj/item/weapon/vending_refill/autodrobe,
+ /obj/item/weapon/vending_refill/autodrobe,
/obj/item/weapon/vending_refill/autodrobe)
cost = 15
containertype = /obj/structure/closet/crate
containername = "autodrobe supply crate"
group = "Operations"
+
+/datum/supply_packs/clothingvendor
+ name = "Clothing Vendor Supply crate"
+ contains = list(/obj/item/weapon/vending_refill/hatdispenser,
+ /obj/item/weapon/vending_refill/hatdispenser,
+ /obj/item/weapon/vending_refill/hatdispenser,
+ /obj/item/weapon/vending_refill/suitdispenser,
+ /obj/item/weapon/vending_refill/suitdispenser,
+ /obj/item/weapon/vending_refill/suitdispenser,
+ /obj/item/weapon/vending_refill/shoedispenser,
+ /obj/item/weapon/vending_refill/shoedispenser,
+ /obj/item/weapon/vending_refill/shoedispenser)
+ cost = 30
+ containertype = /obj/structure/closet/crate
+ containername = "clothing vendor supply crate"
+ group = "Operations"
/datum/supply_packs/mafia
name = "Mafia Supply crate"
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 6567b2b2cc5..b733c8683a5 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -78,7 +78,7 @@
M << "Your service has not gone unrewarded, however. Studying under [H.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap."
M.update_power_buttons()
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
- M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 0194d34b2ef..efd37412bb7 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -163,7 +163,7 @@
del(wizard_mob.l_store)
wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_l_ear)
- wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform)
+ wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index e1b104846bb..fc58c67087f 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -12,7 +12,7 @@
/datum/job/civilian/equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_or_collect(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
+ H.equip_or_collect(new /obj/item/clothing/under/color/random(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(H.backbag == 1)
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index ee889757029..eccb613f660 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -13,7 +13,7 @@
dir = 8
idle_power_usage = 250
active_power_usage = 500
-
+
/obj/machinery/sleep_console/power_change()
if(stat & BROKEN)
icon_state = "console-p"
@@ -24,7 +24,7 @@
spawn(rand(0, 15))
src.icon_state = "console-p"
stat |= NOPOWER
-
+
/obj/machinery/sleep_console/New()
..()
component_parts = list()
@@ -35,8 +35,8 @@
RefreshParts()
findsleeper()
-/obj/machinery/sleep_console/RefreshParts()
-
+/obj/machinery/sleep_console/RefreshParts()
+
/obj/machinery/sleep_console/process()
if(stat & (NOPOWER|BROKEN))
return
@@ -67,16 +67,16 @@
src.connected = sleepernew
return
return
-
+
/obj/machinery/sleep_console/attackby(var/obj/item/weapon/G as obj, var/mob/user as mob)
if (istype(G, /obj/item/weapon/screwdriver))
default_deconstruction_screwdriver(user, "console-p", "console", G)
- return
-
+ return
+
if (istype(G, /obj/item/weapon/wrench))
if(panel_open)
user << "Close the maintenance panel first."
- return
+ return
if(dir == 4)
orient = "LEFT"
dir = 8
@@ -84,11 +84,11 @@
orient = "RIGHT"
dir = 4
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
-
+
if(exchange_parts(user, G))
return
- default_deconstruction_crowbar(G)
+ default_deconstruction_crowbar(G)
/obj/machinery/sleep_console/attack_ai(mob/user as mob)
return src.attack_hand(user)
@@ -102,7 +102,7 @@
if(stat & (NOPOWER|BROKEN))
return
if (panel_open)
- user << "Close the maintenance panel first."
+ user << "Close the maintenance panel first."
return
if (!src.connected)
findsleeper()
@@ -213,9 +213,9 @@
var/injection_chems = list()
idle_power_usage = 1250
active_power_usage = 2500
-
+
l_color = "#7BF9FF"
-
+
power_change()
..()
if(!(stat & (BROKEN|NOPOWER)))
@@ -249,8 +249,8 @@
injection_chems = possible_chems[I]
efficiency = E
- min_health = -E * 25
-
+ min_health = -E * 25
+
/obj/machinery/sleeper/process()
if(filtering > 0)
if(beaker)
@@ -285,21 +285,21 @@
else
user << "\red The sleeper has a beaker already."
return
-
+
if (istype(G, /obj/item/weapon/screwdriver))
if(src.occupant)
user << "The maintenance panel is locked."
- return
+ return
default_deconstruction_screwdriver(user, "sleeper-o", "sleeper-open", G)
- return
-
+ return
+
if (istype(G, /obj/item/weapon/wrench))
if(src.occupant)
user << "The scanner is occupied."
- return
+ return
if(panel_open)
user << "Close the maintenance panel first."
- return
+ return
if(dir == 4)
orient = "LEFT"
dir = 8
@@ -307,16 +307,16 @@
orient = "RIGHT"
dir = 4
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
-
+
if(exchange_parts(user, G))
return
- default_deconstruction_crowbar(G)
-
+ default_deconstruction_crowbar(G)
+
if(istype(G, /obj/item/weapon/grab))
if(panel_open)
user << "\blue Close the maintenance panel first."
- return
+ return
if(!ismob(G:affecting))
return
if(src.occupant)
@@ -374,7 +374,7 @@
qdel(src)
return
return
-
+
/obj/machinery/sleeper/emp_act(severity)
if(filtering)
toggle_filter()
@@ -396,9 +396,6 @@
M.AdjustParalysis(-4)
M.AdjustWeakened(-4)
M.AdjustStunned(-4)
- M.Paralyse(1)
- M.Weaken(1)
- M.Stun(1)
if (M:reagents.get_reagent_amount("inaprovaline") < 5)
M:reagents.add_reagent("inaprovaline", 5)
return
@@ -512,7 +509,7 @@
return
if(panel_open)
user << "\blue Close the maintenance panel first."
- return
+ return
if(occupant)
user << "\blue The sleeper is already occupied!"
return
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 1d6d00a32a3..c108e02822c 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -265,7 +265,10 @@ to destroy them and players will be able to make replacements.
/obj/machinery/vending/snack = "Getmore Chocolate Corp",
/obj/machinery/vending/cola = "Robust Softdrinks",
/obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
- /obj/machinery/vending/autodrobe = "AutoDrobe")
+ /obj/machinery/vending/autodrobe = "AutoDrobe",
+ /obj/machinery/vending/hatdispenser = "Hatlord 9000",
+ /obj/machinery/vending/suitdispenser = "Suitlord 9000",
+ /obj/machinery/vending/shoedispenser = "Shoelord 9000")
/obj/item/weapon/circuitboard/vendor/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver))
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 95e98055cff..62856dead99 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -718,15 +718,6 @@
/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 30,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 20,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30,
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25)
refill_canister = /obj/item/weapon/vending_refill/snack
-/obj/machinery/vending/chinese
- name = "Mr. Chang"
- desc = "A self-serving chinese food machine, for all your chinese food needs."
- product_slogans = "Taste 5000 years of culture!"
- icon_state = "snack"
- products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 5,
- /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 5, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 5)
- prices = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 50,
- /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 50)
/obj/machinery/vending/snack/New()
..()
@@ -738,6 +729,16 @@
component_parts += new /obj/item/weapon/vending_refill/snack(0)
component_parts += new /obj/item/weapon/vending_refill/snack(0)
+/obj/machinery/vending/chinese
+ name = "Mr. Chang"
+ desc = "A self-serving chinese food machine, for all your chinese food needs."
+ product_slogans = "Taste 5000 years of culture!"
+ icon_state = "snack"
+ products = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 5, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 5, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 5)
+ prices = list(/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/tao = 50, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles = 50,
+ /obj/item/weapon/reagent_containers/food/snacks/chinese/rice = 50, /obj/item/weapon/reagent_containers/food/snacks/wingfangchu = 50)
+
/obj/machinery/vending/cola
name = "Robust Softdrinks"
desc = "A softdrink vendor provided by Robust Industries, LLC."
@@ -752,16 +753,6 @@
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 20,/obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 20,
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 20)
refill_canister = /obj/item/weapon/vending_refill/cola
-//This one's from bay12
-/obj/machinery/vending/cart
- name = "PTech"
- desc = "Cartridges for PDAs"
- product_slogans = "Carts to go!"
- icon_state = "cart"
- icon_deny = "cart-deny"
- products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
- /obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
- /obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
/obj/machinery/vending/cola/New()
..()
@@ -773,6 +764,17 @@
component_parts += new /obj/item/weapon/vending_refill/cola(0)
component_parts += new /obj/item/weapon/vending_refill/cola(0)
+//This one's from bay12
+/obj/machinery/vending/cart
+ name = "PTech"
+ desc = "Cartridges for PDAs"
+ product_slogans = "Carts to go!"
+ icon_state = "cart"
+ icon_deny = "cart-deny"
+ products = list(/obj/item/weapon/cartridge/medical = 10,/obj/item/weapon/cartridge/engineering = 10,/obj/item/weapon/cartridge/security = 10,
+ /obj/item/weapon/cartridge/janitor = 10,/obj/item/weapon/cartridge/signal/toxins = 10,/obj/item/device/pda/heads = 10,
+ /obj/item/weapon/cartridge/captain = 3,/obj/item/weapon/cartridge/quartermaster = 10)
+
/obj/machinery/vending/cigarette
name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating
desc = "If you want to get cancer, might as well do it in style"
@@ -933,16 +935,6 @@
premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
-/obj/machinery/vending/cigarette/New()
- ..()
- component_parts = list()
- var/obj/item/weapon/circuitboard/vendor/V = new(null)
- V.set_type(type)
- component_parts += V
- component_parts += new /obj/item/weapon/vending_refill/cigarette(0)
- component_parts += new /obj/item/weapon/vending_refill/cigarette(0)
- component_parts += new /obj/item/weapon/vending_refill/cigarette(0)
-
/obj/machinery/vending/dinnerware
name = "Dinnerware"
desc = "A kitchen and restaurant equipment vendor"
@@ -1036,6 +1028,7 @@
products = list(/obj/item/clothing/head/bowlerhat = 10,/obj/item/clothing/head/beaverhat = 10,/obj/item/clothing/head/boaterhat = 10,/obj/item/clothing/head/fedora = 10,/obj/item/clothing/head/fez = 10)
contraband = list(/obj/item/clothing/head/bearpelt = 5)
premium = list(/obj/item/clothing/head/soft/rainbow = 1)
+ refill_canister = /obj/item/weapon/vending_refill/hatdispenser
/obj/machinery/vending/suitdispenser
name = "Suitlord 9000"
@@ -1043,10 +1036,11 @@
icon_state = "suits"
product_ads = "Pre-Ironed, Pre-Washed, Pre-Wor-*BZZT*;Blood of your enemys washes right out!;Who are YOU wearing?;Look dapper! Look like an idiot!;Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*"
products = list(/obj/item/clothing/under/color/black = 10,/obj/item/clothing/under/color/blue = 10,/obj/item/clothing/under/color/green = 10,/obj/item/clothing/under/color/grey = 10,/obj/item/clothing/under/color/pink = 10,/obj/item/clothing/under/color/red = 10,
- /obj/item/clothing/under/color/white = 10, /obj/item/clothing/under/color/yellow = 10,/obj/item/clothing/under/lightblue = 10,/obj/item/clothing/under/aqua = 10,/obj/item/clothing/under/purple = 10,/obj/item/clothing/under/lightgreen = 10,
- /obj/item/clothing/under/lightblue = 10,/obj/item/clothing/under/lightbrown = 10,/obj/item/clothing/under/brown = 10,/obj/item/clothing/under/yellowgreen = 10,/obj/item/clothing/under/darkblue = 10,/obj/item/clothing/under/lightred = 10, /obj/item/clothing/under/darkred = 10)
+ /obj/item/clothing/under/color/white = 10, /obj/item/clothing/under/color/yellow = 10,/obj/item/clothing/under/color/lightblue = 10,/obj/item/clothing/under/color/aqua = 10,/obj/item/clothing/under/color/purple = 10,/obj/item/clothing/under/color/lightgreen = 10,
+ /obj/item/clothing/under/color/lightblue = 10,/obj/item/clothing/under/color/lightbrown = 10,/obj/item/clothing/under/color/brown = 10,/obj/item/clothing/under/color/yellowgreen = 10,/obj/item/clothing/under/color/darkblue = 10,/obj/item/clothing/under/color/lightred = 10, /obj/item/clothing/under/color/darkred = 10)
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 5,/obj/item/clothing/under/color/orange = 5,/obj/item/clothing/under/psyche = 5)
premium = list(/obj/item/clothing/under/rainbow = 1)
+ refill_canister = /obj/item/weapon/vending_refill/suitdispenser
/obj/machinery/vending/shoedispenser
name = "Shoelord 9000"
@@ -1056,6 +1050,7 @@
products = list(/obj/item/clothing/shoes/black = 10,/obj/item/clothing/shoes/brown = 10,/obj/item/clothing/shoes/blue = 10,/obj/item/clothing/shoes/green = 10,/obj/item/clothing/shoes/yellow = 10,/obj/item/clothing/shoes/purple = 10,/obj/item/clothing/shoes/red = 10,/obj/item/clothing/shoes/white = 10)
contraband = list(/obj/item/clothing/shoes/jackboots = 5,/obj/item/clothing/shoes/orange = 5)
premium = list(/obj/item/clothing/shoes/rainbow = 1)
+ refill_canister = /obj/item/weapon/vending_refill/shoedispenser
/obj/machinery/vending/syndicigs
name = "Suspicious Cigarette Machine"
diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm
index ffb127e7eec..3270e9882a9 100644
--- a/code/game/objects/effects/decals/warning_stripes.dm
+++ b/code/game/objects/effects/decals/warning_stripes.dm
@@ -52,6 +52,59 @@
/obj/effect/decal/warning_stripes/New()
. = ..()
-
loc.overlays += src
- del src
\ No newline at end of file
+ del src
+
+// Credit to Neinhaus for making these into individual decals.
+
+/obj/effect/decal/warning_stripes/arrow
+ icon_state = "4"
+
+/obj/effect/decal/warning_stripes/yellow
+ icon_state = "5"
+
+/obj/effect/decal/warning_stripes/yellow/partial
+ icon_state = "3"
+
+/obj/effect/decal/warning_stripes/yellow/hollow
+ icon_state = "6"
+
+
+/obj/effect/decal/warning_stripes/red
+ icon_state = "8"
+
+/obj/effect/decal/warning_stripes/red/partial
+ icon_state = "7"
+
+/obj/effect/decal/warning_stripes/red/hollow
+ icon_state = "9"
+
+
+/obj/effect/decal/warning_stripes/green
+ icon_state = "11"
+
+/obj/effect/decal/warning_stripes/green/partial
+ icon_state = "10"
+
+/obj/effect/decal/warning_stripes/green/hollow
+ icon_state = "12"
+
+
+/obj/effect/decal/warning_stripes/white
+ icon_state = "14"
+
+/obj/effect/decal/warning_stripes/white/partial
+ icon_state = "13"
+
+/obj/effect/decal/warning_stripes/white/hollow
+ icon_state = "15"
+
+
+/obj/effect/decal/warning_stripes/blue
+ icon_state = "17"
+
+/obj/effect/decal/warning_stripes/blue/partial
+ icon_state = "16"
+
+/obj/effect/decal/warning_stripes/blue/hollow
+ icon_state = "18"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index b284086a393..c52ab34827c 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -64,6 +64,7 @@
sleep(1)
new /obj/item/clothing/mask/breath( src )
new /obj/item/weapon/tank/emergency_oxygen( src )
+ new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
return
/obj/item/weapon/storage/box/engineer/
@@ -73,6 +74,7 @@
sleep(1)
new /obj/item/clothing/mask/breath( src )
new /obj/item/weapon/tank/emergency_oxygen/engi( src )
+ new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src )
return
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index 684c01bc226..f42ea800745 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -95,7 +95,8 @@
item_state = "syringe_kit"
w_class = 3
max_w_class = 2
- storage_slots = 6
+ max_combined_w_class = 20
+ storage_slots = 12
req_access = list(access_captain)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index c48e3dd6661..00cfb31e24a 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -145,7 +145,7 @@
w_class = 2.0
force = 4.0
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
- volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
+ volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
New()
@@ -197,4 +197,23 @@
..()
if(air_contents.nitrogen < 10)
usr << text("\red The meter on the [src.name] indicates you are almost out of air!")
- //playsound(usr, 'sound/effects/alert.ogg', 50, 1)
+ //playsound(usr, 'sound/effects/alert.ogg', 50, 1)
+
+
+/obj/item/weapon/tank/emergency_oxygen/vox
+ name = "vox specialized nitrogen tank"
+ desc = "A high-tech nitrogen tank designed specifically for Vox."
+ icon_state = "emergency_vox"
+ item_state = "emergency_vox"
+ icon_override = 'icons/mob/in-hand/tools.dmi'
+ volume = 25
+
+
+ New()
+ ..()
+ src.air_contents.oxygen -= (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
+ src.air_contents.nitrogen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
+ //
+ src.air_contents.update_values()
+
+ return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm
index 3877094138f..84b688d5a4e 100644
--- a/code/game/objects/items/weapons/vending_items.dm
+++ b/code/game/objects/items/weapons/vending_items.dm
@@ -57,3 +57,18 @@
machine_name = "AutoDrobe"
icon_state = "refill_costume"
charges = 19// of 58
+
+/obj/item/weapon/vending_refill/hatdispenser
+ machine_name = "hat"
+ icon_state = "refill_costume"
+ charges = 18// of 56
+
+/obj/item/weapon/vending_refill/suitdispenser
+ machine_name = "suit"
+ icon_state = "refill_costume"
+ charges = 68// of 206
+
+/obj/item/weapon/vending_refill/shoedispenser
+ machine_name = "shoe"
+ icon_state = "refill_costume"
+ charges = 30// of 91
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 260b7961b13..13d501d461a 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -312,7 +312,7 @@
var/id = null
New()
- new /obj/item/clothing/under/color/orange( src )
+ new /obj/item/clothing/under/color/orange/prison( src )
new /obj/item/clothing/shoes/orange( src )
return
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index a3a768991d0..a5cfcf418ee 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -136,9 +136,9 @@
icon_closed = "orange"
/obj/structure/closet/wardrobe/orange/New()
- new /obj/item/clothing/under/color/orange(src)
- new /obj/item/clothing/under/color/orange(src)
- new /obj/item/clothing/under/color/orange(src)
+ new /obj/item/clothing/under/color/orange/prison(src)
+ new /obj/item/clothing/under/color/orange/prison(src)
+ new /obj/item/clothing/under/color/orange/prison(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/orange(src)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 37d9a2ed417..bdd8255e7f4 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -1025,7 +1025,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(W, slot_wear_id)
if("blue wizard")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
@@ -1037,7 +1037,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("red wizard")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
@@ -1049,7 +1049,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
if("marisa wizard")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 3061098705a..220f70ac6e5 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -171,77 +171,6 @@
else
src.DB_species_unlock("Slime People",45)
return
- if(href_list["KarmaBuy3"])
- var/karma=verify_karma()
- switch(href_list["KarmaBuy3"])
- if("1")
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Tajaran Ambassador",30)
- return
- if("2")
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Unathi Ambassador",30)
- return
- if("3")
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Skrell Ambassador",30)
- return
- if("4")
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Diona Ambassador",30)
- return
- if("5")
- if(!is_alien_whitelisted(usr,"Kidan"))
- usr << "You need to have unlocked Kidan first!"
- return
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Kidan Ambassador",30)
- return
- if("6")
- if(!is_alien_whitelisted(usr,"Slime People"))
- usr << "You need to have unlocked Slime People first!"
- return
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Slime People Ambassador",30)
- return
- if("7")
- if(!is_alien_whitelisted(usr,"Grey"))
- usr << "You need to have unlocked Grey first!"
- return
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Grey Ambassador",30)
- return
- if("8")
- if(!is_alien_whitelisted(usr,"Vox"))
- usr << "You need to have unlocked Vox first!"
- return
- if(karma <30)
- usr << "You do not have enough karma!"
- return
- else
- src.DB_job_unlock("Vox Ambassador",30)
- return
switch(href_list["_src_"])
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 09f5db93afe..47d9875c2a9 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -31,7 +31,7 @@
process_med_hud(M,1)
/obj/item/clothing/glasses/hud/health_advanced/process_hud(var/mob/M)
- process_sec_hud(M,1)
+ process_med_hud(M,1)
/obj/item/clothing/glasses/hud/security
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index f5376520f8b..aa667436c46 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -7,7 +7,7 @@
var/slowdown_active = 2
action_button_name = "Toggle Magboots"
icon_action_button = "action_magboots"
- species_restricted = list("Skrell","Human","Unathi","Tajaran","Machine","Slime People","Kidan","Grey","Diona") //Vox get their own booties doubt they'd fix on talons anyway.
+ species_restricted = null
/obj/item/clothing/shoes/magboots/attack_self(mob/user)
if(src.magpulse)
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index 5b7aa5362ca..7bf3efb8b97 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -1,3 +1,15 @@
+/obj/item/clothing/under/color
+ desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
+
+/obj/item/clothing/under/color/random/New()
+ ..()
+ var/list/excluded = list(/obj/item/clothing/under/color/random, /obj/item/clothing/under/color, /obj/item/clothing/under/color/blackf, /obj/item/clothing/under/color/blue/dodgeball, /obj/item/clothing/under/color/orange/prison, /obj/item/clothing/under/color/red/dodgeball)
+ var/obj/item/clothing/under/color/C = pick(typesof(/obj/item/clothing/under/color) - excluded)
+ name = initial(C.name)
+ icon_state = initial(C.icon_state)
+ item_state = initial(C.item_state)
+ _color = initial(C._color)
+
/obj/item/clothing/under/color/black
name = "black jumpsuit"
icon_state = "black"
@@ -31,6 +43,7 @@
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
+ desc = "A tasteful grey jumpsuit that reminds you of the good old days."
icon_state = "grey"
item_state = "gy_suit"
_color = "grey"
@@ -38,6 +51,14 @@
species_fit = list("Vox")
/obj/item/clothing/under/color/orange
+ name = "orange jumpsuit"
+ desc = "Don't wear this near paranoid security officers"
+ icon_state = "orange"
+ item_state = "o_suit"
+ _color = "orange"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
+
+/obj/item/clothing/under/color/orange/prison
name = "orange jumpsuit"
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
icon_state = "orange"
@@ -49,6 +70,7 @@
/obj/item/clothing/under/color/pink
name = "pink jumpsuit"
+ desc = "Just looking at this makes you feel fabulous."
icon_state = "pink"
item_state = "p_suit"
_color = "pink"
@@ -84,78 +106,78 @@
icon_state = "psyche"
_color = "psyche"
-/obj/item/clothing/under/lightblue
+/obj/item/clothing/under/color/lightblue
name = "lightblue"
desc = "lightblue"
icon_state = "lightblue"
_color = "lightblue"
-/obj/item/clothing/under/aqua
+/obj/item/clothing/under/color/aqua
name = "aqua"
desc = "aqua"
icon_state = "aqua"
_color = "aqua"
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
-/obj/item/clothing/under/purple
+/obj/item/clothing/under/color/purple
name = "purple"
desc = "purple"
icon_state = "purple"
item_state = "p_suit"
_color = "purple"
-/obj/item/clothing/under/lightpurple
+/obj/item/clothing/under/color/lightpurple
name = "lightpurple"
desc = "lightpurple"
icon_state = "lightpurple"
_color = "lightpurple"
-/obj/item/clothing/under/lightgreen
+/obj/item/clothing/under/color/lightgreen
name = "lightgreen"
desc = "lightgreen"
icon_state = "lightgreen"
_color = "lightgreen"
-/obj/item/clothing/under/lightblue
+/obj/item/clothing/under/color/lightblue
name = "lightblue"
desc = "lightblue"
icon_state = "lightblue"
_color = "lightblue"
-/obj/item/clothing/under/lightbrown
+/obj/item/clothing/under/color/lightbrown
name = "lightbrown"
desc = "lightbrown"
icon_state = "lightbrown"
_color = "lightbrown"
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
-/obj/item/clothing/under/brown
+/obj/item/clothing/under/color/brown
name = "brown"
desc = "brown"
icon_state = "brown"
_color = "brown"
flags = FPRINT | TABLEPASS
-/obj/item/clothing/under/yellowgreen
+/obj/item/clothing/under/color/yellowgreen
name = "yellowgreen"
desc = "yellowgreen"
icon_state = "yellowgreen"
_color = "yellowgreen"
-/obj/item/clothing/under/darkblue
+/obj/item/clothing/under/color/darkblue
name = "darkblue"
desc = "darkblue"
icon_state = "darkblue"
_color = "darkblue"
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
-/obj/item/clothing/under/lightred
+/obj/item/clothing/under/color/lightred
name = "lightred"
desc = "lightred"
icon_state = "lightred"
_color = "lightred"
-/obj/item/clothing/under/darkred
+/obj/item/clothing/under/color/darkred
name = "darkred"
desc = "darkred"
icon_state = "darkred"
diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm
index 8eaf1c3ee7b..431e1a0d89d 100644
--- a/code/modules/customitems/item_spawning.dm
+++ b/code/modules/customitems/item_spawning.dm
@@ -1,10 +1,9 @@
/proc/EquipRacialItems(mob/living/carbon/human/M)
if(M.species.name == "Vox" || M.species.name == "Vox Armalis")
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(M), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES.
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
- M.equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(M), slot_back)
- M << "\blue You are now running on nitrogen internals from the [M.back] in your suit storage. Your species finds oxygen toxic, so you must breathe nitrogen only."
- M.internal = M.back
+ M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/vox(M), slot_l_hand)
+ M << "\blue You are now running on nitrogen internals from your [M.l_hand]. Your species finds oxygen toxic, so you must breathe nitrogen only."
+ M.internal = M.l_hand
if (M.internals)
M.internals.icon_state = "internal1"
diff --git a/code/modules/mob/living/carbon/_defines.dm b/code/modules/mob/living/carbon/_defines.dm
index 10285db54df..aa8fa28c131 100644
--- a/code/modules/mob/living/carbon/_defines.dm
+++ b/code/modules/mob/living/carbon/_defines.dm
@@ -1,9 +1,9 @@
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
-#define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
+#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
#define HUMAN_CRIT_MAX_OXYLOSS ( (last_tick_duration) /5) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 100HP to get through, so (1/3)*last_tick_duration per second. Breaths however only happen every 4 ticks.
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
-#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point
+#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point
#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 046fad8d152..3353b07b6dd 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -377,7 +377,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
var/datum/gas_mixture/breath
// HACK NEED CHANGING LATER
- if(health < config.health_threshold_crit && !reagents.has_reagent("inaprovaline"))
+ if(health < config.health_threshold_crit)
losebreath++
if(losebreath>0) //Suffocating so do not take a breath
@@ -487,6 +487,8 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
return 0
if(!breath || (breath.total_moles() == 0) || suiciding)
+ if(reagents.has_reagent("inaprovaline"))
+ return
if(suiciding)
adjustOxyLoss(2)//If you are suiciding, you should die a little bit faster
failed_last_breath = 1
@@ -1672,7 +1674,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
proc/handle_decay()
var/decaytime = world.time - timeofdeath
-
+
if(species.flags & IS_SYNTHETIC)
return
@@ -1687,7 +1689,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if(decaytime > 18000 && decaytime <= 27000)//45 minutes for decaylevel4 -- skeleton
decaylevel = 3
-
+
if(decaytime > 27000)
decaylevel = 4
makeSkeleton()
@@ -1697,7 +1699,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
for(var/mob/living/carbon/human/H in range(decaylevel, src))
if(prob(5))
if(airborne_can_reach(get_turf(src), get_turf(H)))
- if(istype(loc,/obj/item/bodybag))
+ if(istype(loc,/obj/item/bodybag))
return
var/obj/item/clothing/mask/M = H.wear_mask
if(M && (M.flags & MASKCOVERSMOUTH))
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 8e0373536db..385a38fcf5a 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -24,7 +24,8 @@
"Cat" = "cat",
"Mouse" = "mouse",
"Monkey" = "monkey",
- "Corgi" = "corgi"
+ "Corgi" = "corgi",
+ "Fox" = "fox"
)
var/global/list/possible_say_verbs = list(
@@ -33,7 +34,7 @@
"Beep" = list("beeps","beeps loudly","boops"),
"Chirp" = list("chirps","chirrups","cheeps"),
"Feline" = list("purrs","yowls","meows"),
- "Canine" = list("barks","growls","whines")
+ "Canine" = list("yaps","barks","growls")
)
diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm
index 940c8b155ef..54aac02d952 100644
--- a/code/modules/organs/organ_internal.dm
+++ b/code/modules/organs/organ_internal.dm
@@ -146,7 +146,7 @@
owner.drip(10)
if(prob(4))
spawn owner.emote("me", 1, "gasps for air!")
- owner.losebreath += 15
+ owner.losebreath += 5
/datum/organ/internal/lungs/robotic
damagelevel = 0.8
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index b2147e6a047..0c6668406d3 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -70,19 +70,18 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "emergency autoinjector"
- desc = "A potent mix of pain killers and muscle stimulants."
+ desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
icon_state = "autoinjector"
item_state = "autoinjector"
- amount_per_transfer_from_this = 5
- possible_transfer_amounts = list(5)
- volume = 5
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list(10)
+ volume = 10
var/emagged = 0
/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
..()
reagents.remove_reagent("doctorsdelight", 30)
- reagents.add_reagent("tramadol", 4)
- reagents.add_reagent("hyperzine", 1)
+ reagents.add_reagent("inaprovaline", 10)
update_icon()
return
diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm
index 13a90e1ab2d..04d60ab38aa 100644
--- a/code/modules/surgery/face.dm
+++ b/code/modules/surgery/face.dm
@@ -42,7 +42,7 @@
user.visible_message("\red [user]'s hand slips, slicing [target]'s throat wth \the [tool]!" , \
"\red Your hand slips, slicing [target]'s throat wth \the [tool]!" )
affected.createwound(CUT, 60)
- target.losebreath += 10
+ target.losebreath += 4
/datum/surgery_step/face/mend_vocal
allowed_tools = list(
@@ -70,7 +70,7 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \
"\red Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!")
- target.losebreath += 10
+ target.losebreath += 4
/datum/surgery_step/face/fix_face
allowed_tools = list(
diff --git a/code/unused/computer3/computers/communications.dm b/code/unused/computer3/computers/communications.dm
index 23b2540ade3..d0ca19b73ec 100644
--- a/code/unused/computer3/computers/communications.dm
+++ b/code/unused/computer3/computers/communications.dm
@@ -317,6 +317,7 @@
if(STATE_CANCELSHUTTLE)
dat = confirm_menu("cancel the shuttle","cancelshuttle2")
if(STATE_MESSAGELIST)
+ dat += "\[ Back \]
"
dat += "Messages:"
for(var/i = 1; i<=messagetitle.len; i++)
dat += "
[messagetitle[i]]"
diff --git a/icons/effects/warning_stripes.dmi b/icons/effects/warning_stripes.dmi
index a0cf5e32447..4970e39db5f 100644
Binary files a/icons/effects/warning_stripes.dmi and b/icons/effects/warning_stripes.dmi differ
diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi
index 213f492add0..17e22407296 100644
Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ
diff --git a/icons/mob/in-hand/tools.dmi b/icons/mob/in-hand/tools.dmi
index 963efda7050..3daff54c89e 100644
Binary files a/icons/mob/in-hand/tools.dmi and b/icons/mob/in-hand/tools.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index ad78a5a08aa..2e5468640ea 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/pai.dmi b/icons/mob/pai.dmi
index 4edcf7d8665..954088bfa7a 100644
Binary files a/icons/mob/pai.dmi and b/icons/mob/pai.dmi differ
diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi
index 6c7175948fe..7ae00b2092f 100644
Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 9050acacb72..382f08b3a9b 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -897,7 +897,7 @@
"arm" = (/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = -35; range = 10},/obj/machinery/door_control{desc = "A remote control switch for the brig doors leading to cells 1-4."; id = "BrigEast"; name = "Brig Cells 1-4 Hallway Doors"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; range = 10},/obj/machinery/door_control{desc = "A remote control switch for the brig doors leading to cells 5 and 6."; id = "BrigWest"; name = "Brig Cells 5-6 Hallway Doors"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = -25; range = 20},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/lobby)
"arn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/C)
"aro" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/C)
-"arp" = (/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Door"; req_access_txt = "61"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{pixel_x = 28},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/security/prison/cell_block/C)
+"arp" = (/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Door"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{pixel_x = 28},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/security/prison/cell_block/C)
"arq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/C)
"arr" = (/obj/item/weapon/storage/secure/safe{pixel_x = -23},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"ars" = (/obj/structure/stool,/turf/simulated/floor/carpet,/area/security/detectives_office)
@@ -909,10 +909,10 @@
"ary" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"arz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area)
"arA" = (/obj/machinery/light{dir = 1},/obj/structure/closet/wardrobe/grey,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
-"arB" = (/obj/structure/closet/wardrobe/black,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
+"arB" = (/obj/machinery/camera{c_tag = "Locker Room"; network = list("SS13")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/closet/wardrobe/black,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"arC" = (/obj/structure/closet/wardrobe/xenos,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"arD" = (/obj/structure/closet/wardrobe/mixed,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
-"arE" = (/obj/machinery/washing_machine,/obj/machinery/camera{c_tag = "Locker Room"; network = list("SS13")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
+"arE" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"arF" = (/obj/machinery/washing_machine,/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"arG" = (/obj/machinery/washing_machine,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/crew_quarters/locker)
"arH" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/turf/simulated/floor,/area/security/prisonershuttle)
@@ -10246,7 +10246,7 @@
"dPb" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power)
"dPc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power)
"dPd" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/power)
-"dPe" = (/turf/simulated/floor,/area/research_outpost/longtermstorage)
+"dPe" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor,/area/research_outpost/longtermstorage)
"dPf" = (/turf/simulated/mineral,/area/research_outpost/power)
"dPg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dPh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
@@ -12546,6 +12546,7 @@
"eHn" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/dirt,/obj/machinery/light,/turf/simulated/floor,/area/engiestation)
"eHo" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engiestation)
"eHp" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor,/area/engiestation)
+"eHq" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/power)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -12633,7 +12634,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaaaaafoaabaiNaiOaiOaiOaiOaiPaiQaiRaiSaiSaiSaiSaiTaaaafoaaaafpamaanGanGanGamaaaaaaaaaiaaqaoqaoraaJaaJamLamLaaqaaqaaqaaqaosaotaaqaaqaaqaouaovaowaouaaqaaqaaqaoxaoyaaqaozaoAaaqaoBaoyaaqaaqaaqaoCaoDaaqaaJaoEaoFaoGaoHaaqamwaokaoIaaiaaiaaiaoJaoKaoLaaiaoMaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafpaabaoNaoOaoOaoOaoOaoPaoQaoRaoSaoSaoSaoSaoTaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZaaaalZalZalZalZalZalZalZalZalZaaaalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaafoaabajrajrajrajrajraabaoUaabajrajrajrajrajraabafoaaaafXaoVaoWanGanGamaaaaaaaaaiaoXaoYaoZaiZapbamLapcaaqapdapeapfapgaphapiapjapkaplapmapnapoappapqapiaprapsaptapuapvapwapxapsaaqapyapzapAapBaaqapCapDapEapFapGapHamwaokapIapJapKapLapMapMapNaaiapOaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafpaabapPapPapPapPapPaabapQaabapPapPapPapPapPaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZaaaalZalZalZalZalZalZalZalZalZaaaalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaafoaaaaabaabaabaabaabaaaapRapSapSapSapSapSapTaabafoaaaafpamaapUapVapWapXaaaaaaaaiapYapZaqaaqbaaJaqcamLaaqaqdaqeaqfaqgaqhaqiaqjaqkaqlaqmaqnaqoaqkaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaqAaqBaqCaqDaaqaqEaqFaqFaqGaqFaqHamwaokanAanAanAanAaqIanAaqJaqKaqLaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaafoaaaaaaaaaaabaaaaaaaabapQaaaaaaaaaaabaaaaaaaaaafoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaafoafoafoafoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMaaaafoaaaafpaqNaqOaqPaqPamaaaaaaaaaiapYaqQaqRaqSaaJaqTaqUaaqaqVaqWaqXaqYaqZaraarbarcardarearfargarhariaraarjaqyarkarlarmarkaqxaqyaaqarnaroarparqaaqarrarsaqFaqGaqFartamwaruarvarwarxarwarvaryacfarzaaqaaiarBarAarDarCarEarFarGarFarFaaiaaaaaaaaaafpaabaooaooaooaooaooaabapQaabaooaooaooaooaooaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaafoafoafoafoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMaaaafoaaaafpaqNaqOaqPaqPamaaaaaaaaaiapYaqQaqRaqSaaJaqTaqUaaqaqVaqWaqXaqYaqZaraarbarcardarearfargarhariaraarjaqyarkarlarmarkaqxaqyaaqarnaroarparqaaqarrarsaqFaqGaqFartamwaruarvarwarxarwarvaryacfarzaaqaaiarEarAarDarCarBarFarGarFarFaaiaaaaaaaaaafpaabaooaooaooaooaooaabapQaabaooaooaooaooaooaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqMaaaaaaaaaafpamaaqPaqPaqPamaaaaaaaaaiaaiabnaaiaaiafjaaiarHaaiaaqaaqaaqarIarJaaqaaqaaqaaqarKarLaaqaaqaaqaaiarMarNarOarParQarRaqxarSaaqarTarUarVadEabIarXarYarZadzaqFasaamwasbascasdaseasfasganAaaiashasiaaiasjaskaslasmasmasmasmasmasnaaiaaaaaaaaaafpaabaoNaoOaoOaoOaoOaoPaoQaoRaoSaoSaoSaoSaoTaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaqMaaaaaaaaaafoamaaqPaqPaqPamaaaiaaiaaiasoaspasqasrassastasuaaiasvapeapfapgaphapiaswapkasxasyaszasAasBasCapiasDasEasFasGasHasHasIasJaaqasKasLasMasNaaqasOasPasQaqGaqFasRamwasbaqIascascascasSasTasUasVasWaaiasXasYahwataatbatcatdatdateaaiaaaaaaaaaafpaabapPapPapPapPapPaabapQaabapPapPapPapPapPaabafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanFanFanFanFanFanFanFanFanFanFanFanFanFanFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiatfatgathatiatjaaiaaaaaaaaaaaaaaaaqMaaaaaaaabafpamaaqPaqPaqPatkamIatlamKatmatnatoatpatqatoatraaiaqdatsattatuatvatwatxatyatzatAatBatCatDatEatFatGatHatHatIatHatHatJatKatLatMatNatOatPaaqatQatRatSatTatUatVamwasbatWatXatXatXatYatZauaaubaucaaiaudaueaufataataataataataataaaiaaaaaaaaaamFaaaaaaaaaaabaaaaaaaaaapQaaaaaaaaaaabaaaaaaaaaafoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZalZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -13635,7 +13636,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMKdMLdMMdMNdMOdMPdMQaabaabdKkdKkdJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdMRdMRdMSaabdJQaaaaabaabaabaabaabdJadJLdJLdJLdJLdJLdMTdMUdJLdKEdKEdMVdMWdMXdMadMYdMZdNadNbdNcdNddMadNedNfdNgdNhdNidNjdNkdKLdNldNmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJbdJbdJbdJbdJbaaadJbdJbdJbdJbdJbaaadJbdJbdJbdJbdJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNndMjdNodNpdNqdMmdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdMRdMRdMRaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdKbdNtdNudNvdNwdNxdNydNzdNAdNBdNCdNDdNEdMadNFdNGdNHdNIdNJdNKdNLdNMdNNdNOdNOdNOdNPdNQdNRdNSdNTdNTdNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJbdJbdJbdJbdJbaaadJbdJbdJbdJbdJbaaadJbdJbdJbdJbdJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdNVdNWdNXdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdMRaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdNYdNZdOadObdOcdOddOedOfdOgdOhdOidOjdOkdOldOmdOndOodOpdOqdOrdOsdOtdOudNOdZqdOwdOxdOydNOdOzdNmdNmdNmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJbdJbdJbdJbdJbaaaaaaaaaaaaaaaaaaaaadJbdJbdJbdJbdJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdOAdOBdOCdODdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkaaaaaaaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdOEdOFdNudOGdOHdOIdOJdOKdOLdOMdJLdONdOOdOPdOQdORdSFdOTdSDdOVdMadOWdOXdOYdOZdOZdPadPbdPcdPddPDdPfdPfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdOAdOBdOCdODdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkaaaaaaaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdOEdOFdNudOGdOHdOIdOJdOKdOLdOMdJLdONdOOdOPdOQdORdSFdOTdSDdOVdMadOWdOXdOYdOZdOZdPadPbdPcdPdeHqdPfdPfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdPgdPhdPidNrdPjdPkdNrdNrdNrdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkaaaaaaaaaaaaaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdPldOFdNudOGdOHdPmdPndOKdPodPpdJLdPqdPrdMadPsdMadMadMadMadPtdMadPudPvdNOdPwdPxdPydPzdPAdPBdPCdPDdPDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPEdPFdPGdPHdPIdPJdKPdMPdPKdNrdPLdPMdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkaaaaaaaaaaaaaaaaaadJQdNsdNsdNsdNsdNsdNsdNsdKbdOFdNudTRdOHdPNdPOdOKdPQdPRdJLdPSdPTdTTdPVeGHdPXdPYdMadPZdQadQbdQcdQddQedQfdQgdQhdQidPBdPfdPfdPfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQjdQkdPFdQldQmdQndQodQpdPKdQqdPMdQrdPLdNrdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkaaaaaaaaaaaaaaaaaadQsdQtdQudQvdQwdQxdQudQydQzdQAdQBdKbdQCdQDdJLdJLdJLdJLdJLdQEdQFdQGdPVdQHdPXdQIdMadQJdQKdQLdQMdQNdQOdQPdSGdQRdQSdQTdQUdJLdQVdKzdJAdJAdJAdJAdJAdJAdJBdQWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa