Upstream Sync

Syncs with ParadiseSS13/Paradise and fixes merge conflicts.
This commit is contained in:
DZD
2014-12-09 22:55:08 -05:00
36 changed files with 254 additions and 196 deletions
@@ -317,6 +317,7 @@
if(STATE_CANCELSHUTTLE)
dat = confirm_menu("cancel the shuttle","cancelshuttle2")
if(STATE_MESSAGELIST)
dat += "\[ <A HREF='?src=\ref[src];main'>Back</A> \]<BR>"
dat += "Messages:"
for(var/i = 1; i<=messagetitle.len; i++)
dat += "<BR><A HREF='?src=\ref[src];viewmessage;message-num=[i]'>[messagetitle[i]]</A>"
+8 -7
View File
@@ -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 << "<span class='userdanger'>Your camera isn't functional.</span>"
return
if(aiCamera)
if(aiCamera.in_camera_mode)
aiCamera.camera_mode_off()
if(is_component_functioning("camera"))
aiCamera.captureimage(A, usr)
else
src << "<span class='userdanger'>Your camera isn't functional.</span>"
return
/*
cyborg restrained() currently does nothing
+17
View File
@@ -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"
+1 -1
View File
@@ -78,7 +78,7 @@
M << "<B>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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+27 -30
View File
@@ -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 << "<span class='notice'>Close the maintenance panel first.</span>"
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 << "<span class='notice'>Close the maintenance panel first.</span>"
user << "<span class='notice'>Close the maintenance panel first.</span>"
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 << "<span class='notice'>The maintenance panel is locked.</span>"
return
return
default_deconstruction_screwdriver(user, "sleeper-o", "sleeper-open", G)
return
return
if (istype(G, /obj/item/weapon/wrench))
if(src.occupant)
user << "<span class='notice'>The scanner is occupied.</span>"
return
return
if(panel_open)
user << "<span class='notice'>Close the maintenance panel first.</span>"
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 <b>Close the maintenance panel first.</b>"
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 <B>Close the maintenance panel first.</B>"
return
return
if(occupant)
user << "\blue <B>The sleeper is already occupied!</B>"
return
+4 -1
View File
@@ -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))
+26 -31
View File
@@ -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"
@@ -52,6 +52,59 @@
/obj/effect/decal/warning_stripes/New()
. = ..()
loc.overlays += src
del src
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"
@@ -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
@@ -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"
@@ -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 <B>The meter on the [src.name] indicates you are almost out of air!</B>")
//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
@@ -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
@@ -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
@@ -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)
+3 -3
View File
@@ -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)
-71
View File
@@ -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_"])
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+34 -12
View File
@@ -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 <i>fabulous</i>."
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"
+3 -4
View File
@@ -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"
+2 -2
View File
@@ -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
+6 -4
View File
@@ -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))
+3 -2
View File
@@ -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")
)
+1 -1
View File
@@ -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
@@ -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
+2 -2
View File
@@ -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(
@@ -317,6 +317,7 @@
if(STATE_CANCELSHUTTLE)
dat = confirm_menu("cancel the shuttle","cancelshuttle2")
if(STATE_MESSAGELIST)
dat += "\[ <A HREF='?src=\ref[src];main'>Back</A> \]<BR>"
dat += "Messages:"
for(var/i = 1; i<=messagetitle.len; i++)
dat += "<BR><A HREF='?src=\ref[src];viewmessage;message-num=[i]'>[messagetitle[i]]</A>"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

+7 -6
View File
@@ -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