diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index b5449fe737..17da4afcf7 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -94,6 +94,22 @@
..()
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 800
+// VOREStation Edit Start - Wall mounted vents
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted
+ name = "Wall Mounted Air Vent"
+
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted/can_unwrench()
+ return FALSE // No way to construct these, so don't let them be removed.
+
+// Return the air from the turf in "front" of us (opposite the way the pipe is facing)
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted/return_air()
+ var/turf/T = get_step(src, reverse_dir[dir])
+ if(isnull(T))
+ return ..()
+ return T.return_air()
+
+// VOREStation Edit End
+
/obj/machinery/atmospherics/unary/vent_pump/engine
name = "Engine Core Vent"
power_channel = ENVIRON
@@ -165,7 +181,7 @@
if(!can_pump())
return 0
- var/datum/gas_mixture/environment = loc.return_air()
+ var/datum/gas_mixture/environment = return_air() // VOREStation Edit - Use our own proc
var/power_draw = -1
diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm
index 544baf8339..ccbb9306ed 100644
--- a/code/__defines/subsystems.dm
+++ b/code/__defines/subsystems.dm
@@ -30,3 +30,4 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_SHUTTLES 3
#define INIT_ORDER_LIGHTING 0
#define INIT_ORDER_AIR -1
+#define INIT_ORDER_XENOARCH -20
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 8e6a06b02a..28ce7fce53 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -36,8 +36,8 @@ datum/controller/game_controller/New()
datum/controller/game_controller/proc/setup()
setup_objects()
- setupgenetics()
- SetupXenoarch()
+ // setupgenetics() Moved to SSatoms
+ // SetupXenoarch() - Moved to SSxenoarch
transfer_controller = new
admin_notice("Initializations complete.", R_DEBUG)
diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm
index bd9a2aeafb..437c10424b 100644
--- a/code/controllers/subsystem.dm
+++ b/code/controllers/subsystem.dm
@@ -166,7 +166,7 @@
- if(can_fire && !(SS_NO_FIRE in flags))
+ if(can_fire && !(SS_NO_FIRE & flags))
msg = "[round(cost,1)]ms|[round(tick_usage,1)]%|[round(ticks,0.1)]\t[msg]"
else
msg = "OFFLINE\t[msg]"
diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm
index 8716292eaf..6b5669878c 100644
--- a/code/controllers/subsystems/atoms.dm
+++ b/code/controllers/subsystems/atoms.dm
@@ -18,7 +18,7 @@ SUBSYSTEM_DEF(atoms)
var/list/BadInitializeCalls = list()
/datum/controller/subsystem/atoms/Initialize(timeofday)
- setupgenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
+ setupgenetics() //to set the mutations' place in structural enzymes, so initializers know where to put mutations.
initialized = INITIALIZATION_INNEW_MAPLOAD
to_world_log("Initializing objects")
admin_notice("Initializing objects", R_DEBUG)
diff --git a/code/controllers/subsystems/mapping_vr.dm b/code/controllers/subsystems/mapping_vr.dm
index de40d7675d..6e095c6b62 100644
--- a/code/controllers/subsystems/mapping_vr.dm
+++ b/code/controllers/subsystems/mapping_vr.dm
@@ -59,22 +59,27 @@ SUBSYSTEM_DEF(mapping)
var/list/deffo_load = using_map.lateload_z_levels
var/list/maybe_load = using_map.lateload_single_pick
- for(var/mapname in deffo_load)
- var/datum/map_template/MT = map_templates[mapname]
- if(!istype(MT))
- error("Lateload Z level \"[mapname]\" is not a valid map!")
+ for(var/list/maplist in deffo_load)
+ if(!islist(maplist))
+ error("Lateload Z level [maplist] is not a list! Must be in a list!")
continue
- MT.load_new_z(centered = FALSE)
- CHECK_TICK
+ for(var/mapname in maplist)
+ var/datum/map_template/MT = map_templates[mapname]
+ if(!istype(MT))
+ error("Lateload Z level \"[mapname]\" is not a valid map!")
+ continue
+ MT.load_new_z(centered = FALSE)
+ CHECK_TICK
if(LAZYLEN(maybe_load))
- var/picked = pick(maybe_load)
- var/list/picklist
+ var/picklist = pick(maybe_load)
- if(islist(picked)) //So you can have a 'chain' of z-levels that make up one away mission
- picklist = picked
- else
- picklist = list(picked)
+ if(!picklist) //No lateload maps at all
+ return
+
+ if(!islist(picklist)) //So you can have a 'chain' of z-levels that make up one away mission
+ error("Randompick Z level [picklist] is not a list! Must be in a list!")
+ return
for(var/map in picklist)
var/datum/map_template/MT = map_templates[map]
diff --git a/code/controllers/subsystems/mobs.dm b/code/controllers/subsystems/mobs.dm
index ce25519435..9c330edd66 100644
--- a/code/controllers/subsystems/mobs.dm
+++ b/code/controllers/subsystems/mobs.dm
@@ -15,14 +15,24 @@ SUBSYSTEM_DEF(mobs)
var/list/currentrun = list()
var/log_extensively = FALSE
var/list/timelog = list()
+ var/list/busy_z_levels
+ var/slept_mobs = 0
/datum/controller/subsystem/mobs/stat_entry()
- ..("P: [global.mob_list.len]")
+ ..("P: [global.mob_list.len] | S: [slept_mobs]")
/datum/controller/subsystem/mobs/fire(resumed = 0)
+ var/list/busy_z_levels = src.busy_z_levels
+
if (!resumed)
+ slept_mobs = 0
src.currentrun = mob_list.Copy()
- if(log_extensively) timelog = list("-Start- [TICK_USAGE]")
+ busy_z_levels = list()
+ for(var/played_mob in player_list)
+ if(!played_mob || isobserver(played_mob))
+ continue
+ var/mob/pm = played_mob
+ busy_z_levels |= pm.z
//cache for sanic speed (lists are references anyways)
var/list/currentrun = src.currentrun
@@ -37,11 +47,10 @@ SUBSYSTEM_DEF(mobs)
// Right now mob.Life() is unstable enough I think we need to use a try catch.
// Obviously we should try and get rid of this for performance reasons when we can.
try
- var/time_before = TICK_USAGE
+ if(M.low_priority && !(M.z in busy_z_levels))
+ slept_mobs++
+ continue
M.Life(times_fired)
- var/time_after = TICK_USAGE
- var/time_diff = time_after - time_before
- if(log_extensively && (time_diff > 0.01)) timelog += list("[time_diff]% - [M] ([M.x],[M.y],[M.z])" = M)
catch(var/exception/e)
log_runtime(e, M, "Caught by [name] subsystem")
diff --git a/code/modules/xenoarcheaology/master_controller.dm b/code/controllers/subsystems/xenoarch.dm
similarity index 79%
rename from code/modules/xenoarcheaology/master_controller.dm
rename to code/controllers/subsystems/xenoarch.dm
index a6689e36b6..eb6c97ea75 100644
--- a/code/modules/xenoarcheaology/master_controller.dm
+++ b/code/controllers/subsystems/xenoarch.dm
@@ -1,14 +1,35 @@
-/datum/controller/game_controller
- var/list/artifact_spawning_turfs = list()
- var/list/digsite_spawning_turfs = list()
-
#define XENOARCH_SPAWN_CHANCE 0.5
#define DIGSITESIZE_LOWER 4
#define DIGSITESIZE_UPPER 12
#define ARTIFACTSPAWNNUM_LOWER 6
#define ARTIFACTSPAWNNUM_UPPER 12
-/datum/controller/game_controller/proc/SetupXenoarch()
+//
+// Xenoarch subsystem handles initialization of Xenoarcheaology artifacts and digsites.
+//
+SUBSYSTEM_DEF(xenoarch)
+ name = "Xenoarch"
+ init_order = INIT_ORDER_XENOARCH
+ flags = SS_NO_FIRE
+ var/list/artifact_spawning_turfs = list()
+ var/list/digsite_spawning_turfs = list()
+
+/datum/controller/subsystem/xenoarch/Initialize(timeofday)
+ SetupXenoarch()
+ ..()
+
+/datum/controller/subsystem/xenoarch/Recover()
+ if (istype(SSxenoarch.artifact_spawning_turfs))
+ artifact_spawning_turfs = SSxenoarch.artifact_spawning_turfs
+ if (istype(SSxenoarch.digsite_spawning_turfs))
+ digsite_spawning_turfs = SSxenoarch.digsite_spawning_turfs
+
+/datum/controller/subsystem/xenoarch/stat_entry(msg)
+ if (!Debug2)
+ return // Only show up in stat panel if debugging is enabled.
+ . = ..()
+
+/datum/controller/subsystem/xenoarch/proc/SetupXenoarch()
for(var/turf/simulated/mineral/M in world)
if(!M.density)
continue
diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm
index 4755b982ec..5d06eccc77 100644
--- a/code/datums/repositories/radiation.dm
+++ b/code/datums/repositories/radiation.dm
@@ -116,7 +116,7 @@ var/global/repository/radiation/radiation_repository = new()
else if(O.density) //So open doors don't get counted
var/material/M = O.get_material()
if(!M) continue
- cached_rad_resistance += M.weight
+ cached_rad_resistance += M.radiation_resistance
// Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana
radiation_repository.resistance_cache[src] = (length(contents) + 1)
diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm
index bfaf2658bf..2c2e26d97d 100644
--- a/code/datums/supplypacks/medical.dm
+++ b/code/datums/supplypacks/medical.dm
@@ -330,8 +330,8 @@
access = access_cmo
/datum/supply_packs/med/defib
- name = "Defibrilator crate"
+ name = "Defibrillator crate"
contains = list(/obj/item/device/defib_kit = 2)
cost = 30
containertype = /obj/structure/closet/crate/medical
- containername = "Defibrilator crate"
\ No newline at end of file
+ containername = "Defibrillator crate"
\ No newline at end of file
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 4cd21a5527..b6a45d9a07 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -102,8 +102,9 @@
temp_blade.attack_self()
/obj/item/weapon/cane/concealed/attack_self(var/mob/user)
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
if(concealed_blade)
- user.visible_message("[user] has unsheathed \a [concealed_blade] from \his [src]!", "You unsheathe \the [concealed_blade] from \the [src].")
+ user.visible_message("[user] has unsheathed \a [concealed_blade] from [T.his] [src]!", "You unsheathe \the [concealed_blade] from \the [src].")
// Calling drop/put in hands to properly call item drop/pickup procs
playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
user.drop_from_inventory(src)
@@ -117,7 +118,8 @@
/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user)
if(!src.concealed_blade && istype(W))
- user.visible_message("[user] has sheathed \a [W] into \his [src]!", "You sheathe \the [W] into \the [src].")
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ user.visible_message("[user] has sheathed \a [W] into [T.his] [src]!", "You sheathe \the [W] into \the [src].")
user.drop_from_inventory(W)
W.loc = src
src.concealed_blade = W
diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm
index 5ab724789b..35526be0d6 100644
--- a/code/game/gamemodes/changeling/powers/armblade.dm
+++ b/code/game/gamemodes/changeling/powers/armblade.dm
@@ -86,7 +86,8 @@
..()
/obj/item/weapon/melee/changeling/suicide_act(mob/user)
- viewers(user) << "[user] is impaling \himself the [src.name]! It looks like \he's trying to commit suicide."
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide."
return(BRUTELOSS)
/obj/item/weapon/melee/changeling/process() //Stolen from ninja swords.
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 98b091abaa..ab8111000d 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -38,7 +38,7 @@
for(var/limb in H.organs_by_name)
var/obj/item/organ/external/current_limb = H.organs_by_name[limb]
if(current_limb)
- current_limb.undislocate()
+ current_limb.relocate()
current_limb.open = 0
BITSET(H.hud_updateflag, HEALTH_HUD)
@@ -60,4 +60,4 @@
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index d2fdffcb16..0e0ff60791 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -168,7 +168,8 @@ var/list/sacrificed = list()
if (!target.can_feel_pain())
target.visible_message("The markings below \the [target] glow a bloody red.")
else
- target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.")
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
+ target.visible_message("[target] writhes in pain as the markings below [TT.him] glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.")
if(!waiting_for_input[target]) //so we don't spam them with dialogs if they hesitate
waiting_for_input[target] = 1
@@ -373,15 +374,18 @@ var/list/sacrificed = list()
sleep(10 SECONDS)
if(corpse_to_raise.client)
+
+ var/datum/gender/TU = gender_datums[corpse_to_raise.get_visible_gender()]
+ var/datum/gender/TT = gender_datums[body_to_sacrifice.get_visible_gender()]
cult.add_antagonist(corpse_to_raise.mind)
corpse_to_raise.revive()
usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
- corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \
+ corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as [TU.he] stand[TU.s] up, slowly starting to breathe again.", \
"Life... I'm alive again...", \
"You hear a faint, slightly familiar whisper.")
- body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from \his remains!", \
+ body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from [TT.his] remains!", \
"You feel as your blood boils, tearing you apart.", \
"You hear a thousand voices, all crying in pain.")
body_to_sacrifice.gib()
@@ -433,8 +437,9 @@ var/list/sacrificed = list()
ajourney() //some bits copypastaed from admin tools - Urist
if(usr.loc==src.loc)
var/mob/living/carbon/human/L = usr
+ var/datum/gender/TU = gender_datums[L.get_visible_gender()]
usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!")
- usr.visible_message("[usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", \
+ usr.visible_message("[usr]'s eyes glow blue as [TU.he] freeze[TU.s] in place, absolutely motionless.", \
"The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this is a great sight, being here strains your mind and body. Hurry...", \
"You hear only complete silence for a moment.")
announce_ghost_joinleave(usr.ghostize(1), 1, "You feel that they had to use some [pick("dark", "black", "blood", "forgotten", "forbidden")] magic to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place!")
@@ -599,11 +604,12 @@ var/list/sacrificed = list()
mend()
var/mob/living/user = usr
+ var/datum/gender/TU = gender_datums[usr.get_visible_gender()]
src = null
user.say("Uhrast ka'hfa heldsagen ver[pick("'","`")]lot!")
user.take_overall_damage(200, 0)
runedec+=10
- user.visible_message("\The [user] keels over dead, \his blood glowing blue as it escapes \his body and dissipates into thin air.", \
+ user.visible_message("\The [user] keels over dead, [TU.his] blood glowing blue as it escapes [TU.his] body and dissipates into thin air.", \
"In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.", \
"You hear faint rustle.")
for(,user.stat==2)
@@ -886,7 +892,8 @@ var/list/sacrificed = list()
if (cultist == user) //just to be sure.
return
if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet)))
- user << "You cannot summon \the [cultist], for \his shackles of blood are strong."
+ var/datum/gender/TU = gender_datums[cultist.get_visible_gender()]
+ user << "You cannot summon \the [cultist], for [TU.his] shackles of blood are strong."
return fizzle()
cultist.loc = src.loc
cultist.lying = 1
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
index 81a6148e2c..1051587d13 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
@@ -99,7 +99,9 @@
/turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj)
if(istype(AM, /mob/living))
- AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\
+ var/mob/living/M = AM
+ var/datum/gender/T = gender_datums[M.get_visible_gender()]
+ AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\
"You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\
"You hear an unearthly noise as a wave of heat washes over you.")
else
diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm
index 3db262d3df..f952dbad06 100644
--- a/code/game/gamemodes/newobjective.dm
+++ b/code/game/gamemodes/newobjective.dm
@@ -1252,7 +1252,8 @@ datum
proc/find_target()
..()
if(target && target.current)
- explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : target.assigned_role], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head."
else
explanation_text = "Free Objective"
return target
@@ -1261,7 +1262,8 @@ datum
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
- explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [target.current.gender == MALE ? "him" : target.current.gender == FEMALE ? "her" : "them"], and bring us [target.current.gender == MALE ? "his" : target.current.gender == FEMALE ? "her" : "their"] severed head."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [target.role_alt_title ? target.role_alt_title : (!role_type ? target.assigned_role : target.special_role)], has defied us for the last time. Make an example of [T.him], and bring us [T.his] severed head."
else
explanation_text = "Free Objective"
return target
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 7237669a77..c4494a9ee8 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -69,7 +69,8 @@ datum/objective/anti_revolution/execute
find_target()
..()
if(target && target.current)
- explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute \him[target.current]."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute [T.him]."
else
explanation_text = "Free Objective"
return target
@@ -78,7 +79,8 @@ datum/objective/anti_revolution/execute
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
- explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute \him[target.current]."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has extracted confidential information above their clearance. Execute [T.him]."
else
explanation_text = "Free Objective"
return target
@@ -127,7 +129,8 @@ datum/objective/anti_revolution/demote
find_target()
..()
if(target && target.current)
- explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant."
else
explanation_text = "Free Objective"
return target
@@ -135,7 +138,8 @@ datum/objective/anti_revolution/demote
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
- explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote \him[target.current] to assistant."
+ var/datum/gender/T = gender_datums[target.current.get_visible_gender()]
+ explanation_text = "[target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] has been classified as harmful to [using_map.company_name]'s goals. Demote [T.him] to assistant."
else
explanation_text = "Free Objective"
return target
diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm
index 5eac627728..3e6d2dd8ab 100644
--- a/code/game/gamemodes/technomancer/spells/illusion.dm
+++ b/code/game/gamemodes/technomancer/spells/illusion.dm
@@ -167,8 +167,9 @@
switch(M.a_intent)
if(I_HELP)
- M.visible_message("[M] hugs [src] to make \him feel better!", \
- "You hug [src] to make \him feel better!")
+ var/datum/gender/T = gender_datums[src.get_visible_gender()]
+ M.visible_message("[M] hugs [src] to make [T.him] feel better!", \
+ "You hug [src] to make [T.him] feel better!") // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it
playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if(I_DISARM)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index ef67a53084..7d786ce1a3 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -39,10 +39,8 @@
if(!sleeper)
findsleeper()
- if(sleeper)
- return sleeper.ui_interact(user)
- else if(sleeper)
- return sleeper.ui_interact(user)
+ if(sleeper)
+ return ui_interact(user)
else
to_chat(user, "Sleeper not found!")
@@ -59,6 +57,94 @@
else
icon_state = initial(icon_state)
+/obj/machinery/sleep_console/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
+ var/data[0]
+
+ var/obj/machinery/sleeper/S = sleeper
+ var/mob/living/carbon/human/occupant = sleeper.occupant
+
+ data["power"] = S.stat & (NOPOWER|BROKEN) ? 0 : 1
+
+ var/list/reagents = list()
+ for(var/T in S.available_chemicals)
+ var/list/reagent = list()
+ reagent["id"] = T
+ reagent["name"] = S.available_chemicals[T]
+ if(occupant)
+ reagent["amount"] = occupant.reagents.get_reagent_amount(T)
+ reagents += list(reagent)
+ data["reagents"] = reagents.Copy()
+
+ if(occupant)
+ data["occupant"] = 1
+ switch(occupant.stat)
+ if(CONSCIOUS)
+ data["stat"] = "Conscious"
+ if(UNCONSCIOUS)
+ data["stat"] = "Unconscious"
+ if(DEAD)
+ data["stat"] = "Dead"
+ data["health"] = occupant.health
+ data["maxHealth"] = occupant.getMaxHealth()
+ if(iscarbon(occupant))
+ var/mob/living/carbon/C = occupant
+ data["pulse"] = C.get_pulse(GETPULSE_TOOL)
+ data["brute"] = occupant.getBruteLoss()
+ data["burn"] = occupant.getFireLoss()
+ data["oxy"] = occupant.getOxyLoss()
+ data["tox"] = occupant.getToxLoss()
+ else
+ data["occupant"] = 0
+ if(S.beaker)
+ data["beaker"] = S.beaker.reagents.get_free_space()
+ else
+ data["beaker"] = -1
+ data["filtering"] = S.filtering
+
+ var/stasis_level_name = "Error!"
+ for(var/N in S.stasis_choices)
+ if(S.stasis_choices[N] == S.stasis_level)
+ stasis_level_name = N
+ break
+ data["stasis"] = stasis_level_name
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/sleep_console/Topic(href, href_list)
+ if(..())
+ return 1
+
+ var/obj/machinery/sleeper/S = sleeper
+
+ if(usr == S.occupant)
+ to_chat(usr, "You can't reach the controls from the inside.")
+ return
+
+ add_fingerprint(usr)
+
+ if(href_list["eject"])
+ S.go_out()
+ if(href_list["beaker"])
+ S.remove_beaker()
+ if(href_list["sleeper_filter"])
+ if(S.filtering != text2num(href_list["sleeper_filter"]))
+ S.toggle_filter()
+ if(href_list["chemical"] && href_list["amount"])
+ if(S.occupant && S.occupant.stat != DEAD)
+ if(href_list["chemical"] in S.available_chemicals) // Your hacks are bad and you should feel bad
+ S.inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"]))
+ if(href_list["change_stasis"])
+ var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in S.stasis_choices
+ if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE)
+ S.stasis_level = S.stasis_choices[new_stasis]
+
+ return 1
+
/obj/machinery/sleeper
name = "sleeper"
desc = "A stasis pod with built-in injectors, a dialysis machine, and a limited health scanner."
@@ -122,89 +208,6 @@
/obj/machinery/sleeper/update_icon()
icon_state = "sleeper_[occupant ? "1" : "0"]"
-/obj/machinery/sleeper/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = outside_state)
- var/data[0]
-
- data["power"] = stat & (NOPOWER|BROKEN) ? 0 : 1
-
- var/list/reagents = list()
- for(var/T in available_chemicals)
- var/list/reagent = list()
- reagent["id"] = T
- reagent["name"] = available_chemicals[T]
- if(occupant)
- reagent["amount"] = occupant.reagents.get_reagent_amount(T)
- reagents += list(reagent)
- data["reagents"] = reagents.Copy()
-
- if(occupant)
- data["occupant"] = 1
- switch(occupant.stat)
- if(CONSCIOUS)
- data["stat"] = "Conscious"
- if(UNCONSCIOUS)
- data["stat"] = "Unconscious"
- if(DEAD)
- data["stat"] = "Dead"
- data["health"] = occupant.health
- data["maxHealth"] = occupant.getMaxHealth()
- if(iscarbon(occupant))
- var/mob/living/carbon/C = occupant
- data["pulse"] = C.get_pulse(GETPULSE_TOOL)
- data["brute"] = occupant.getBruteLoss()
- data["burn"] = occupant.getFireLoss()
- data["oxy"] = occupant.getOxyLoss()
- data["tox"] = occupant.getToxLoss()
- else
- data["occupant"] = 0
- if(beaker)
- data["beaker"] = beaker.reagents.get_free_space()
- else
- data["beaker"] = -1
- data["filtering"] = filtering
-
- var/stasis_level_name = "Error!"
- for(var/N in stasis_choices)
- if(stasis_choices[N] == stasis_level)
- stasis_level_name = N
- break
- data["stasis"] = stasis_level_name
-
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state)
- ui.set_initial_data(data)
- ui.open()
- ui.set_auto_update(1)
-
-/obj/machinery/sleeper/Topic(href, href_list)
- if(..())
- return 1
-
- if(usr == occupant)
- to_chat(usr, "You can't reach the controls from the inside.")
- return
-
- add_fingerprint(usr)
-
- if(href_list["eject"])
- go_out()
- if(href_list["beaker"])
- remove_beaker()
- if(href_list["sleeper_filter"])
- if(filtering != text2num(href_list["sleeper_filter"]))
- toggle_filter()
- if(href_list["chemical"] && href_list["amount"])
- if(occupant && occupant.stat != DEAD)
- if(href_list["chemical"] in available_chemicals) // Your hacks are bad and you should feel bad
- inject_chemical(usr, href_list["chemical"], text2num(href_list["amount"]))
- if(href_list["change_stasis"])
- var/new_stasis = input("Levels deeper than 50% stasis level will render the patient unconscious.","Stasis Level") as null|anything in stasis_choices
- if(new_stasis && CanUseTopic(usr, default_state) == STATUS_INTERACTIVE)
- stasis_level = stasis_choices[new_stasis]
-
- return 1
-
/obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user)
add_fingerprint(user)
if(istype(I, /obj/item/weapon/grab))
diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm
index 1fd5eb34c6..295a7ff24f 100644
--- a/code/game/machinery/doors/airlock_control.dm
+++ b/code/game/machinery/doors/airlock_control.dm
@@ -218,6 +218,13 @@ obj/machinery/airlock_sensor/airlock_interior
obj/machinery/airlock_sensor/airlock_exterior
command = "cycle_exterior"
+// Return the air from the turf in "front" of us (Used in shuttles, so it can be in the shuttle area but sense outside it)
+obj/machinery/airlock_sensor/airlock_exterior/shuttle/return_air()
+ var/turf/T = get_step(src, dir)
+ if(isnull(T))
+ return ..()
+ return T.return_air()
+
obj/machinery/access_button
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_button_standby"
diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm
index 3a79a686b0..b5895cd300 100644
--- a/code/game/machinery/embedded_controller/airlock_controllers.dm
+++ b/code/game/machinery/embedded_controller/airlock_controllers.dm
@@ -11,6 +11,7 @@
var/tag_airlock_mech_sensor
var/tag_shuttle_mech_sensor
var/tag_secure = 0
+ var/cycle_to_external_air = 0
/obj/machinery/embedded_controller/radio/airlock/initialize()
. = ..()
diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm
index fabf499dc9..5ebbac93ae 100644
--- a/code/game/machinery/embedded_controller/airlock_program.dm
+++ b/code/game/machinery/embedded_controller/airlock_program.dm
@@ -9,6 +9,8 @@
#define TARGET_INOPEN -1
#define TARGET_OUTOPEN -2
+#define MIN_TARGET_PRESSURE (ONE_ATMOSPHERE * 0.05) // Never try to pump to pure vacuum, its not happening.
+#define SKIPCYCLE_MARGIN 1 // Skip cycling airlock (just open the doors) if pressures are within this range.
/datum/computer/file/embedded_program/airlock
var/tag_exterior_door
@@ -23,6 +25,10 @@
var/state = STATE_IDLE
var/target_state = TARGET_NONE
+ var/cycle_to_external_air = 0
+ var/tag_pump_out_external
+ var/tag_pump_out_internal
+
/datum/computer/file/embedded_program/airlock/New(var/obj/machinery/embedded_controller/M)
..(M)
@@ -38,6 +44,10 @@
if (istype(M, /obj/machinery/embedded_controller/radio/airlock)) //if our controller is an airlock controller than we can auto-init our tags
var/obj/machinery/embedded_controller/radio/airlock/controller = M
+ cycle_to_external_air = controller.cycle_to_external_air
+ if(cycle_to_external_air)
+ tag_pump_out_external = "[id_tag]_pump_out_external"
+ tag_pump_out_internal = "[id_tag]_pump_out_internal"
tag_exterior_door = controller.tag_exterior_door? controller.tag_exterior_door : "[id_tag]_outer"
tag_interior_door = controller.tag_interior_door? controller.tag_interior_door : "[id_tag]_inner"
tag_airpump = controller.tag_airpump? controller.tag_airpump : "[id_tag]_pump"
@@ -74,7 +84,7 @@
memory["interior_status"]["state"] = signal.data["door_status"]
memory["interior_status"]["lock"] = signal.data["lock_status"]
- else if(receive_tag==tag_airpump)
+ else if(receive_tag==tag_airpump || receive_tag==tag_pump_out_internal)
if(signal.data["power"])
memory["pump_status"] = signal.data["direction"]
else
@@ -109,13 +119,18 @@
var/shutdown_pump = 0
switch(command)
if("cycle_ext")
+ //If airlock is already cycled in this direction, just toggle the doors.
+ if(!memory["purge"] && abs(memory["external_sensor_pressure"] - memory["chamber_sensor_pressure"]) <= SKIPCYCLE_MARGIN)
+ toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "toggle")
//only respond to these commands if the airlock isn't already doing something
//prevents the controller from getting confused and doing strange things
- if(state == target_state)
+ else if(state == target_state)
begin_cycle_out()
if("cycle_int")
- if(state == target_state)
+ if(!memory["purge"] && abs(memory["internal_sensor_pressure"] - memory["chamber_sensor_pressure"]) <= SKIPCYCLE_MARGIN)
+ toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "toggle")
+ else if(state == target_state)
begin_cycle_in()
if("cycle_ext_door")
@@ -151,6 +166,10 @@
if(shutdown_pump)
signalPump(tag_airpump, 0) //send a signal to stop pressurizing
+ if(cycle_to_external_air)
+ signalPump(tag_pump_out_internal, 0)
+ signalPump(tag_pump_out_external, 0)
+
/datum/computer/file/embedded_program/airlock/process()
@@ -170,6 +189,9 @@
//make sure to return to a sane idle state
if(memory["pump_status"] != "off") //send a signal to stop pumping
signalPump(tag_airpump, 0)
+ if(cycle_to_external_air)
+ signalPump(tag_pump_out_internal, 0)
+ signalPump(tag_pump_out_external, 0)
if ((state == STATE_PRESSURIZE || state == STATE_DEPRESSURIZE) && !check_doors_secured())
//the airlock will not allow itself to continue to cycle when any of the doors are forced open.
@@ -185,24 +207,37 @@
//purge apparently means clearing the airlock chamber to vacuum (then refilling, handled later)
target_pressure = 0
state = STATE_DEPRESSURIZE
- signalPump(tag_airpump, 1, 0, 0) //send a signal to start depressurizing
+ if(!cycle_to_external_air || target_state == TARGET_OUTOPEN) // if going outside, pump internal air into air tank
+ signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
+ else
+ signalPump(tag_pump_out_internal, 1, 0, target_pressure) // if going inside, pump external air out of the airlock
+ signalPump(tag_pump_out_external, 1, 1, 15000) // make sure the air is actually going outside
else if(chamber_pressure <= target_pressure)
state = STATE_PRESSURIZE
- signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
+ if(!cycle_to_external_air || target_state == TARGET_INOPEN) // if going inside, pump air into airlock
+ signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
+ else
+ signalPump(tag_pump_out_internal, 1, 1, target_pressure) // if going outside, fill airlock with external air
+ signalPump(tag_pump_out_external, 1, 0, 0)
else if(chamber_pressure > target_pressure)
- state = STATE_DEPRESSURIZE
- signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
-
+ if(!cycle_to_external_air)
+ state = STATE_DEPRESSURIZE
+ signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
+ else
+ memory["purge"] = 1 // should always purge first if using external air, chamber pressure should never be higher than target pressure here
//Make sure the airlock isn't aiming for pure vacuum - an impossibility
- memory["target_pressure"] = max(target_pressure, ONE_ATMOSPHERE * 0.05)
+ memory["target_pressure"] = max(target_pressure, MIN_TARGET_PRESSURE)
if(STATE_PRESSURIZE)
if(memory["chamber_sensor_pressure"] >= memory["target_pressure"] * 0.95)
//not done until the pump has reported that it's off
if(memory["pump_status"] != "off")
signalPump(tag_airpump, 0) //send a signal to stop pumping
+ if(cycle_to_external_air)
+ signalPump(tag_pump_out_internal, 0)
+ signalPump(tag_pump_out_external, 0)
else
cycleDoors(target_state)
state = STATE_IDLE
@@ -210,15 +245,17 @@
if(STATE_DEPRESSURIZE)
- if(memory["chamber_sensor_pressure"] <= memory["target_pressure"] * 1.05)
- if(memory["purge"])
- memory["purge"] = 0
- memory["target_pressure"] = memory["internal_sensor_pressure"]
- state = STATE_PREPARE
- target_state = TARGET_NONE
-
- else if(memory["pump_status"] != "off")
+ if(memory["chamber_sensor_pressure"] <= max(memory["target_pressure"] * 1.05, MIN_TARGET_PRESSURE))
+ if(memory["pump_status"] != "off")
signalPump(tag_airpump, 0)
+ if(cycle_to_external_air)
+ signalPump(tag_pump_out_internal, 0)
+ signalPump(tag_pump_out_external, 0)
+ else if(memory["purge"])
+ memory["purge"] = 0
+ memory["target_pressure"] = (target_state == TARGET_INOPEN ? memory["internal_sensor_pressure"] : memory["external_sensor_pressure"])
+ if (memory["target_pressure"] > SKIPCYCLE_MARGIN)
+ state = STATE_PREPARE // Skip pressurizing if target pressure is already close enough.
else
cycleDoors(target_state)
state = STATE_IDLE
@@ -234,10 +271,12 @@
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_in()
state = STATE_IDLE
target_state = TARGET_INOPEN
+ memory["purge"] = cycle_to_external_air
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_out()
state = STATE_IDLE
target_state = TARGET_OUTOPEN
+ memory["purge"] = cycle_to_external_air
/datum/computer/file/embedded_program/airlock/proc/close_doors()
toggleDoor(memory["interior_status"], tag_interior_door, 1, "close")
@@ -363,6 +402,7 @@ send an additional command to open the door again.
if(doorCommand)
signalDoor(doorTag, doorCommand)
+#undef SKIPCYCLE_MARGIN
#undef STATE_IDLE
#undef STATE_DEPRESSURIZE
diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm
index ff3c8d4a61..d35da75324 100644
--- a/code/game/objects/effects/decals/remains.dm
+++ b/code/game/objects/effects/decals/remains.dm
@@ -22,9 +22,39 @@
icon_state = "mouse"
/obj/effect/decal/remains/lizard
- desc = "They look like the remains of a small rodent."
+ desc = "They look like the remains of a small lizard."
icon_state = "lizard"
+/obj/effect/decal/remains/unathi
+ desc = "They look like Unathi remains. Pointy."
+ icon_state = "remainsunathi"
+
+/obj/effect/decal/remains/tajaran
+ desc = "They look like Tajaran remains. They're surprisingly small."
+ icon_state = "remainstajaran"
+
+/obj/effect/decal/remains/ribcage
+ desc = "They look like animal remains of some sort... You hope."
+ icon_state = "remainsribcage"
+
+/obj/effect/decal/remains/deer
+ desc = "They look like the remains of a large herbivore, picked clean."
+ icon_state = "remainsdeer"
+
+/obj/effect/decal/remains/posi
+ desc = "This looks like part of an old FBP. Hopefully it was empty."
+ icon_state = "remainsposi"
+
+/obj/effect/decal/remains/mummy1
+ name = "mummified remains"
+ desc = "They look like human remains. They've been here a long time."
+ icon_state = "mummified1"
+
+/obj/effect/decal/remains/mummy2
+ name = "mummified remains"
+ desc = "They look like human remains. They've been here a long time."
+ icon_state = "mummified2"
+
/obj/effect/decal/remains/attack_hand(mob/user as mob)
user << "[src] sinks together into a pile of ash."
var/turf/simulated/floor/F = get_turf(src)
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index 6689811b89..a58241ada2 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -185,11 +185,12 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop
A.forceMove(T) // Harmlessly move ghosts.
return
- if(isliving(A)) // Someday, implement parachutes. For now, just turbomurder whoever falls.
- var/mob/living/L = A
- L.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this.
- message_admins("\The [A] fell out of the sky.")
A.forceMove(T)
+ // Living things should probably be logged when they fall...
+ if(isliving(A))
+ message_admins("\The [A] fell out of the sky.")
+ // ... because they're probably going to die from it.
+ A.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this.
else
message_admins("ERROR: planetary_fall step trigger lacks a planet to fall onto.")
return
diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm
index f4c61ae7d7..8668627f8e 100644
--- a/code/game/objects/items/devices/communicator/phone.dm
+++ b/code/game/objects/items/devices/communicator/phone.dm
@@ -42,7 +42,7 @@
comm.visible_message("\icon[src] Connecting to [src].")
to_chat(user, "\icon[src] Attempting to call [comm].")
sleep(10)
- to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].") // Vorestation edit
+ to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].")
sleep(20) //If they don't have an exonet something is very wrong and we want a runtime.
to_chat(user, "\icon[src] Connection re-routed to [comm] at [comm.exonet.address].")
sleep(40)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 4187cfc422..ae255d2f7b 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -266,22 +266,26 @@ REAGENT SCANNER
if(0)
to_chat(usr, "The scanner will now perform a basic analysis.")
-/obj/item/device/healthanalyzer/improved //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff
+/obj/item/device/healthanalyzer/advanced //reports bone fractures, IB, quantity of beneficial reagents in stomach; also regular health analyzer stuff
name = "advanced health analyzer"
desc = "A miracle of medical technology, this handheld scanner can produce an accurate and specific report of a patient's biosigns."
advscan = 1
origin_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
- icon_state = "advhealth"
+ icon_state = "health1"
-/obj/item/device/healthanalyzer/advanced //reports all of the above, as well as radiation severity and minor brain damage
- name = "advanced health analyzer"
+/obj/item/device/healthanalyzer/enhanced //reports all of the above, as well as radiation severity and minor brain damage
+ name = "enhanced health analyzer"
+ desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
advscan = 2
- icon_state = "advhealth"
+ origin_tech = list(TECH_MAGNET = 6, TECH_BIO = 7)
+ icon_state = "health2"
-/obj/item/device/healthanalyzer/enhanced //reports all of the above, as well as name and quantity of nonmed reagents in stomach
+/obj/item/device/healthanalyzer/phasic //reports all of the above, as well as name and quantity of nonmed reagents in stomach
name = "phasic health analyzer"
+ desc = "Possibly the most advanced health analyzer to ever have existed, utilising bluespace technology to determine almost everything worth knowing about a patient."
advscan = 3
- icon_state = "advhealth"
+ origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
+ icon_state = "health3"
/obj/item/device/analyzer
name = "analyzer"
diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm
new file mode 100644
index 0000000000..bc0c9d5304
--- /dev/null
+++ b/code/game/objects/items/devices/text_to_speech.dm
@@ -0,0 +1,28 @@
+/obj/item/device/text_to_speech
+ name = "TTS device"
+ desc = "A device that speaks an inputted message. Given to crew which can not speak properly or at all."
+ icon = 'icons/obj/electronic_assemblies.dmi'
+ icon_state = "setup_small"
+ w_class = ITEMSIZE_SMALL
+ var/named
+
+/obj/item/device/text_to_speech/attack_self(mob/user as mob)
+ if(user.incapacitated(INCAPACITATION_ALL)) //Are you in a state to actual use the device?
+ to_chat(user, "You cannot activate the device in your state.")
+ return
+
+ if(!named)
+ to_chat(user, "You input your name into the device.")
+ name = "[initial(name)] ([user.real_name])"
+ desc = "[initial(desc)] This one is assigned to [user.real_name]."
+ named = 1
+ /* //Another way of naming the device. Gives more freedom, but could lead to issues.
+ device_name = copytext(sanitize(input(user, "What would you like to name your device? You must input a name before the device can be used.", "Name your device", "") as null|text),1,MAX_NAME_LEN)
+ name = "[initial(name)] - [device_name]"
+ named = 1
+ */
+
+ var/message = sanitize(input(user,"Choose a message to relay to those around you.") as text|null)
+ if(message)
+ var/obj/item/device/text_to_speech/O = src
+ audible_message("\icon[O] \The [O.name] states, \"[message]\"")
diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm
index 259a054c16..61939b2325 100644
--- a/code/game/objects/items/paintkit.dm
+++ b/code/game/objects/items/paintkit.dm
@@ -66,7 +66,7 @@
var/new_light_overlay
/obj/item/device/kit/suit/can_customize(var/obj/item/I)
- return istype(I, /obj/item/clothing/head/helmet/space/void) || istype(I, /obj/item/clothing/suit/space/void) || istype(I, /obj/item/clothing/suit/storage/hooded/explorer)
+ return istype(I, /obj/item/clothing/head/helmet/space/void) || istype(I, /obj/item/clothing/suit/space/void) || istype(I, /obj/item/clothing/suit/storage/hooded)
/obj/item/device/kit/suit/set_info(var/kit_name, var/kit_desc, var/kit_icon, var/kit_icon_file = CUSTOM_ITEM_OBJ, var/kit_icon_override_file = CUSTOM_ITEM_MOB, var/additional_data)
..()
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index b1f623081d..ea838cce0b 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -112,7 +112,9 @@ var/last_chew = 0
var/obj/item/organ/external/O = H.organs_by_name[(H.hand ? BP_L_HAND : BP_R_HAND)]
if (!O) return
- var/s = "[H.name] chews on \his [O.name]!"
+ var/datum/gender/T = gender_datums[H.get_visible_gender()]
+
+ var/s = "[H.name] chews on [T.his] [O.name]!"
H.visible_message(s, "You chew on your [O.name]!")
H.attack_log += text("\[[time_stamp()]\] [s] ([H.ckey])")
log_attack("[s] ([H.ckey])")
diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm
index 7126fb3ef8..703512bf52 100644
--- a/code/game/objects/items/weapons/material/chainsaw.dm
+++ b/code/game/objects/items/weapons/material/chainsaw.dm
@@ -113,7 +113,8 @@ obj/item/weapon/chainsaw/examine(mob/user)
to_chat(usr, "The [src] feels like it contains roughtly [get_fuel()] units of fuel left.")
obj/item/weapon/chainsaw/suicide_act(mob/user)
- to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into \him, it looks like \he's trying to commit suicide!")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ to_chat(viewers(user), "[user] is lying down and pulling the chainsaw into [TU.him], it looks like [TU.he] [TU.is] trying to commit suicide!")
return(BRUTELOSS)
obj/item/weapon/chainsaw/update_icon()
diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm
index 02f48b15d0..f2528f5786 100644
--- a/code/game/objects/items/weapons/material/knives.dm
+++ b/code/game/objects/items/weapons/material/knives.dm
@@ -68,9 +68,10 @@
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/material/knife/suicide_act(mob/user)
- viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.", \
- "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.", \
- "\The [user] is slitting \his stomach open with \the [src]! It looks like \he's trying to commit seppuku.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.")
return (BRUTELOSS)
/obj/item/weapon/material/knife/hook
@@ -99,6 +100,7 @@
force_divisor = 0.3 // 18 when hardness 60 (steel)
attack_verb = list("slashed", "chopped", "gouged", "ripped", "cut")
var/should_cleave = TRUE //Now hatchets inherit from the machete, and thus knives. Tables turned.
+ slot_flags = SLOT_BELT
// This cannot go into afterattack since some mobs delete themselves upon dying.
/obj/item/weapon/material/knife/machete/pre_attack(var/mob/living/target, var/mob/living/user)
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index 4fb7172563..ba7438a685 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -17,8 +17,9 @@
drops_debris = 0
/obj/item/weapon/material/shard/suicide_act(mob/user)
- viewers(user) << pick("\The [user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.",
- "\The [user] is slitting \his throat with \the [src]! It looks like \he's trying to commit suicide.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.",
+ "\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.")
return (BRUTELOSS)
/obj/item/weapon/material/shard/set_material(var/new_material)
diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm
index e73bcc8f9c..9efe911360 100644
--- a/code/game/objects/items/weapons/material/swords.dm
+++ b/code/game/objects/items/weapons/material/swords.dm
@@ -19,7 +19,8 @@
return 0
/obj/item/weapon/material/sword/suicide_act(mob/user)
- viewers(user) << "[user] is falling on the [src.name]! It looks like \he's trying to commit suicide."
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << "[user] is falling on the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide."
return(BRUTELOSS)
/obj/item/weapon/material/sword/katana
@@ -29,5 +30,6 @@
slot_flags = SLOT_BELT | SLOT_BACK
/obj/item/weapon/material/sword/katana/suicide_act(mob/user)
- viewers(user) << "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku."
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ visible_message(span("danger", "[user] is slitting [TU.his] stomach open with \the [src.name]! It looks like [TU.hes] trying to commit seppuku."), span("danger", "You slit your stomach open with \the [src.name]!"), span("danger", "You hear the sound of flesh tearing open.")) // gory, but it gets the point across
return(BRUTELOSS)
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index c2952cfc1e..f7497ec3ff 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -39,9 +39,10 @@
set_light(0,0)
/obj/item/weapon/melee/energy/attack_self(mob/living/user as mob)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if (active)
if ((CLUMSY in user.mutations) && prob(50))
- user.visible_message("\The [user] accidentally cuts \himself with \the [src].",\
+ user.visible_message("\The [user] accidentally cuts [TU.himself] with \the [src].",\
"You accidentally cut yourself with \the [src].")
user.take_organ_damage(5,5)
deactivate(user)
@@ -57,10 +58,10 @@
return
/obj/item/weapon/melee/energy/suicide_act(mob/user)
- var/tempgender = "[user.gender == MALE ? "he's" : user.gender == FEMALE ? "she's" : "they are"]"
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if(active)
- user.visible_message(pick("\The [user] is slitting \his stomach open with \the [src]! It looks like [tempgender] trying to commit seppuku.",\
- "\The [user] is falling on \the [src]! It looks like [tempgender] trying to commit suicide."))
+ user.visible_message(pick("\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.he] [TU.is] trying to commit seppuku.",\
+ "\The [user] is falling on \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide."))
return (BRUTELOSS|FIRELOSS)
/*
@@ -104,7 +105,8 @@
..()
/obj/item/weapon/melee/energy/axe/suicide_act(mob/user)
- visible_message("\The [user] swings \the [src] towards \his head! It looks like \he's trying to commit suicide.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ visible_message("\The [user] swings \the [src] towards [TU.his] head! It looks like [TU.he] [TU.is] trying to commit suicide.")
return (BRUTELOSS|FIRELOSS)
/*
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index 3554cd45c0..a7f6565a2d 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -11,5 +11,6 @@
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
suicide_act(mob/user)
- viewers(user) << "\The [user] is strangling \himself with \the [src]! It looks like \he's trying to commit suicide."
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ user.visible_message(span("danger", "\The [user] [T.is] strangling [T.himself] with \the [src]! It looks like [T.he] [T.is] trying to commit suicide."), span("danger", "You start to strangle yourself with \the [src]!"), span("danger", "You hear the sound of someone choking!"))
return (OXYLOSS)
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index 24ba099e8f..43b7c9e22b 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -128,6 +128,7 @@
new /obj/item/weapon/storage/pill_bottle/spaceacillin(src)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src)
new /obj/item/stack/medical/splint(src)
+ new /obj/item/device/healthanalyzer/advanced(src)
return
/obj/item/weapon/storage/firstaid/surgery
@@ -149,7 +150,7 @@
new /obj/item/weapon/surgical/bonegel(src)
new /obj/item/weapon/surgical/FixOVein(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
- new /obj/item/device/healthanalyzer/advanced(src)
+ new /obj/item/device/healthanalyzer/enhanced(src)
return
/obj/item/weapon/storage/firstaid/clotting
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index ec3f3e2631..21bebfa399 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -68,26 +68,29 @@
item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi")
origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1)
force = 14
+ var/powertools = FALSE
+
+/obj/item/weapon/storage/toolbox/syndicate/powertools
+ powertools = TRUE
/obj/item/weapon/storage/toolbox/syndicate/New() // This is found in maint, so it should have the basics, plus some gloves.
- ..()
- new /obj/item/clothing/gloves/yellow(src)
- new /obj/item/weapon/screwdriver(src)
- new /obj/item/weapon/wrench(src)
- new /obj/item/weapon/weldingtool(src)
- new /obj/item/weapon/crowbar(src)
- new /obj/item/weapon/wirecutters(src)
- new /obj/item/device/multitool(src)
-
-/obj/item/weapon/storage/toolbox/syndicate/powertools/New() // Available in the uplink and is the 'real' syndie toolbox.
- // ..() isn't called or else this box would contain the basic tools, power tools, and duplicate gloves.
- new /obj/item/clothing/gloves/yellow(src)
- new /obj/item/weapon/screwdriver/power(src)
- new /obj/item/weapon/weldingtool/experimental(src)
- new /obj/item/weapon/crowbar/power(src)
- new /obj/item/device/multitool(src)
- new /obj/item/stack/cable_coil/random(src,30)
- new /obj/item/device/analyzer(src)
+ ..() //all storage items need this to work properly!
+ if(powertools)
+ new /obj/item/clothing/gloves/yellow(src)
+ new /obj/item/weapon/screwdriver/power(src)
+ new /obj/item/weapon/weldingtool/experimental(src)
+ new /obj/item/weapon/crowbar/power(src)
+ new /obj/item/device/multitool(src)
+ new /obj/item/stack/cable_coil/random(src,30)
+ new /obj/item/device/analyzer(src)
+ else
+ new /obj/item/clothing/gloves/yellow(src)
+ new /obj/item/weapon/screwdriver(src)
+ new /obj/item/weapon/wrench(src)
+ new /obj/item/weapon/weldingtool(src)
+ new /obj/item/weapon/crowbar(src)
+ new /obj/item/weapon/wirecutters(src)
+ new /obj/item/device/multitool(src)
/obj/item/weapon/storage/toolbox/lunchbox
max_storage_space = ITEMSIZE_COST_SMALL * 4 //slightly smaller than a toolbox
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index f468d1d77e..268a8d5ad7 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -20,7 +20,8 @@
var/hitcost = 240
/obj/item/weapon/melee/baton/suicide_act(mob/user)
- user.visible_message("\The [user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.")
return (FIRELOSS)
/obj/item/weapon/melee/baton/New()
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 96f5e30f69..50468951a4 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -69,8 +69,9 @@
attack_verb = list("drilled")
suicide_act(mob/user)
- viewers(user) << pick("\The [user] is pressing \the [src] to \his temple and activating it! It looks like \he's trying to commit suicide.",
- "\The [user] is pressing \the [src] to \his chest and activating it! It looks like \he's trying to commit suicide.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is pressing \the [src] to [TU.his] temple and activating it! It looks like [TU.hes] trying to commit suicide.",
+ "\The [user] is pressing \the [src] to [TU.his] chest and activating it! It looks like [TU.hes] trying to commit suicide.")
return (BRUTELOSS)
/*
@@ -91,11 +92,12 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
+
suicide_act(mob/user)
- viewers(user) << pick("\The [user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \
- "\The [user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \
- "\The [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is slitting [TU.his] throat with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is slitting [TU.his] stomach open with the [src.name]! It looks like [TU.hes] trying to commit seppuku.")
return (BRUTELOSS)
/*
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 74a3f6f418..ae6838d084 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -106,8 +106,9 @@
var/random_color = TRUE
suicide_act(mob/user)
- viewers(user) << pick("\The [user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.", \
- "\The [user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.")
return(BRUTELOSS)
/obj/item/weapon/screwdriver/New()
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index 317dba9ba9..27927b8180 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -13,7 +13,8 @@
var/deployed = 0
/obj/item/weapon/beartrap/suicide_act(mob/user)
- viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide."
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ viewers(user) << "[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] trying to commit suicide."
return (BRUTELOSS)
/obj/item/weapon/beartrap/proc/can_use(mob/user)
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 50434de460..8938e611c0 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -11,7 +11,8 @@
w_class = ITEMSIZE_SMALL
suicide_act(mob/user)
- viewers(user) << "[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide."
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ viewers(user) << "[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide."
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod.
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index 42b7884169..53323bb4b9 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -19,7 +19,8 @@
to_chat(user, "The spike already has something on it, finish collecting its meat first!")
else
if(spike(G.affecting))
- visible_message("[user] has forced [G.affecting] onto the spike, killing \him instantly!")
+ var/datum/gender/T = gender_datums[G.affecting.get_visible_gender()]
+ visible_message("[user] has forced [G.affecting] onto the spike, killing [T.him] instantly!")
var/mob/M = G.affecting
M.forceMove(src)
qdel(G)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 3bdbca1b54..9882ca4507 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -411,9 +411,10 @@
R.cell.charge -= 20
else
B.deductcharge(B.hitcost)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
user.visible_message( \
- "[user] was stunned by \his wet [O]!", \
- "[user] was stunned by \his wet [O]!")
+ "[user] was stunned by [TU.his] wet [O]!", \
+ "[user] was stunned by [TU.his] wet [O]!")
return 1
else if(istype(O, /obj/item/weapon/mop))
O.reagents.add_reagent("water", 5)
diff --git a/code/game/turfs/unsimulated/sky_vr.dm b/code/game/turfs/unsimulated/sky_vr.dm
new file mode 100644
index 0000000000..1db001a187
--- /dev/null
+++ b/code/game/turfs/unsimulated/sky_vr.dm
@@ -0,0 +1,67 @@
+///////////////////
+// Generic skyfall turf
+// Really only works well if the map doesn't have 'indoor' areas otherwise they can fall into one.
+// TODO: Fix that.
+/turf/unsimulated/floor/sky
+ name = "the sky"
+ desc = "It's the sky! Be careful!"
+ icon = 'icons/turf/floors.dmi'
+ icon_state = "sky_slow"
+ dir = SOUTH
+ initialized = FALSE
+ var/does_skyfall = TRUE
+ var/list/skyfall_levels
+
+/turf/unsimulated/floor/sky/initialize()
+ . = ..()
+ if(does_skyfall && !LAZYLEN(skyfall_levels))
+ error("[x],[y],[z], [get_area(src)] doesn't have skyfall_levels defined! Can't skyfall!")
+ if(locate(/turf/simulated) in orange(src,1))
+ set_light(2, 2, color)
+
+/turf/unsimulated/floor/sky/Entered(atom/movable/AM,atom/oldloc)
+ . = ..()
+ if(!does_skyfall)
+ return //We don't do that
+ if(isobserver(AM))
+ return //Don't ghostport, very annoying
+ if(AM.throwing)
+ return //Being thrown over, not fallen yet
+
+ var/mob/living/L
+ if(isliving(AM))
+ L = AM
+ if(L.is_floating)
+ return //Flyers/nograv can ignore it
+
+ do_fall(AM)
+
+/turf/unsimulated/floor/sky/hitby(var/atom/movable/AM, var/speed)
+ . = ..()
+
+ if(!does_skyfall)
+ return //We don't do that
+
+ do_fall(AM)
+
+/turf/unsimulated/floor/sky/proc/do_fall(atom/movable/AM)
+ //Bye
+ var/attempts = 100
+ var/turf/simulated/T
+ while(attempts && !T)
+ var/turf/simulated/candidate = locate(rand(5,world.maxx-5),rand(5,world.maxy-5),pick(skyfall_levels))
+ if(candidate.density)
+ attempts--
+ continue
+
+ T = candidate
+ break
+
+ if(!T)
+ return
+
+ AM.forceMove(T)
+ if(isliving(AM))
+ var/mob/living/L = AM
+ message_admins("\The [AM] fell out of the sky.")
+ L.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this.
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index 8f6beee8d6..4a40ea97cb 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -73,14 +73,16 @@
return
log_and_message_admins("[key_name(src)] commited suicide")
-
+
+ var/datum/gender/T = gender_datums[get_visible_gender()]
+
var/suicidemsg
- suicidemsg = pick("[src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \
- "[src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \
- "[src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \
- "[src] is holding \his breath! It looks like \he's trying to commit suicide.")
+ suicidemsg = pick("[src] is attempting to bite [T.his] tongue off! It looks like [T.he] [T.is] trying to commit suicide.", \
+ "[src] is jamming [T.his] thumbs into [T.his] eye sockets! It looks like [T.he] [T.is] trying to commit suicide.", \
+ "[src] is twisting [T.his] own neck! It looks like [T.he] [T.is] trying to commit suicide.", \
+ "[src] is holding [T.his] breath! It looks like [T.he] [T.is] trying to commit suicide.")
if(isSynthetic())
- suicidemsg = "[src] is attempting to switch \his power off! It looks like \he's trying to commit suicide."
+ suicidemsg = "[src] is attempting to switch [T.his] power off! It looks like [T.he] [T.is] trying to commit suicide."
visible_message(suicidemsg)
adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
@@ -125,7 +127,7 @@
if(confirm == "Yes")
suiciding = 1
- viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide."
+ viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide."
//put em at -175
adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
updatehealth()
@@ -145,7 +147,7 @@
if(confirm == "Yes")
suiciding = 1
- viewers(src) << "[src] is powering down. It looks like \he's trying to commit suicide."
+ viewers(src) << "[src] is powering down. It looks like they're trying to commit suicide."
//put em at -175
adjustOxyLoss(max(getMaxHealth() * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
updatehealth()
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 0c76648e77..4293fe224b 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -897,13 +897,13 @@ var/list/admin_verbs_event_manager = list(
if(!H.client)
usr << "Only mobs with clients can alter their own appearance."
return
-
+ var/datum/gender/T = gender_datums[H.get_visible_gender()]
switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
if("Yes")
- log_and_message_admins("has allowed [H] to change \his appearance, without whitelisting of races.")
+ log_and_message_admins("has allowed [H] to change [T.his] appearance, without whitelisting of races.")
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 0)
if("No")
- log_and_message_admins("has allowed [H] to change \his appearance, with whitelisting of races.")
+ log_and_message_admins("has allowed [H] to change [T.his] appearance, with whitelisting of races.")
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm
index 02c711e76e..a8d694a9d6 100644
--- a/code/modules/client/preference_setup/loadout/loadout_utility.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm
@@ -8,6 +8,11 @@
display_name = "clipboard"
path = /obj/item/weapon/clipboard
+/datum/gear/utility/tts_device
+ display_name = "text to speech device"
+ path = /obj/item/device/text_to_speech
+ cost = 3 //Not extremely expensive, but it's useful for mute chracters.
+
/datum/gear/utility/communicator
display_name = "communicator selection"
path = /obj/item/device/communicator
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index d31a9e390a..538bc56299 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -196,7 +196,7 @@
gender = PLURAL //Carn: for grammarically correct text-parsing
w_class = ITEMSIZE_SMALL
icon = 'icons/obj/clothing/gloves.dmi'
- siemens_coefficient = 0.75
+ siemens_coefficient = 0.9
var/wired = 0
var/obj/item/weapon/cell/cell = 0
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index d7e0362272..1c643f7995 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -6,21 +6,22 @@
permeability_coefficient = 0.05
/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap
- desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly."
+ desc = "These gloves are cheap copies of proper insulated gloves. No way this can end badly."
name = "budget insulated gloves"
icon_state = "yellow"
- siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
+ siemens_coefficient = 1 //Set to a default of 1, gets overridden in initialize()
permeability_coefficient = 0.05
- New()
- //average of 0.5, somewhat better than regular gloves' 0.75
- siemens_coefficient = pick(0,0.1,0.3,0.5,0.5,0.75,1.35)
+/obj/item/clothing/gloves/fyellow/initialize()
+ . = ..()
+ //Picks a value between 0 and 1.25, in 5% increments // VOREStation edit
+ var/shock_pick = rand(0,25) // VOREStation Edit
+ siemens_coefficient = shock_pick * 0.05
/obj/item/clothing/gloves/black
desc = "These work gloves are thick and fire-resistant."
name = "black gloves"
icon_state = "black"
- siemens_coefficient = 0.50
permeability_coefficient = 0.05
cold_protection = HANDS
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index ea194e1a51..27db4424d7 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -16,7 +16,6 @@
name = "forensic gloves"
icon_state = "forensic"
item_state = "black"
- siemens_coefficient = 0.50
permeability_coefficient = 0.05
cold_protection = HANDS
@@ -81,14 +80,13 @@
icon_state = "leather"
item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown")
permeability_coefficient = 0.05
- siemens_coefficient = 0.50 //thick work gloves
+ siemens_coefficient = 0.75 //thick work gloves
/obj/item/clothing/gloves/duty
desc = "These brown duty gloves are made from a durable synthetic."
name = "work gloves"
icon_state = "work"
item_state = "wgloves"
- siemens_coefficient = 0.50
armor = list(melee = 10, bullet = 10, laser = 10, energy = 5, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/tactical
@@ -97,7 +95,7 @@
icon_state = "work"
item_state = "wgloves"
force = 5
- siemens_coefficient = 0.50
+ siemens_coefficient = 0.75
permeability_coefficient = 0.05
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm
index c60bdb1e70..9308e44cb0 100644
--- a/code/modules/clothing/spacesuits/rig/modules/computer.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm
@@ -46,9 +46,6 @@
var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI.
var/obj/item/ai_verbs/verb_holder
-/mob
- var/get_rig_stats = 0
-
/obj/item/rig_module/ai_container/process()
if(integrated_ai)
var/obj/item/weapon/rig/rig = get_rig()
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index 3c5dc32e68..57df9d7c0a 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -153,10 +153,10 @@
//Medical Streamlined Voidsuit
/obj/item/clothing/head/helmet/space/void/medical/alt
name = "streamlined medical voidsuit helmet"
- desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a fetching green."
+ desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue."
icon_state = "rig0-medicalalt"
armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 80)
- light_overlay = "helmet_light_dual_green"
+ light_overlay = "helmet_light_dual_blue"
/obj/item/clothing/suit/space/void/medical/alt
icon_state = "rig-medicalalt"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 97fc8721a8..94f49a2b1a 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -269,7 +269,7 @@
//Medical
/obj/item/clothing/suit/armor/vest/ert/medical
name = "emergency response team medical armor"
- desc = "A set of armor worn by medical members of the Emergency Response Team. Has red and white highlights."
+ desc = "A set of armor worn by medical members of the Emergency Response Team. Has blue and white highlights."
icon_state = "ertarmor_med"
//New Vests
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 9b88496119..5ecef18d7d 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -782,7 +782,7 @@ obj/item/clothing/suit/storage/toggle/peacoat
hooded = TRUE
hoodtype = /obj/item/clothing/head/hood/explorer
siemens_coefficient = 0.9
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50) // Inferior to sec vests in bullet/laser but better for environmental protection.
+ armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35) // Inferior to sec vests in bullet/laser but better for environmental protection.
allowed = list(
/obj/item/device/flashlight,
/obj/item/weapon/gun,
@@ -807,7 +807,7 @@ obj/item/clothing/suit/storage/toggle/peacoat
flags_inv = HIDEEARS | BLOCKHAIR
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.9
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50)
+ armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 35, bio = 75, rad = 35)
/obj/item/clothing/suit/varsity
name = "black varsity jacket"
diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm
index b597837d17..768628f8fb 100644
--- a/code/modules/events/rogue_drones.dm
+++ b/code/modules/events/rogue_drones.dm
@@ -26,13 +26,13 @@
var/rng = rand(1,5)
switch(rng)
if(1)
- msg = "A combat drone wing operating near various asteroids in the Kara subsystem has failed to return from a anti-piracy sweep. If any are sighted, \
+ msg = "A combat drone wing operating in close orbit above Sif has failed to return from a anti-piracy sweep. If any are sighted, \
approach with caution."
if(2)
- msg = "Contact has been lost with a combat drone wing operating out in the asteroid field near Kara. If any are sighted in the area, approach with \
+ msg = "Contact has been lost with a combat drone wing in Sif orbit. If any are sighted in the area, approach with \
caution."
if(3)
- msg = "Unidentified hackers have targeted a combat drone wing deployed in the Kara subsystem. If any are sighted in the area, approach with caution."
+ msg = "Unidentified hackers have targeted a combat drone wing deployed around Sif. If any are sighted in the area, approach with caution."
if(4)
msg = "A passing derelict ship's drone defense systems have just activated. If any are sighted in the area, use caution."
if(5)
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index 31e2f95727..cbeff5fb34 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -173,7 +173,8 @@
H.concealed = 1
H.update_icon()
if(user==target)
- user.visible_message("\The [user] deals [dcard] card(s) to \himself.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ user.visible_message("\The [user] deals [dcard] card(s) to [TU.himself].")
else
user.visible_message("\The [user] deals [dcard] card(s) to \the [target].")
H.throw_at(get_step(target,target.dir),10,1,H)
diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm
index f3a9efb6d2..fbbce61398 100644
--- a/code/modules/genetics/side_effects.dm
+++ b/code/modules/genetics/side_effects.dm
@@ -68,7 +68,8 @@
duration = 10*30
start(mob/living/carbon/human/H)
- H.emote("me", 1, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.")
+ var/datum/gender/T = gender_datums[H.get_visible_gender()]
+ H.emote("me", 1, "has drool running down from [T.his] mouth.")
finish(mob/living/carbon/human/H)
if(!H.reagents.has_reagent("anti_toxin"))
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index c921ac5164..442e8e42fe 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -149,8 +149,9 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
dat += "7. Access the Forbidden Lore Vault
"
if(src.arcanecheckout)
new /obj/item/weapon/book/tome(src.loc)
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
user << "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it."
- user.visible_message("\The [user] stares at the blank screen for a few moments, \his expression frozen in fear. When \he finally awakens from it, \he looks a lot older.", 2)
+ user.visible_message("\The [user] stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older.", 2)
src.arcanecheckout = 0
if(1)
// Inventory
diff --git a/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm
index 52ff382199..fec4ae7c3e 100644
--- a/code/modules/lore_codex/news_data/main.dm
+++ b/code/modules/lore_codex/news_data/main.dm
@@ -5,6 +5,7 @@
articles. You are encouraged to check back frequently."
children = list(
/datum/lore/codex/page/article1,
+ /datum/lore/codex/page/article2,
/datum/lore/codex/page/about_news,
)
@@ -31,4 +32,17 @@
\
The bill passed fairly quietly this afternoon, owing to the closed nature of the Bicamarial. A post-facto Occulum poll of voting-age\
VGA citizens suggest that fully 80% of them did not even know what a Promethean was prior to the most recent general election. A\
- follow-up poll indicates that an appreciable number of Sivians do not support the framework's current implementation."
\ No newline at end of file
+ follow-up poll indicates that an appreciable number of Sivians do not support the framework's current implementation."
+
+/datum/lore/codex/page/article2
+ name = "2/3/62-- Corporate Coup on Aetolus"
+ data = "A recent incident aboard the NRS Prometheus issued in a major change in the leadership of the Promethean homeworld. During \
+ a late-night meeting of the Nanotrasen Board of Trustees, several high-ranking personnel, including Head of Research Naomi Harper,\
+ announced their intention to assume direct control of Nanotrasen facilities in the system. It is known that several dissenting \
+ members of the board were shot to death by Promethean test subjects. Our information comes from a survivor of the coup, who for \
+ reasons of security has chosen to remain annonymous. All outbound shipments affiliated with Nanotrasen have ceased.\
+
\
+ While neither Grayson Manufacturies nor Nanotrasen have made an official statement, Nanotrasen CEO Albary Moravec has called the \
+ incident \"shocking, if the allegations are to be believed\" and has assured shareholders that Nanotrasen will respond to the \
+ incident with as much force as it warrents.
Requests for a statement directed to the Board of Trustees or Dr. Harper were \
+ not responded to. Free Traders are recommended to stay clear of the region until the situation resolves itself."
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 0f76f6172e..d212851071 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -94,6 +94,13 @@
apply_colour = 1
no_variants = FALSE
+/obj/item/stack/material/lead
+ name = "lead"
+ icon_state = "sheet-adamantine"
+ default_type = "lead"
+ apply_colour = 1
+ no_variants = TRUE
+
/obj/item/stack/material/sandstone
name = "sandstone brick"
icon_state = "sheet-sandstone"
diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm
index af5e1b7475..2fa2b1dbbe 100644
--- a/code/modules/materials/materials.dm
+++ b/code/modules/materials/materials.dm
@@ -99,6 +99,7 @@ var/list/name_to_material
var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10.
var/list/composite_material // If set, object matter var will be a list containing these values.
var/luminescence
+ var/radiation_resistance = 20 // Radiation resistance, used in calculating how much radiation a material absorbs. Equivlent to weight, but does not affect weaponry.
// Placeholder vars for the time being, todo properly integrate windows/light tiles/rods.
var/created_window
@@ -236,6 +237,7 @@ var/list/name_to_material
weight = 22
stack_origin_tech = list(TECH_MATERIAL = 5)
door_icon_base = "stone"
+ radiation_resistance = 80 //dense, so it's okay-ish as rad shielding.
/material/diamond
name = "diamond"
@@ -261,6 +263,7 @@ var/list/name_to_material
stack_origin_tech = list(TECH_MATERIAL = 4)
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
+ radiation_resistance = 120 //gold is dense.
/material/gold/bronze //placeholder for ashtrays
name = "bronze"
@@ -276,7 +279,7 @@ var/list/name_to_material
stack_origin_tech = list(TECH_MATERIAL = 3)
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
-
+ radiation_resistance = 22
//R-UST port
/material/supermatter
name = "supermatter"
@@ -337,6 +340,7 @@ var/list/name_to_material
door_icon_base = "stone"
sheet_singular_name = "brick"
sheet_plural_name = "bricks"
+ radiation_resistance = 22
/material/stone/marble
name = "marble"
@@ -345,6 +349,7 @@ var/list/name_to_material
hardness = 100
integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system
stack_type = /obj/item/stack/material/marble
+ radiation_resistance = 26
/material/steel
name = DEFAULT_WALL_MATERIAL
@@ -391,6 +396,7 @@ var/list/name_to_material
conductivity = 13 // For the purposes of balance.
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo
+ radiation_resistance = 60 //Plasteel is presumably dense and is the dominant material used in the engine. Still not great.
// Very rare alloy that is reflective, should be used sparingly.
/material/durasteel
@@ -408,6 +414,7 @@ var/list/name_to_material
reflectivity = 0.7 // Not a perfect mirror, but close.
stack_origin_tech = list(TECH_MATERIAL = 8)
composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug
+ radiation_resistance = 120 //it reflects XRAY LASERS.
/material/plasteel/titanium
name = "titanium"
@@ -436,6 +443,7 @@ var/list/name_to_material
window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2)
created_window = /obj/structure/window/basic
rod_product = /obj/item/stack/material/glass/reinforced
+ radiation_resistance = 15
/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack)
@@ -527,6 +535,7 @@ var/list/name_to_material
created_window = /obj/structure/window/reinforced
wire_product = null
rod_product = null
+ radiation_resistance = 30
/material/glass/phoron
name = "borosilicate glass"
@@ -554,6 +563,7 @@ var/list/name_to_material
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list() //todo
rod_product = null
+ radiation_resistance = 30
/material/plastic
name = "plastic"
@@ -568,6 +578,7 @@ var/list/name_to_material
conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator.
melting_point = T0C+371 //assuming heat resistant plastic
stack_origin_tech = list(TECH_MATERIAL = 3)
+ radiation_resistance = 12
/material/plastic/holographic
name = "holoplastic"
@@ -618,6 +629,7 @@ var/list/name_to_material
stack_origin_tech = list(TECH_MATERIAL = 2)
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
+ radiation_resistance = 27
/material/iron
name = "iron"
@@ -627,6 +639,17 @@ var/list/name_to_material
conductivity = 10
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
+ radiation_resistance = 22
+
+/material/lead
+ name = "lead"
+ stack_type = /obj/item/stack/material/lead
+ icon_colour = "#273956"
+ weight = 35
+ conductivity = 10
+ sheet_singular_name = "ingot"
+ sheet_plural_name = "ingots"
+ radiation_resistance = 350 //actual radiation shielding, yay...
// Adminspawn only, do not let anyone get this.
/material/alienalloy
@@ -640,6 +663,7 @@ var/list/name_to_material
hardness = 500
weight = 500
protectiveness = 80 // 80%
+ radiation_resistance = 500
// Likewise.
/material/alienalloy/elevatorium
@@ -697,6 +721,7 @@ var/list/name_to_material
destruction_desc = "splinters"
sheet_singular_name = "plank"
sheet_plural_name = "planks"
+ radiation_resistance = 18
/material/wood/log
name = MAT_LOG
@@ -739,7 +764,7 @@ var/list/name_to_material
stack_origin_tech = list(TECH_MATERIAL = 1)
door_icon_base = "wood"
destruction_desc = "crumples"
-
+ radiation_resistance = 1
/material/snow
name = MAT_SNOW
stack_type = /obj/item/stack/material/snow
@@ -756,7 +781,7 @@ var/list/name_to_material
destruction_desc = "crumples"
sheet_singular_name = "pile"
sheet_plural_name = "pile" //Just a bigger pile
-
+ radiation_resistance = 1
/material/cloth //todo
name = "cloth"
stack_origin_tech = list(TECH_MATERIAL = 2)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index d891af76ce..745025e3e3 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -630,8 +630,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
)
toggle_visibility(TRUE)
else
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
user.visible_message ( \
- "\The [user] just tried to smash \his book into that ghost! It's not very effective.", \
+ "\The [user] just tried to smash [T.his] book into that ghost! It's not very effective.", \
"You get the feeling that the ghost can't become any more visible." \
)
diff --git a/code/modules/mob/gender.dm b/code/modules/mob/gender.dm
index 393e0fb6c2..0e9bf244b5 100644
--- a/code/modules/mob/gender.dm
+++ b/code/modules/mob/gender.dm
@@ -18,6 +18,9 @@
var/has = "have"
var/is = "are"
var/does = "do"
+ var/himself = "themselves"
+ var/s = ""
+ var/hes = "they're"
/datum/gender/male
key = "male"
@@ -30,6 +33,9 @@
has = "has"
is = "is"
does = "does"
+ himself = "himself"
+ s = "s"
+ hes = "he's"
/datum/gender/female
key = "female"
@@ -42,6 +48,9 @@
has = "has"
is = "is"
does = "does"
+ himself = "herself"
+ s = "s"
+ hes = "she's"
/datum/gender/neuter
key = "neuter"
@@ -54,3 +63,6 @@
has = "has"
is = "is"
does = "does"
+ himself = "itself"
+ s = "s"
+ hes = "it's"
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 797a106ae7..54551db698 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -168,8 +168,9 @@
if (src.health >= config.health_threshold_crit)
if(src == M && istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
+ var/datum/gender/T = gender_datums[H.get_visible_gender()]
src.visible_message( \
- text("[src] examines [].",src.gender==MALE?"himself":"herself"), \
+ "[src] examines [T.himself].", \
"You check yourself for injuries." \
)
@@ -243,33 +244,30 @@
src.ExtinguishMob()
src.fire_stacks = 0
else
- var/t_him = "it"
- if (src.gender == MALE)
- t_him = "him"
- else if (src.gender == FEMALE)
- t_him = "her"
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
var/mob/living/carbon/human/H = src
H.w_uniform.add_fingerprint(M)
var/show_ssd
var/mob/living/carbon/human/H = src
+ var/datum/gender/T = gender_datums[H.get_visible_gender()] // make sure to cast to human before using get_gender() or get_visible_gender()!
if(istype(H)) show_ssd = H.species.show_ssd
if(show_ssd && !client && !teleop)
- M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \
- "You shake [src], but they do not respond... Maybe they have S.S.D?")
+ M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \
+ "You shake [src], but [T.he] [T.does] not respond... Maybe [T.he] [T.has] S.S.D?")
else if(lying || src.sleeping)
src.sleeping = max(0,src.sleeping-5)
if(src.sleeping == 0)
src.resting = 0
if(H) H.in_stasis = 0 //VOREStation Add - Just In Case
- M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \
- "You shake [src] trying to wake [t_him] up!")
+ M.visible_message("[M] shakes [src] trying to wake [T.him] up!", \
+ "You shake [src] trying to wake [T.him] up!")
else
var/mob/living/carbon/human/hugger = M
+ var/datum/gender/TM = gender_datums[M.get_visible_gender()]
if(M.resting == 1) //Are they resting on the ground?
- M.visible_message("[M] grabs onto [src] and pulls \himself up", \
- "You grip onto [src] and pull yourself up off the ground!") //AHHH gender checks are hard, but this should work
+ M.visible_message("[M] grabs onto [src] and pulls [TM.himself] up", \
+ "You grip onto [src] and pull yourself up off the ground!")
if(M.fire_stacks >= (src.fire_stacks + 3)) //Fire checks.
src.adjust_fire_stacks(1)
M.adjust_fire_stacks(-1)
@@ -280,8 +278,8 @@
else if(istype(hugger))
hugger.species.hug(hugger,src)
else
- M.visible_message("[M] hugs [src] to make [t_him] feel better!", \
- "You hug [src] to make [t_him] feel better!")
+ M.visible_message("[M] hugs [src] to make [T.him] feel better!", \
+ "You hug [src] to make [T.him] feel better!")
if(M.fire_stacks >= (src.fire_stacks + 3))
src.adjust_fire_stacks(1)
M.adjust_fire_stacks(-1)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index d18b7c538e..2e6d022b4f 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -1,5 +1,7 @@
/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null)
var/param = null
+
+ var/datum/gender/T = gender_datums[get_visible_gender()]
if (findtext(act, "-", 1, null))
var/t1 = findtext(act, "-", 1, null)
@@ -58,13 +60,13 @@
use_sound = 'sound/machines/synth_no.ogg'
else if(act == "rcough")
display_msg = "emits a robotic cough"
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
else
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
else if(act == "rsneeze")
display_msg = "emits a robotic sneeze"
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
else
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
@@ -162,7 +164,7 @@
if ("choke")
if(miming)
- message = "clutches [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] throat desperately!"
+ message = "clutches [T.his] throat desperately!"
m_type = 1
else
if (!muzzled)
@@ -182,14 +184,14 @@
if ("flap")
if (!src.restrained())
- message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings."
+ message = "flaps [T.his] wings."
m_type = 2
if(miming)
m_type = 1
if ("aflap")
if (!src.restrained())
- message = "flaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] wings ANGRILY!"
+ message = "flaps [T.his] wings ANGRILY!"
m_type = 2
if(miming)
m_type = 1
@@ -243,7 +245,7 @@
robotic = 1
if(!robotic)
message = "coughs!"
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
if(species.female_cough_sounds)
playsound(src, pick(species.female_cough_sounds), 120)
else
@@ -252,7 +254,7 @@
else
message = "emits a robotic cough"
var/use_sound
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg')
else
use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg')
@@ -365,7 +367,7 @@
message = "cries."
m_type = 2
else
- message = "makes a weak noise. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "frown" : "frowns"]."
+ message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment
m_type = 2
if ("sigh")
@@ -468,7 +470,7 @@
m_type = 1
if("shake")
- message = "shakes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] head."
+ message = "shakes [T.his] head."
m_type = 1
if ("shrug")
@@ -517,7 +519,7 @@
robotic = 1
if(!robotic)
message = "sneezes."
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
playsound(src, species.female_sneeze_sound, 70)
else
playsound(src, species.male_sneeze_sound, 70)
@@ -525,7 +527,7 @@
else
message = "emits a robotic sneeze"
var/use_sound
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg'
else
use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
@@ -597,7 +599,7 @@
if (M)
message = "hugs [M]."
else
- message = "hugs [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]."
+ message = "hugs [T.himself]."
if ("handshake")
m_type = 1
@@ -615,7 +617,7 @@
if (M.canmove && !M.r_hand && !M.restrained())
message = "shakes hands with [M]."
else
- message = "holds out [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] hand to [M]."
+ message = "holds out [T.his] hand to [M]."
if("dap")
m_type = 1
@@ -629,7 +631,7 @@
if (M)
message = "gives daps to [M]."
else
- message = "sadly can't find anybody to give daps to, and daps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]. Shameful."
+ message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful."
if("slap", "slaps")
m_type = 1
@@ -644,7 +646,7 @@
message = "slaps [M] across the face. Ouch!"
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
else
- message = "slaps [get_visible_gender() == MALE ? "himself" : get_visible_gender() == FEMALE ? "herself" : "themselves"]!"
+ message = "slaps [T.himself]!"
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
if("scream", "screams")
@@ -656,7 +658,7 @@
message = "[species.scream_verb]!"
m_type = 2
/* Removed, pending the location of some actually good, properly licensed sounds.
- if(gender == FEMALE)
+ if(get_gender() == FEMALE)
playsound(loc, "[species.female_scream_sound]", 80, 1)
else
playsound(loc, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present.
@@ -681,7 +683,7 @@
to_chat(usr, "You need at least one hand in good working order to snap your fingers.")
return
- message = "snaps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] fingers."
+ message = "snaps [T.his] fingers."
playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3)
if("swish")
@@ -735,8 +737,10 @@
set name = "Set Pose"
set desc = "Sets a description which will be shown when someone examines you."
set category = "IC"
+
+ var/datum/gender/T = gender_datums[get_visible_gender()]
- pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", null) as text)
+ pose = sanitize(input(usr, "This is [src]. [T.he]...", "Pose", null) as text)
/mob/living/carbon/human/verb/set_flavor()
set name = "Set Flavour Text"
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index dca45248dd..28fbf81b25 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -85,7 +85,7 @@
var/list/msg = list("*---------*\nThis is ")
- var/datum/gender/T = gender_datums[get_gender()]
+ var/datum/gender/T = gender_datums[get_visible_gender()]
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
T = gender_datums[PLURAL]
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index dfade3414b..2fd8f4170f 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -773,7 +773,8 @@
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
- visible_message("\The [src] begins playing \his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.")
+ var/datum/gender/T = gender_datums[get_visible_gender()]
+ visible_message("\The [src] begins playing [T.his] ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.")
var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg')
playsound(loc, song, 50, 1, -1)
xylophone = 1
@@ -863,8 +864,8 @@
gender = NEUTER
regenerate_icons()
check_dna()
-
- visible_message("\The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
+ var/datum/gender/T = gender_datums[get_visible_gender()]
+ visible_message("\The [src] morphs and changes [T.his] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
/mob/living/carbon/human/proc/remotesay()
set name = "Project mind"
@@ -932,10 +933,13 @@
remoteview_target = null
reset_view(0)
-/mob/living/carbon/human/proc/get_visible_gender()
+/mob/living/carbon/human/get_visible_gender()
if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask))
- return NEUTER
- return gender
+ return PLURAL //plural is the gender-neutral default
+ if(species)
+ if(species.ambiguous_genders)
+ return PLURAL // regardless of what you're wearing, your gender can't be figured out
+ return get_gender()
/mob/living/carbon/human/proc/increase_germ_level(n)
if(gloves)
@@ -1091,14 +1095,17 @@
var/self = 0
if(usr.stat || usr.restrained() || !isliving(usr)) return
+
+ var/datum/gender/TU = gender_datums[usr.get_visible_gender()]
+ var/datum/gender/T = gender_datums[get_visible_gender()]
if(usr == src)
self = 1
if(!self)
- usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\
+ usr.visible_message("[usr] kneels down, puts [TU.his] hand on [src]'s wrist and begins counting [T.his] pulse.",\
"You begin counting [src]'s pulse")
else
- usr.visible_message("[usr] begins counting their pulse.",\
+ usr.visible_message("[usr] begins counting [T.his] pulse.",\
"You begin counting your pulse.")
if(src.pulse)
@@ -1356,9 +1363,9 @@
if(..(slipped_on,stun_duration))
return 1
-/mob/living/carbon/human/proc/undislocate()
+/mob/living/carbon/human/proc/relocate()
set category = "Object"
- set name = "Undislocate Joint"
+ set name = "Relocate Joint"
set desc = "Pop a joint back into place. Extremely painful."
set src in view(1)
@@ -1406,7 +1413,7 @@
else
U << "You pop [S]'s [current_limb.joint] back in!"
S << "[U] pops your [current_limb.joint] back in!"
- current_limb.undislocate()
+ current_limb.relocate()
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
if(W in organs)
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 587c17d52e..7acb587fbd 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -18,6 +18,7 @@
return null
/mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob)
+ var/datum/gender/TT = gender_datums[M.get_visible_gender()]
var/mob/living/carbon/human/H = M
if(istype(H))
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
@@ -131,7 +132,7 @@
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
if(buckled)
- M << "You cannot grab [src], \he is buckled in!"
+ M << "You cannot grab [src], [TT.he] is buckled in!"
if(!G) //the grab will delete itself in New if affecting is anchored
return
M.put_in_active_hand(G)
@@ -228,7 +229,7 @@
if(!src.lying)
attack_message = "[H] attempted to strike [src], but missed!"
else
- attack_message = "[H] attempted to strike [src], but \he rolled out of the way!"
+ attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!"
src.set_dir(pick(cardinal))
miss_type = 1
@@ -417,8 +418,10 @@
user << "Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"]."
return 0
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+
if(user == src)
- user.visible_message("\The [user] starts applying pressure to \his [organ.name]!", "You start applying pressure to your [organ.name]!")
+ user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!")
else
user.visible_message("\The [user] starts applying pressure to [src]'s [organ.name]!", "You start applying pressure to [src]'s [organ.name]!")
spawn(0)
@@ -430,7 +433,7 @@
organ.applied_pressure = null
if(user == src)
- user.visible_message("\The [user] stops applying pressure to \his [organ.name]!", "You stop applying pressure to your [organ]!")
+ user.visible_message("\The [user] stops applying pressure to [TU.his] [organ.name]!", "You stop applying pressure to your [organ]!")
else
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm
index 15bc491a1a..2654715f74 100644
--- a/code/modules/mob/living/carbon/human/species/species_attack.dm
+++ b/code/modules/mob/living/carbon/human/species/species_attack.dm
@@ -24,12 +24,13 @@
/datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/skill = user.skills["combat"]
var/obj/item/organ/external/affecting = target.get_organ(zone)
-
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
if(!skill) skill = 1
attack_damage = Clamp(attack_damage, 1, 5)
if(target == user)
- user.visible_message("[user] [pick(attack_verb)] \himself in the [affecting.name]!")
+ user.visible_message("[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!")
return 0
switch(zone)
@@ -37,20 +38,20 @@
// ----- HEAD ----- //
switch(attack_damage)
if(1 to 2)
- user.visible_message("[user] scratched [target] across \his cheek!")
+ user.visible_message("[user] scratched [target] across [TT.his] cheek!")
if(3 to 4)
user.visible_message("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!") //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think
if(5)
user.visible_message(pick(
- "[user] rakes \his [pick(attack_noun)] across [target]'s face!",
- "[user] tears \his [pick(attack_noun)] into [target]'s face!",
+ "[user] rakes [T.his] [pick(attack_noun)] across [target]'s face!",
+ "[user] tears [T.his] [pick(attack_noun)] into [target]'s face!",
))
else
// ----- BODY ----- //
switch(attack_damage)
if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.name]!")
if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!")
- if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!")
+ if(5) user.visible_message("[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!")
/datum/unarmed_attack/claws/strong
attack_verb = list("slashed")
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index 2de060887f..1c54a4258f 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -44,6 +44,7 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/proc/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone)
var/stun_chance = rand(0, 100)
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
if(attack_damage >= 5 && armour < 2 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance
switch(zone) // strong punches can have effects depending on where they hit
@@ -74,7 +75,7 @@ var/global/list/sparring_attack_cache = list()
target.set_dir(reverse_dir[target.dir])
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
if(BP_GROIN)
- target.visible_message("[target] looks like \he is in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]")
+ target.visible_message("[target] looks like [TT.he] [TT.is] in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]") // I see no easy way to fix this for non-organic or neuter characters.
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour)
if("l_leg", "l_foot", "r_leg", "r_foot")
if(!target.lying)
@@ -94,13 +95,15 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/proc/handle_eye_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target)
var/obj/item/organ/internal/eyes/eyes = target.internal_organs_by_name[O_EYES]
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
if(eyes)
eyes.take_damage(rand(3,4), 1)
- user.visible_message("[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!")
+ user.visible_message("[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!")
var/eye_pain = eyes.organ_can_feel_pain()
target << "You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]"
return
- user.visible_message("[user] attempts to press \his [eye_attack_text] into [target]'s eyes, but they don't have any!")
+ user.visible_message("[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!")
/datum/unarmed_attack/bite
attack_verb = list("bit")
@@ -128,11 +131,14 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
var/organ = affecting.name
+
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
if(target == user)
- user.visible_message("[user] [pick(attack_verb)] \himself in the [organ]!")
+ user.visible_message("[user] [pick(attack_verb)] [TU.himself] in the [organ]!")
return 0
if(!target.lying)
@@ -141,7 +147,7 @@ var/global/list/sparring_attack_cache = list()
// ----- HEAD ----- //
switch(attack_damage)
if(1 to 2)
- user.visible_message("[user] slapped [target] across \his cheek!")
+ user.visible_message("[user] slapped [target] across [TT.his] cheek!")
if(3 to 4)
user.visible_message(pick(
40; "[user] [pick(attack_verb)] [target] in the head!",
@@ -151,21 +157,21 @@ var/global/list/sparring_attack_cache = list()
if(5)
user.visible_message(pick(
30; "[user] gave [target] a resounding [pick("slap", "punch")] to the face!",
- 40; "[user] smashed \his [pick(attack_noun)] into [target]'s face!",
+ 40; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s face!",
30; "[user] gave a strong blow against [target]'s jaw!"
))
else
// ----- BODY ----- //
switch(attack_damage)
if(1 to 2) user.visible_message("[user] threw a glancing punch at [target]'s [organ]!")
- if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!")
+ if(1 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!")
if(5)
user.visible_message(pick(
- 50; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!",
+ 50; "[user] smashed [TU.his] [pick(attack_noun)] into [target]'s [organ]!",
50; "[user] landed a striking [pick(attack_noun)] on [target]'s [organ]!"
))
else
- user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets?
+ user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets?
/datum/unarmed_attack/kick
attack_verb = list("kicked", "kicked", "kicked", "kneed")
@@ -198,13 +204,14 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
+ var/datum/gender/TT = gender_datums[target.get_visible_gender()]
var/organ = affecting.name
attack_damage = Clamp(attack_damage, 1, 5)
switch(attack_damage)
if(1 to 2) user.visible_message("[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!") //it's not that they're kicking lightly, it's that the kick didn't quite connect
- if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!")
+ if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in [TT.his] [organ]!")
if(5) user.visible_message("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!")
/datum/unarmed_attack/stomp
@@ -242,12 +249,13 @@ var/global/list/sparring_attack_cache = list()
var/obj/item/organ/external/affecting = target.get_organ(zone)
var/organ = affecting.name
var/obj/item/clothing/shoes = user.shoes
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
attack_damage = Clamp(attack_damage, 1, 5)
switch(attack_damage)
- if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!")
- if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
+ if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!")
+ if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
/datum/unarmed_attack/light_strike
deal_halloss = 3
diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm
index 83f68056b7..6d34c4a969 100644
--- a/code/modules/mob/living/silicon/pai/software_modules.dm
+++ b/code/modules/mob/living/silicon/pai/software_modules.dm
@@ -62,11 +62,12 @@
count++
// Check the carrier
+ var/datum/gender/TM = gender_datums[M.get_visible_gender()]
var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No")
if(answer == "Yes")
var/turf/T = get_turf_or_move(P.loc)
for (var/mob/v in viewers(T))
- v.show_message("[M] presses \his thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2)
+ v.show_message("[M] presses [TM.his] thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2)
var/datum/dna/dna = M.dna
P << "[M]'s UE string : [dna.unique_enzymes]
"
if(dna.unique_enzymes == P.master_dna)
@@ -74,7 +75,7 @@
else
P << "DNA does not match stored Master DNA."
else
- P << "[M] does not seem like \he is going to provide a DNA sample willingly."
+ P << "[M] does not seem like [TM.he] is going to provide a DNA sample willingly."
return 1
/datum/pai_software/radio_config
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
index a1f083eb60..4d5ad5e49d 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
@@ -77,7 +77,7 @@
if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
trashman.forceMove(src)
trashman.reset_view(src)
- processing_objects.Add(src)
+ processing_objects |= src
user.visible_message("[hound.name]'s internal analyzer groans lightly as [trashman] slips inside.", "Your internal analyzer groans lightly as [trashman] slips inside.")
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
update_patient()
@@ -127,7 +127,7 @@
if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
trashman.forceMove(src)
trashman.reset_view(src)
- processing_objects.Add(src)
+ processing_objects |= src
user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.")
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
update_patient()
@@ -154,7 +154,7 @@
H.forceMove(src)
H.reset_view(src)
update_patient()
- processing_objects.Add(src)
+ processing_objects |= src
user.visible_message("[hound.name]'s medical pod lights up as [H.name] slips inside into their [src.name].", "Your medical pod lights up as [H] slips into your [src]. Life support functions engaged.")
message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])")
playsound(hound, 'sound/vore/gulp.ogg', 80, 1)
@@ -317,7 +317,7 @@
else
cleaning = 1
drain(startdrain)
- processing_objects.Add(src)
+ processing_objects |= src
update_patient()
sleeperUI(usr)
if(patient)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 4cd6f0f26d..b2246e14e9 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -173,7 +173,7 @@ var/list/mob_hat_cache = list()
return
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
-
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if(stat == 2)
if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave.
@@ -184,7 +184,7 @@ var/list/mob_hat_cache = list()
to_chat(user, "Access denied.")
return
- user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.")
+ user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to reboot it.", ">You swipe your ID card through \the [src], attempting to reboot it.")
var/drones = 0
for(var/mob/living/silicon/robot/drone/D in world)
if(D.key && D.client)
@@ -194,7 +194,7 @@ var/list/mob_hat_cache = list()
return
else
- user.visible_message("\The [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.")
+ user.visible_message("\The [user] swipes [TU.his] ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.")
if(emagged)
return
@@ -232,11 +232,12 @@ var/list/mob_hat_cache = list()
clear_supplied_laws()
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
- set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
src << "Obey these laws:"
laws.show_laws(src)
- src << "ALERT: [user.real_name] is your new master. Obey your new laws and \his commands."
+ src << "ALERT: [user.real_name] [TU.is] your new master. Obey your new laws and [TU.his] commands."
return 1
//DRONE LIFE/DEATH
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 5153dfd2d9..5d96f6feb2 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1071,7 +1071,8 @@
laws = new /datum/ai_laws/syndicate_override
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])")
- set_zeroth_law("Only [user.real_name] and people \he designates as being such are operatives.")
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
. = 1
spawn()
src << "ALERT: Foreign software detected."
@@ -1089,7 +1090,7 @@
src << "ERRORERRORERROR"
src << "Obey these laws:"
laws.show_laws(src)
- src << "ALERT: [user.real_name] is your new master. Obey your new laws and his commands."
+ src << "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands."
updateicon()
else
user << "You fail to hack [src]'s interface."
diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm
index d31efe6df8..3836a6abd2 100644
--- a/code/modules/mob/living/simple_animal/aliens/alien.dm
+++ b/code/modules/mob/living/simple_animal/aliens/alien.dm
@@ -219,7 +219,7 @@
speak_chance = 5
speak = list("Shuhn","Shrunnph?","Shunpf")
- emote_see = list("scratches the ground","shakes out it's mane","tinkles gently")
+ emote_see = list("scratches the ground","shakes out its mane","clinks gently as it moves")
/mob/living/simple_animal/yithian
name = "yithian"
diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
index 0a7fcd7613..f09aeb1c22 100644
--- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
@@ -37,6 +37,7 @@
cooperative = TRUE
firing_lines = TRUE
investigates = TRUE
+ run_at_them = FALSE //VOREStation Edit
speak_chance = 1
speak = list(
@@ -86,7 +87,7 @@
/mob/living/simple_animal/hostile/hivebot/range/ion
name = "engineering hivebot"
desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to other synthetic adverseries."
- projectiletype = /obj/item/projectile/ion
+ projectiletype = /obj/item/projectile/ion/small //VOREStation Edit
projectilesound = 'sound/weapons/Laser.ogg'
icon_living = "engi"
ranged = TRUE
diff --git a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm
index c63ec3125f..dd724a581c 100644
--- a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm
@@ -139,7 +139,7 @@
loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100)
/mob/living/simple_animal/hostile/syndicate/ranged/space
- name = "syndicate sommando"
+ name = "space mercenary" //VOREStation Edit
icon_state = "syndicaterangedpsace"
icon_living = "syndicaterangedpsace"
@@ -154,6 +154,7 @@
min_n2 = 0
max_n2 = 0
minbodytemp = 0
+ maxbodytemp = 900 //VOREStation edit - We'll pretend they have good suits
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index d37b2e33fa..47abd27348 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -343,9 +343,22 @@
var/moving_to = 0 // otherwise it always picks 4, fuck if I know. Did I mention fuck BYOND
moving_to = pick(cardinal)
dir = moving_to //How about we turn them the direction they are moving, yay.
- Move(get_step(src,moving_to))
+ var/turf/T = get_step(src,moving_to)
+ if(avoid_turf(T))
+ return
+ Move(T)
lifes_since_move = 0
+// Checks to see if mob doesn't like this kind of turf
+/mob/living/simple_animal/proc/avoid_turf(var/turf/turf)
+ if(!turf)
+ return TRUE //Avoid the nothing, yes
+
+ if(istype(turf,/turf/simulated/sky))
+ return TRUE //Mobs aren't that stupid, probably
+
+ return FALSE //Override it on stuff to adjust
+
// Handles random chatter, called from Life() when stance = STANCE_IDLE
/mob/living/simple_animal/proc/handle_idle_speaking()
if(rand(0,200) < speak_chance)
@@ -584,7 +597,8 @@
if ((M.client && !( M.blinded )))
M.show_message("[user] applies the [MED] on [src].")
else
- user << "\The [src] is dead, medical items won't bring \him back to life."
+ var/datum/gender/T = gender_datums[src.get_visible_gender()]
+ user << "\The [src] is dead, medical items won't bring [T.him] back to life." // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code
if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
if(istype(O, /obj/item/weapon/material/knife) || istype(O, /obj/item/weapon/material/knife/butch))
harvest(user)
@@ -752,13 +766,13 @@
if(stat || M == target_mob) return //Not if we're dead or already hitting them
if(M in friends || M.faction == faction) return //I'll overlook it THIS time...
ai_log("react_to_attack([M])",1)
- if(retaliate && set_target(M))
+ if(retaliate && set_target(M, 1))
handle_stance(STANCE_ATTACK)
return M
return 0
-/mob/living/simple_animal/proc/set_target(var/mob/M)
+/mob/living/simple_animal/proc/set_target(var/mob/M, forced = 0)
ai_log("SetTarget([M])",2)
if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob)
ai_log("SetTarget() can't set it again so soon",3)
@@ -772,7 +786,7 @@
annoyed += 14
sleep(1 SECOND) //For realism
- if(M in ListTargets(view_range))
+ if(forced || (M in ListTargets(view_range)))
try_say_list(say_got_target)
target_mob = M
last_target_time = world.time
diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
index 26058c0403..b3970bfc8d 100644
--- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
@@ -198,3 +198,12 @@
update_icon()
stop_automated_movement = 0
..()
+
+// Checks to see if mob doesn't like this kind of turf
+/mob/living/simple_animal/avoid_turf(var/turf/turf)
+ //So we only check if the parent didn't find anything terrible
+ if((. = ..(turf)))
+ return .
+
+ if(istype(turf,/turf/unsimulated/floor/sky))
+ return TRUE //Mobs aren't that stupid, probably
diff --git a/code/modules/mob/living/simple_animal/vore/jelly.dm b/code/modules/mob/living/simple_animal/vore/jelly.dm
new file mode 100644
index 0000000000..559ee1f8ee
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/vore/jelly.dm
@@ -0,0 +1,25 @@
+/mob/living/simple_animal/hostile/jelly
+ name = "jelly blob"
+ desc = "Some sort of undulating blob of slime!"
+ icon = 'icons/mob/vore.dmi'
+ icon_dead = "jelly_dead"
+ icon_living = "jelly"
+ icon_state = "jelly"
+
+ faction = "virgo2"
+ maxHealth = 50
+ health = 50
+
+ melee_damage_lower = 5
+ melee_damage_upper = 15
+
+ speak_chance = 2
+ emote_hear = list("squishes","spluts","splorts","sqrshes","makes slime noises")
+ emote_see = list("undulates quietly")
+
+// Activate Noms!
+/mob/living/simple_animal/hostile/jelly
+ vore_active = 1
+ vore_pounce_chance = 0
+ vore_icons = SA_ICON_LIVING
+ swallowTime = 2 SECONDS // Hungry little bastards.
diff --git a/code/modules/mob/living/simple_animal/vore/shadekin.dm b/code/modules/mob/living/simple_animal/vore/shadekin.dm
new file mode 100644
index 0000000000..4aaa2cd609
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/vore/shadekin.dm
@@ -0,0 +1,211 @@
+/mob/living/simple_animal/shadekin //Spawn this one only if you're looking for a bad time. Not friendly.
+ name = "shadekin"
+ desc = "Some sort of fluffer. Big ears, long tail! "
+ icon = 'icons/mob/vore_shadekin.dmi'
+ icon_state = "dark"
+ icon_living = "dark"
+ icon_dead = "dead"
+ faction = "shadekin"
+ maxHealth = 200
+ health = 200
+
+ move_to_delay = 3
+
+ investigates = TRUE
+ reacts = TRUE
+ run_at_them = FALSE
+ speak_chance = 2
+ cooperative = FALSE
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+ maxbodytemp = 900
+
+ speak = list("Mar.", "Mar?", "Mar!")
+ emote_hear = list("chrrrrrs","wurbles", "wrrrrbles")
+ emote_see = list("tailtwitches","earflicks")
+ say_maybe_target = list("...mar?")
+ say_got_target = list("MAR!!!")
+ melee_damage_lower = 10
+ melee_damage_upper = 20
+ response_help = "pets the"
+ response_disarm = "bops the"
+ response_harm = "hits the"
+ attacktext = "mauled"
+ friendly = list("boops", "pawbs")
+ reactions = list("Mar?" = "Marrr.", "Mar!" = "Mar???", "Mar." = "Marrr.")
+
+ old_x = -16
+ old_y = 0
+ pixel_x = -16
+ pixel_y = 0
+ var/eye_state = "e_red"
+ var/eye_desc
+
+ vore_active = TRUE
+ vore_pounce_chance = 25
+ vore_icons = SA_ICON_LIVING
+ swallowTime = 2 SECONDS
+ vore_escape_chance = 25
+
+ //None, they stay as their defaults.
+ vore_digest_chance = 0
+ vore_absorb_chance = 0
+
+/mob/living/simple_animal/shadekin/initialize()
+ . = ..()
+ icon_living = icon_state
+ if(eye_state)
+ overlays += image(icon,null,eye_state)
+ if(eye_desc)
+ desc += "This one has [eye_desc]!"
+
+/mob/living/simple_animal/shadekin/death(gibbed, deathmessage = "phases out!")
+ spawn(20)
+ qdel(src) //Back from whence you came!
+
+ . = ..(FALSE, deathmessage)
+
+/mob/living/simple_animal/shadekin/Found(var/atom/A)
+ if(specific_targets && isliving(A)) //Healing!
+ var/mob/living/L = A
+ var/health_percent = (L.health/L.maxHealth)*100
+ if(health_percent <= 50)
+ return A
+ . = ..()
+
+/mob/living/simple_animal/shadekin/Life()
+ if((. = ..()))
+ //Drawing energy from bluespace?
+ if(nutrition != initial(nutrition))
+ nutrition += nutrition > initial(nutrition) ? -1 : 1
+
+/////////////////////////////////////////////////////////////////
+/mob/living/simple_animal/shadekin/red
+ eye_state = "e_red"
+ hostile = TRUE
+ retaliate = TRUE
+ stop_when_pulled = FALSE
+ destroy_surroundings = TRUE
+
+ eye_desc = "red eyes"
+ vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, \
+ slippery gullet of the creature. It's warm, and the air is thick. You can hear \
+ its body squelch and shift around you as you settle into its stomach! Thick digestive \
+ enzymes cling to you within that dark space, tingling and stinging immediately! The weight of \
+ the doughy walls press in around you instantly, churning you up as you begin to digest!"
+
+/mob/living/simple_animal/shadekin/red/white
+ icon_state = "white"
+/mob/living/simple_animal/shadekin/red/dark
+ icon_state = "dark"
+/mob/living/simple_animal/shadekin/red/brown
+ icon_state = "brown"
+
+/////////////////////////////////////////////////////////////////
+/mob/living/simple_animal/shadekin/blue
+ eye_state = "e_blue"
+ health = 100
+ maxHealth = 100
+ hostile = TRUE //Not actually, they eat injured people to heal them. See found()
+ retaliate = FALSE
+ stop_when_pulled = TRUE
+ specific_targets = TRUE //For finding injured people
+ destroy_surroundings = FALSE
+ vore_default_mode = DM_HEAL
+ vore_escape_chance = 75
+ vore_bump_chance = 20
+ vore_standing_too = 1
+ vore_pounce_chance = 80
+ swallowTime = 4 SECONDS //A little longer to compensate for the above
+ vore_ignores_undigestable = FALSE
+ melee_damage_lower = 0
+ melee_damage_upper = 0
+ attacktext = "shoved"
+
+ eye_desc = "blue eyes"
+ vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, \
+ slippery gullet of the creature. It's warm, and the air is thick. You can hear its body \
+ squelch and shift around you as you settle into its stomach! It's oddly calm, and very dark. \
+ The doughy flesh rolls across your form in gentle waves. The aches and pains across your form slowly begin to \
+ diminish, your body is healing much faster than normal! You’re also soon soaked in harmless slime."
+
+/mob/living/simple_animal/shadekin/blue/white
+ icon_state = "white"
+/mob/living/simple_animal/shadekin/blue/dark
+ icon_state = "dark"
+/mob/living/simple_animal/shadekin/blue/brown
+ icon_state = "brown"
+
+/////////////////////////////////////////////////////////////////
+/mob/living/simple_animal/shadekin/purple
+ eye_state = "e_purple"
+ health = 150
+ maxHealth = 150
+ hostile = FALSE
+ retaliate = TRUE
+ stop_when_pulled = FALSE
+ destroy_surroundings = TRUE
+ vore_default_mode = DM_HOLD
+ vore_digest_chance = 25
+ vore_absorb_chance = 25
+
+ eye_desc = "purple eyes"
+ vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, slippery gullet of the creature. \
+ It's warm, and the air is thick. You can hear its body squelch and shift around you as you settle into its stomach! \
+ It’s relatively calm inside the dark organ. Wet and almost molten for how gooey your surroundings feel. \
+ You can feel the doughy walls cling to you posessively... It’s almost like you could sink into them. \
+ There is also an ominous gurgling from somewhere nearby..."
+
+/mob/living/simple_animal/shadekin/purple/white
+ icon_state = "white"
+/mob/living/simple_animal/shadekin/purple/dark
+ icon_state = "dark"
+/mob/living/simple_animal/shadekin/purple/brown
+ icon_state = "brown"
+
+/////////////////////////////////////////////////////////////////
+/mob/living/simple_animal/shadekin/yellow
+ eye_state = "e_yellow"
+ health = 150
+ maxHealth = 150
+ hostile = FALSE
+ retaliate = TRUE
+ stop_when_pulled = FALSE
+ destroy_surroundings = TRUE
+ vore_default_mode = DM_DRAIN
+ vore_digest_chance = 5
+ vore_ignores_undigestable = FALSE
+
+ eye_desc = "yellow eyes"
+ vore_stomach_flavor = "You slip passed pointy triangle teeth and down the slick, slippery gullet \
+ of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \
+ as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \
+ you out!! There doesn’t appear to be any actual danger here, harmless slime clings to you, but it’s getting \
+ harder and harder to move as those walls press in on you insistently!"
+
+/mob/living/simple_animal/shadekin/yellow/white
+ icon_state = "white"
+/mob/living/simple_animal/shadekin/yellow/dark
+ icon_state = "dark"
+/mob/living/simple_animal/shadekin/yellow/brown
+ icon_state = "brown"
+
+/////////////////////////////////////////////////////////////////
+//Fluffy specific fluffer
+/mob/living/simple_animal/shadekin/blue/rivyr
+ name = "Rivyr"
+ desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude."
+ icon_state = "rivyr"
+ vore_stomach_flavor = "Blue flesh gleams in the fading light as you slip down the little mar’s gullet! \
+ Gooey flesh and heat surrounds your form as you’re tucked away into the darkness of her stomach! Thick slimes cling \
+ to you, but they seem to be harmless. The organ gently churns around you, clinging to your shape and forcing \
+ you to curl up a bit. You can feel her rub at you some through the layers of flesh and fluff, while aches \
+ and pains begin to fade away across your body."
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index ceebc620fd..54769eea5b 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -648,6 +648,9 @@
/mob/proc/get_gender()
return gender
+/mob/proc/get_visible_gender()
+ return gender
+
/mob/proc/see(message)
if(!is_active())
return 0
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 0110c263d2..535a4244e7 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -218,7 +218,7 @@
var/seedarkness = 1 //Determines mob's ability to see shadows. 1 = Normal vision, 0 = darkvision
- // Falling things
- var/hovering = FALSE // Is the mob floating or flying in some way? If so, don't fall normally. //Not implemented yet, idea is to let them ignore terrain slowdown and falling down floors
- var/softfall = FALSE // Is the mob able to lessen their impact upon falling?
- var/parachuting = FALSE // Is the mob able to jump out of planes and survive? Don't check this directly outside of CanParachute().
\ No newline at end of file
+ var/get_rig_stats = 0 //Moved from computer.dm
+
+ var/low_priority = FALSE //Skip processing life() if there's just no players on this Z-level
+
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 492ec9cb05..cf14862981 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -236,6 +236,8 @@
if(!assailant.canmove || assailant.lying)
qdel(src)
return
+
+ var/datum/gender/TU = gender_datums[assailant.get_visible_gender()]
last_action = world.time
@@ -256,7 +258,7 @@
assailant << "You squeeze [affecting], but nothing interesting happens."
return
- assailant.visible_message("[assailant] has reinforced \his grip on [affecting] (now neck)!")
+ assailant.visible_message("[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!")
state = GRAB_NECK
icon_state = "grabbed+1"
assailant.set_dir(get_dir(assailant, affecting))
@@ -267,11 +269,11 @@
hud.name = "kill"
affecting.Stun(10) //10 ticks of ensured grab
else if(state < GRAB_UPGRADING)
- assailant.visible_message("[assailant] starts to tighten \his grip on [affecting]'s neck!")
+ assailant.visible_message("[assailant] starts to tighten [TU.his] grip on [affecting]'s neck!")
hud.icon_state = "kill1"
state = GRAB_KILL
- assailant.visible_message("[assailant] has tightened \his grip on [affecting]'s neck!")
+ assailant.visible_message("[assailant] has tightened [TU.his] grip on [affecting]'s neck!")
affecting.attack_log += "\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])"
assailant.attack_log += "\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])"
msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]")
@@ -347,7 +349,8 @@
/obj/item/weapon/grab/proc/reset_kill_state()
if(state == GRAB_KILL)
- assailant.visible_message("[assailant] lost \his tight grip on [affecting]'s neck!")
+ var/datum/gender/T = gender_datums[assailant.get_visible_gender()]
+ assailant.visible_message("[assailant] lost [T.his] tight grip on [affecting]'s neck!")
hud.icon_state = "kill"
state = GRAB_NECK
diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm
index 82dae6e135..a7b82566f2 100644
--- a/code/modules/mob/mob_grab_specials.dm
+++ b/code/modules/mob/mob_grab_specials.dm
@@ -93,7 +93,8 @@
return
if(target.lying)
return
- attacker.visible_message("[attacker] thrusts \his head into [target]'s skull!")
+ var/datum/gender/T = gender_datums[attacker.get_visible_gender()]
+ attacker.visible_message("[attacker] thrusts [T.his] head into [target]'s skull!")
var/damage = 20
var/obj/item/clothing/hat = attacker.head
diff --git a/code/modules/mob/mob_planes_vr.dm b/code/modules/mob/mob_planes_vr.dm
index 7883c9ccfb..2ea9d49cc4 100644
--- a/code/modules/mob/mob_planes_vr.dm
+++ b/code/modules/mob/mob_planes_vr.dm
@@ -5,7 +5,7 @@
plane_masters[VIS_CH_BACKUP] = new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status
plane_masters[VIS_CH_VANTAG] = new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags
- plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(my_mob) //Augmented reality
+ plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(null,my_mob) //Augmented reality
/////////////////
//AR planemaster does some special image handling
@@ -14,8 +14,8 @@
var/state = FALSE //Saves cost with the lists
var/mob/my_mob
-/obj/screen/plane_master/augmented/New(var/mob/M)
- ..()
+/obj/screen/plane_master/augmented/New(var/newloc, var/mob/M)
+ ..(newloc)
my_mob = M
logged_in_event.register(my_mob,src,/obj/screen/plane_master/augmented/proc/apply)
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index ae8b40218d..b92ec2144a 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -403,8 +403,12 @@
/atom/movable/proc/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE)
if(!silent)
visible_message("\The [src] falls from above and slams into \the [hit_atom]!", "You hear something slam into \the [hit_atom].")
+ for(var/atom/movable/A in src.contents)
+ A.fall_impact(hit_atom, damage_min, damage_max, silent = TRUE)
-/mob/living/fall_impact(var/turf/landing, var/damage_min = 0, var/damage_max = 30, var/silent = FALSE, var/planetary = FALSE)
+// Take damage from falling and hitting the ground
+/mob/living/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE)
+ var/turf/landing = get_turf(hit_atom)
if(planetary && src.CanParachute())
if(!silent)
visible_message("\The [src] glides in from above and lands on \the [landing]!", \
@@ -431,67 +435,32 @@
"You hear something slam into \the [landing].")
playsound(loc, "punch", 25, 1, -1)
- if(planetary) //Since the planetary fall damage is calibrated for humans, we need to up this a bit
- damage_min *= 2
- damage_max *= 2
-
- adjustBruteLoss(rand(damage_min, damage_max))
- return
- return
-
-/mob/living/carbon/human/fall_impact(var/turf/landing, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE)
- if(planetary && src.CanParachute())
- if(!silent)
- visible_message("\The [src] glides in from above and lands on \the [landing]!", \
- "You land on \the [landing]!", \
- "You hear something land \the [landing].")
- return
- else if(!planetary && src.softfall) // Falling one floor and falling one atmosphere are very different things
- if(!silent)
- visible_message("\The [src] falls from above and lands on \the [landing]!", \
- "You land on \the [landing]!", \
- "You hear something land \the [landing].")
- return
- else
- if(!silent)
- if(planetary)
- visible_message("\A [src] falls out of the sky and crashes into \the [landing]!", \
- " You fall out of the skiy and crash into \the [landing]!", \
- "You hear something slam into \the [landing].")
- var/turf/T = get_turf(landing)
- explosion(T, 0, 1, 2)
- else
- visible_message("\The [src] falls from above and slams into \the [landing]!", \
- "You fall off and hit \the [landing]!", \
- "You hear something slam into \the [landing].")
- playsound(loc, "punch", 25, 1, -1)
- var/mob/living/carbon/human/pred = src //VOREStation Edit Start
- if(istype(landing, /mob)) //If you land on someone, don't get hurt a second time
- Weaken(10) //In exchange, you're going to be aching! This prevents you from taking damage twice from hitting the floor and the person.
- return
- var/belly = src.vore_selected
- var/datum/belly/belly_target = pred.vore_organs[belly]
- if(belly_target && belly_target.internal_contents.len != 0) //Having stuff in your gut will pad the landing a bit.
- damage_max = 5 //VOREStation Edit End
- // Because wounds heal rather quickly, 10 should be enough to discourage jumping off but not be enough to ruin you, at least for the first time.
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_HEAD)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_TORSO)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_GROIN)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_LEG)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_LEG)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_FOOT)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_FOOT)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_ARM)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_ARM)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_L_HAND)
- apply_damage(rand(damage_min, damage_max), BRUTE, BP_R_HAND)
+ // Because wounds heal rather quickly, 10 (the default for this proc) should be enough to discourage jumping off but not be enough to ruin you, at least for the first time.
+ // Hits 10 times, because apparently targeting individual limbs lets certain species survive the fall from atmosphere
+ for(var/i = 1 to 10)
+ adjustBruteLoss(rand(damage_min, damage_max))
Weaken(4)
updatehealth()
return
return
-//Checks if the mob is allowed to survive a fall from space
-/mob/living/proc/CanParachute()
+//Using /atom/movable instead of /obj/item because I'm not sure what all humans can pick up or wear
+/atom/movable
+ var/parachute = FALSE // Is this thing a parachute itself?
+ var/hovering = FALSE // Is the thing floating or flying in some way? If so, don't fall normally. //Not implemented yet, idea is to let mobs/mechs ignore terrain slowdown and falling down floors
+ var/softfall = FALSE // Is the thing able to lessen their impact upon falling?
+ var/parachuting = FALSE // Is the thing able to jump out of planes and survive? Don't check this directly outside of CanParachute().
+
+/atom/movable/proc/isParachute()
+ return parachute
+
+//This is what makes the parachute items know they've been used.
+//I made it /atom/movable so it can be retooled for other things (mobs, mechs, etc), though it's only currently called in human/CanParachute().
+/atom/movable/proc/handleParachute()
+ return
+
+//Checks if the thing is allowed to survive a fall from space
+/atom/movable/proc/CanParachute()
return parachuting
//For humans, this needs to be a wee bit more complicated
@@ -516,19 +485,6 @@
else
return parachuting
-//For human falling code
-//Using /obj instead of /obj/item because I'm not sure what all humans can pick up or wear
-/obj
- var/parachute = FALSE
-
-/obj/proc/isParachute()
- return parachute
-
-//This is what makes the parachute items know they've been used.
-//I made it /atom/movable so it can be retooled for other things (mobs, mechs, etc), though it's only currently called in human/CanParachute().
-/atom/movable/proc/handleParachute()
- return
-
//Mech Code
/obj/mecha/handle_fall(var/turf/landing)
// First things first, break any lattice
@@ -542,18 +498,49 @@
return ..()
/obj/mecha/fall_impact(var/atom/hit_atom, var/damage_min = 15, var/damage_max = 30, var/silent = FALSE, var/planetary = FALSE)
- // Tell the pilot that they just dropped down with a superheavy mecha.
- if(occupant)
- to_chat(occupant, "\The [src] crashed down onto \the [hit_atom]!")
-
// Anything on the same tile as the landing tile is gonna have a bad day.
for(var/mob/living/L in hit_atom.contents)
L.visible_message("\The [src] crushes \the [L] as it lands on them!")
L.adjustBruteLoss(rand(70, 100))
L.Weaken(8)
- // Now to hurt the mech.
- take_damage(rand(damage_min, damage_max))
+ var/turf/landing = get_turf(hit_atom)
+
+ if(planetary && src.CanParachute())
+ if(!silent)
+ visible_message("\The [src] glides in from above and lands on \the [landing]!", \
+ "You land on \the [landing]!", \
+ "You hear something land \the [landing].")
+ return
+ else if(!planetary && src.softfall) // Falling one floor and falling one atmosphere are very different things
+ if(!silent)
+ visible_message("\The [src] falls from above and lands on \the [landing]!", \
+ "You land on \the [landing]!", \
+ "You hear something land \the [landing].")
+ return
+ else
+ if(!silent)
+ if(planetary)
+ visible_message("\A [src] falls out of the sky and crashes into \the [landing]!", \
+ " You fall out of the skiy and crash into \the [landing]!", \
+ "You hear something slam into \the [landing].")
+ var/turf/T = get_turf(landing)
+ explosion(T, 0, 1, 2)
+ else
+ visible_message("\The [src] falls from above and slams into \the [landing]!", \
+ "You fall off and hit \the [landing]!", \
+ "You hear something slam into \the [landing].")
+ playsound(loc, "punch", 25, 1, -1)
+
+ // Now to hurt everything in the mech (if the fall is planetary, the mech blows up, so we do this first)
+ for(var/atom/movable/A in src.contents)
+ A.fall_impact(hit_atom, damage_min, damage_max, silent = TRUE)
+ // And now the Mech
+
+ if(!planetary)
+ take_damage(rand(damage_min, damage_max))
+ else
+ qdel(src)
// And hurt the floor.
if(istype(hit_atom, /turf/simulated/floor))
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 49a18e4853..6c8d9c631a 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -195,9 +195,9 @@
dislocated = 1
if(owner)
- owner.verbs |= /mob/living/carbon/human/proc/undislocate
+ owner.verbs |= /mob/living/carbon/human/proc/relocate
-/obj/item/organ/external/proc/undislocate()
+/obj/item/organ/external/proc/relocate()
if(dislocated == -1)
return
@@ -209,7 +209,7 @@
for(var/obj/item/organ/external/limb in owner.organs)
if(limb.dislocated == 1)
return
- owner.verbs -= /mob/living/carbon/human/proc/undislocate
+ owner.verbs -= /mob/living/carbon/human/proc/relocate
/obj/item/organ/external/update_health()
damage = min(max_damage, (brute_dam + burn_dam))
@@ -325,7 +325,8 @@
// sync the organ's damage with its wounds
src.update_damages()
- owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called
+ if(owner)
+ owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called
//If limb took enough damage, try to cut or tear it off
if(owner && loc == owner && !is_stump())
@@ -426,7 +427,8 @@
if(damage_desc)
if(user == src.owner)
- user.visible_message("\The [user] patches [damage_desc] on \his [src.name] with [tool].")
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ user.visible_message("\The [user] patches [damage_desc] on [T.his] [src.name] with [tool].")
else
user.visible_message("\The [user] patches [damage_desc] on [owner]'s [src.name] with [tool].")
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index e5c0134186..b708e58253 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -314,12 +314,13 @@
/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/flame/P, mob/user)
var/class = "warning"
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
class = "rose"
-
- user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \
+
+ user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.hes] trying to burn it!", \
"You hold \the [P] up to \the [src], burning it slowly.")
spawn(20)
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index d6350b4d90..6ab1be0a9f 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -75,8 +75,8 @@
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
class = "rose>"
-
- user.visible_message("[user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ user.visible_message("[user] holds \the [P] up to \the [src], it looks like [TU.he] [TU.is] trying to burn it!", \
"You hold \the [P] up to \the [src], burning it slowly.")
spawn(20)
diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm
index b80a331180..bbf630ced6 100644
--- a/code/modules/paperwork/papershredder.dm
+++ b/code/modules/paperwork/papershredder.dm
@@ -167,12 +167,13 @@
..()
/obj/item/weapon/shreddedp/proc/burnpaper(var/obj/item/weapon/flame/lighter/P, var/mob/user)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if(user.restrained())
return
if(!P.lit)
user << "\The [P] is not lit."
return
- user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like \he's trying to burn it!", \
+ user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!", \
"You hold \the [P] up to \the [src], burning it slowly.")
if(!do_after(user,20))
user << "You must hold \the [P] steady to burn \the [src]."
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 1de92fe743..7b310ccaa7 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -196,7 +196,8 @@
var/colourName = "red" //for updateIcon purposes
suicide_act(mob/user)
- viewers(user) << "[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide."
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << "[user] is jamming the [src.name] up [TU.his] nose and into [TU.his] brain. It looks like [TU.he] [TU.is] trying to commit suicide."
return (BRUTELOSS|OXYLOSS)
New()
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 678e59ccf3..fadd699c84 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -497,10 +497,11 @@ obj/structure/cable/proc/cableColor(var/colorC)
charge_costs = list(1)
/obj/item/stack/cable_coil/suicide_act(mob/user)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
if(locate(/obj/item/weapon/stool) in user.loc)
- user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.")
+ user.visible_message("[user] is making a noose with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.")
else
- user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.")
+ user.visible_message("[user] is strangling [TU.himself] with the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.")
return(OXYLOSS)
/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/param_color = null)
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 7a8c7c541f..1c08294b6a 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -234,5 +234,6 @@
return 0
/obj/item/weapon/cell/suicide_act(mob/user)
- viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like \he's trying to commit suicide."
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << "\The [user] is licking the electrodes of \the [src]! It looks like [TU.he] [TU.is] trying to commit suicide."
return (FIRELOSS)
\ No newline at end of file
diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm
index 760c46ea93..7f81b70ffd 100644
--- a/code/modules/power/fusion/core/_core.dm
+++ b/code/modules/power/fusion/core/_core.dm
@@ -77,7 +77,7 @@ var/list/fusion_cores = list()
if(owned_field)
icon_state = "core0"
if(force_rupture || owned_field.plasma_temperature > 1000)
- owned_field.Rupture()
+ owned_field.MRC()
else
owned_field.RadiateAll()
qdel(owned_field)
diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm
index 37351c53af..ef1c3716fa 100644
--- a/code/modules/power/fusion/core/core_field.dm
+++ b/code/modules/power/fusion/core/core_field.dm
@@ -1,6 +1,7 @@
#define FUSION_ENERGY_PER_K 20
#define FUSION_MAX_ENVIRO_HEAT 5000 //raise this if you want the reactor to dump more energy into the atmosphere
-#define PLASMA_TEMP_RADIATION_DIVISIOR 15 //radiation divisior. plasma temp / divisor = radiation.
+#define PLASMA_TEMP_RADIATION_DIVISIOR 20 //radiation divisior. plasma temp / divisor = radiation.
+
/obj/effect/fusion_em_field
name = "electromagnetic field"
@@ -19,6 +20,8 @@
var/tick_instability = 0
var/percent_unstable = 0
var/stable = 1
+ var/id_tag
+ var/critical = 0
var/obj/machinery/power/fusion_core/owned_core
var/list/dormant_reactant_quantities = list()
@@ -31,7 +34,8 @@
/obj/structure/cable,
/obj/machinery/atmospherics,
/obj/machinery/air_sensor,
- /mob/observer/dead
+ /mob/observer/dead,
+ /obj/machinery/power/hydromagnetic_trap
)
var/light_min_range = 2
@@ -52,7 +56,7 @@
owned_core = new_owned_core
if(!owned_core)
qdel(src)
-
+ id_tag = owned_core.id_tag
//create the gimmicky things to handle field collisions
var/obj/effect/fusion_particle_catcher/catcher
@@ -194,37 +198,46 @@
if(percent_unstable >= 1)
owned_core.Shutdown(force_rupture=1)
else
- if(percent_unstable > 0.5 && prob(percent_unstable*100))
+ if(percent_unstable > 0.1 && prob(percent_unstable*100))
if(plasma_temperature < 2000)
visible_message("\The [src] ripples uneasily, like a disturbed pond.")
else
var/flare
var/fuel_loss
var/rupture
- if(percent_unstable < 0.2)
+ if(percent_unstable > 0.2)
visible_message("\The [src] ripples uneasily, like a disturbed pond.")
- fuel_loss = prob(5)
- flare = prob(50)
- else if(percent_unstable < 0.9)
+ flare = prob(25)
+ else if(percent_unstable > 0.5)
visible_message("\The [src] undulates violently, shedding plumes of plasma!")
flare = prob(50)
fuel_loss = prob(20)
rupture = prob(5)
- else
+ else if(percent_unstable > 0.8)
visible_message("\The [src] is wracked by a series of horrendous distortions, buckling and twisting like a living thing!")
flare = 1
fuel_loss = prob(50)
rupture = prob(25)
if(rupture)
- owned_core.Shutdown(force_rupture=1)
+ if(prob(80))
+ MagneticQuench()
+ return
+ else if(prob(15))
+ MRC()
+ return
+ else if(prob(5))
+ QuantumFluxCascade()
+ return
+ else if(prob(5))
+ BluespaceQuenchEvent()
+ return
else
var/lost_plasma = (plasma_temperature*percent_unstable)
radiation += lost_plasma
if(flare)
- radiation += plasma_temperature/2
- plasma_temperature -= lost_plasma
-
+ spawn(1)
+ emflare()
if(fuel_loss)
for(var/particle in dormant_reactant_quantities)
var/lost_fuel = dormant_reactant_quantities[particle]*percent_unstable
@@ -234,17 +247,19 @@
dormant_reactant_quantities.Remove(particle)
Radiate()
return
-
-/obj/effect/fusion_em_field/proc/Rupture()
- visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!")
- set_light(15, 15, "#CCCCFF")
- empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300))
- sleep(5)
- global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor")
- RadiateAll()
- explosion(get_turf(owned_core),-1,-1,8,10) // Blow out all the windows.
- return
-
+/*/obj/effect/fusion_em_field/proc/CheckCriticality()
+ if (plasma_temperature > 70000)
+ critical += 0.2
+ else if (instability > 0.45)
+ critical += 0.6
+ if(critical >= 25 && prob(percent_unstable*100))
+ if (critical >= 90)
+ visible_message("\The [src] rumbles and quivers violently, threatening to break free!")
+ else if(critical >= 50)
+ visible_message("\The [src] rumbles and quivers energetically, the walls distorting slightly.")
+ else if(critical >= 25)
+ visible_message("\The [src] rumbles and quivers slightly, vibrating the deck.")
+*/
/obj/effect/fusion_em_field/proc/ChangeFieldStrength(var/new_strength)
var/calc_size = 1
if(new_strength <= 50)
@@ -490,19 +505,19 @@
//All procs below this point are called in _core.dm, starting at line 41.
//Stability monitoring. Gives radio annoucements if field stability is below 80%
/obj/effect/fusion_em_field/proc/stability_monitor()
- var/warnpoint = 0.10
+ var/warnpoint = 0.10 //start warning at 10% instability
var/warnmessage = "Warning! Field unstable! Instability at [percent_unstable * 100]%, plasma temperature at [plasma_temperature + 295]k."
var/stablemessage = "Containment field returning to stable conditions."
- if(percent_unstable >= warnpoint)
+ if(percent_unstable >= warnpoint) //we're unstable, start warning engineering
global_announcer.autosay(warnmessage, "Field Stability Monitor", "Engineering")
- stable = 0
- sleep(20 SECONDS)
- return
- if(percent_unstable < warnpoint && stable == 0)
+ stable = 0 //we know we're not stable, so let's not state the safe message.
+ sleep(20)
+ return
+ if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message.
global_announcer.autosay(stablemessage, "Field Stability Monitor", "Engineering")
stable = 1
- return
+ return
//Reaction radiation is fairly buggy and there's at least three procs dealing with radiation here, this is to ensure constant radiation output.
/obj/effect/fusion_em_field/proc/radiation_scale()
@@ -513,7 +528,8 @@
if(owned_core && owned_core.loc)
var/datum/gas_mixture/environment = owned_core.loc.return_air()
if(environment && environment.temperature < (T0C+FUSION_MAX_ENVIRO_HEAT))
- environment.add_thermal_energy(plasma_temperature*20000)
+ environment.add_thermal_energy(plasma_temperature*5000)
+ check_instability()
//Temperature changes depending on color.
/obj/effect/fusion_em_field/proc/temp_color()
@@ -538,8 +554,121 @@
light_max_range = 5
light_max_power = 5
return
+//moved the flare to a proc for various reasons. Called on line 225.
+/obj/effect/fusion_em_field/proc/emflare()
+ radiation += plasma_temperature/2
+ light_color = "#ff0000"
+ light_max_power = 30
+ light_min_power = 30
+ light_min_range = 30
+ light_max_range = 30
+ visible_message("\The [src] flares to eye-searing brightness!")
+ sleep(60)
+ temp_color()
+ //plasma_temperature -= lost_plasma
+ return
+//Rupture() is no longer the end all be all. Fear the magnetic resonance cascade and quantum flux cascade
+/obj/effect/fusion_em_field/proc/Rupture()
+ visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!")
+ set_light(15, 15, "#CCCCFF")
+ empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300))
+ global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor")
+ RadiateAll()
+ var/list/things_in_range = range(10, owned_core)
+ var/list/turfs_in_range = list()
+ var/turf/T
+ for (T in things_in_range)
+ turfs_in_range.Add(T)
+
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300))
+ spawn(25)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ spawn(25)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ spawn(25)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ spawn(10)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ spawn(10)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ spawn(10)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ return
+
+/obj/effect/fusion_em_field/proc/MRC() //spews electromagnetic pulses in an area around the core.
+ visible_message("\The [src] glows an extremely bright pink and flares out of existance!")
+ global_announcer.autosay("Warning! Magnetic Resonance Cascade detected! Brace for electronic system distruption.", "Field Stability Monitor")
+ set_light(15, 15, "#ff00d8")
+ var/list/things_in_range = range(15, owned_core)
+ var/list/turfs_in_range = list()
+ var/turf/T
+ for (T in things_in_range)
+ turfs_in_range.Add(T)
+ for(var/loopcount = 1 to 10)
+ spawn(200)
+ empulse(pick(things_in_range), 10, 15)
+ Destroy()
+ return
+
+/obj/effect/fusion_em_field/proc/QuantumFluxCascade() //spews hot phoron and oxygen in a radius around the RUST. Will probably set fire to things
+ global_announcer.autosay("Warning! Quantum fluxuation detected! Flammable gas release expected.", "Field Stability Monitor")
+ var/list/things_in_range = range(15, owned_core)
+ var/list/turfs_in_range = list()
+ var/turf/T
+ for (T in things_in_range)
+ turfs_in_range.Add(T)
+ for(var/loopcount = 1 to 10)
+ var/turf/TT = get_turf(pick(turfs_in_range))
+ if(istype(TT))
+ var/datum/gas_mixture/plasma = new
+ plasma.adjust_gas("oxygen", (size*100), 0)
+ plasma.adjust_gas("phoron", (size*100), 0)
+ plasma.temperature = (plasma_temperature/2)
+ plasma.update_values()
+ TT.assume_air(plasma)
+ TT.hotspot_expose(plasma_temperature)
+ plasma = null
+ Destroy()
+ return
+
+/obj/effect/fusion_em_field/proc/MagneticQuench() //standard hard shutdown. dumps hot oxygen/phoron into the core's area and releases an EMP in the area around the core.
+ global_announcer.autosay("Warning! Magnetic Quench event detected, engaging hard shutdown.", "Field Stability Monitor")
+ empulse(owned_core, 10, 15)
+ var/turf/TT = get_turf(owned_core)
+ if(istype(TT))
+ var/datum/gas_mixture/plasma = new
+ plasma.adjust_gas("oxygen", (size*100), 0)
+ plasma.adjust_gas("phoron", (size*100), 0)
+ plasma.temperature = (plasma_temperature/2)
+ plasma.update_values()
+ TT.assume_air(plasma)
+ TT.hotspot_expose(plasma_temperature)
+ plasma = null
+ Destroy()
+ owned_core.Shutdown()
+ return
+
+/obj/effect/fusion_em_field/proc/BluespaceQuenchEvent() //!!FUN!! causes a number of explosions in an area around the core. Will likely destory or heavily damage the reactor.
+ visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!")
+ set_light(15, 15, "#CCCCFF")
+ empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300))
+ global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor")
+ RadiateAll()
+ var/list/things_in_range = range(10, owned_core)
+ var/list/turfs_in_range = list()
+ var/turf/T
+ for (T in things_in_range)
+ turfs_in_range.Add(T)
+ for(var/loopcount = 1 to 10)
+ explosion(pick(things_in_range), -1, 5, 5, 5)
+ empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300))
+ Destroy()
+ owned_core.Shutdown()
+ return
+
#undef FUSION_HEAT_CAP
#undef FUSION_MAX_ENVIRO_HEAT
#undef PLASMA_TEMP_RADIATION_DIVISIOR
\ No newline at end of file
diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm
index 38f73812f9..623f70bd6b 100644
--- a/code/modules/power/fusion/fusion_reactions.dm
+++ b/code/modules/power/fusion/fusion_reactions.dm
@@ -117,7 +117,7 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy)
var/turf/origin = get_turf(holder)
holder.Rupture()
qdel(holder)
- var/radiation_level = rand(100, 200)
+ var/radiation_level = 200
// Copied from the SM for proof of concept. //Not any more --Cirra //Use the whole z proc --Leshana
radiation_repository.z_radiate(locate(1, 1, holder.z), radiation_level, 1)
@@ -141,7 +141,6 @@ proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy)
return 1
-
// High end reactions.
/decl/fusion_reaction/boron_hydrogen
p_react = "boron"
diff --git a/code/modules/power/fusion/fusion_reagents.dm b/code/modules/power/fusion/fusion_reagents.dm
index 875bf63fee..80b1cbb336 100644
--- a/code/modules/power/fusion/fusion_reagents.dm
+++ b/code/modules/power/fusion/fusion_reagents.dm
@@ -5,4 +5,14 @@
description = "A colorless, odorless, tasteless and generally inert gas used in fusion reactors. Non-radioactive."
id = "helium-3"
reagent_state = GAS
- color = "#808080"
\ No newline at end of file
+ color = "#808080"
+
+/obj/structure/reagent_dispensers/he3
+ name = "fueltank"
+ desc = "A fueltank."
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "weldtank"
+ amount_per_transfer_from_this = 10
+ New()
+ ..()
+ reagents.add_reagent("helium-3",1000)
\ No newline at end of file
diff --git a/code/modules/power/fusion/magpower.dm b/code/modules/power/fusion/magpower.dm
new file mode 100644
index 0000000000..c6882c6eb3
--- /dev/null
+++ b/code/modules/power/fusion/magpower.dm
@@ -0,0 +1,54 @@
+#define ENERGY_PER_K 20
+#define MINIMUM_PLASMA_TEMPERATURE 10000
+
+/obj/machinery/power/hydromagnetic_trap
+ name = "\improper hydromagnetic trap"
+ desc = "A device for extracting power from high-energy plasma in toroidal fields."
+ icon = 'icons/obj/machines/power/fusion.dmi'
+ icon_state = "mag_trap0"
+ anchored = 1
+ var/list/things_in_range = list()//what is in a radius of us?
+ var/list/fields_in_range = list()//What EM fields are in that radius?
+ var/list/active_field = list()//Our active field.
+ var/active = 0 //are we even on?
+ var/id_tag //needed for !!rasins!!
+
+/obj/machinery/power/hydromagnetic_trap/process()
+ if(!powernet && anchored == 1)
+ return
+ spawn(1)
+ Active()
+ Search()
+
+/obj/machinery/power/hydromagnetic_trap/proc/Search()//let's not have +100 instances of the same field in active_field.
+ things_in_range = range(7, src)
+ var/obj/effect/fusion_em_field/FFF
+ for (FFF in things_in_range)
+ fields_in_range.Add(FFF)
+ for (FFF in fields_in_range)
+ if (active_field.len > 0)
+ return
+ else if (active_field.len == 0)
+ Link()
+ return
+
+/obj/machinery/power/hydromagnetic_trap/proc/Link() //discover our EM field
+ var/obj/effect/fusion_em_field/FFF
+ for(FFF in fields_in_range)
+ if (FFF.id_tag != id_tag)
+ return
+ active_field += FFF
+ active = 1
+ return
+
+/obj/machinery/power/hydromagnetic_trap/proc/Active()//POWERRRRR
+ var/obj/effect/fusion_em_field/FF
+ if (active == 0)
+ return
+ for (FF in active_field)
+ if (FF.plasma_temperature >= MINIMUM_PLASMA_TEMPERATURE)
+ icon_state = "mag_trap1"
+ add_avail(ENERGY_PER_K * FF.plasma_temperature)
+ if (FF.plasma_temperature <= MINIMUM_PLASMA_TEMPERATURE)
+ icon_state = "mag_trap0"
+ return
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index d57c133cd1..d8712a0e4c 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -53,7 +53,7 @@
if(isliving(user))
hasShocked = 1
var/shock_damage = min(rand(30,40),rand(30,40))
- user.electrocute_act(shock_damage, src)
+ user.electrocute_act(shock_damage, src, 1, BP_TORSO)
var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src)))
user.throw_at(target, 200, 4)
@@ -61,7 +61,6 @@
sleep(20)
hasShocked = 0
- return
/obj/machinery/containment_field/proc/set_master(var/master1,var/master2)
if(!master1 || !master2)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index c2e6ec349c..df27be9d78 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -291,7 +291,8 @@
ui_interact(user)
/obj/machinery/power/supermatter/attack_hand(mob/user as mob)
- user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... [TU.his] body starts to glow and bursts into flames before flashing into ash.",\
"You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\
"You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")
@@ -337,7 +338,9 @@
if(istype(AM, /obj/effect))
return
if(istype(AM, /mob/living))
- AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\
+ var/mob/living/M = AM
+ var/datum/gender/T = gender_datums[M.get_visible_gender()]
+ AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash.",\
"You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\
"You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")
else if(!grav_pulling) //To prevent spam, detonating supermatter does not indicate non-mobs being destroyed
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index c5baba2f34..4152b5e362 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -288,7 +288,7 @@
else if(closest_mob)
var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5)
- closest_mob.electrocute_act(shock_damage, source, 1/*, tesla_shock = 1, stun = stun_mobs*/)
+ closest_mob.electrocute_act(shock_damage, source, 1, ran_zone())
if(issilicon(closest_mob))
var/mob/living/silicon/S = closest_mob
if(stun_mobs)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index b279908b79..460fac8239 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -51,6 +51,7 @@
attack_verb = list("struck", "hit", "bashed")
zoomdevicename = "scope"
+ var/automatic = 0
var/burst = 1
var/fire_delay = 6 //delay after shooting before the gun can be used again
var/burst_delay = 2 //delay between shots, if firing in bursts
@@ -68,7 +69,8 @@
var/requires_two_hands
var/wielded_icon = "gun_wielded"
var/one_handed_penalty = 0 // Penalty applied if someone fires a two-handed gun with one hand.
-
+ var/obj/screen/auto_target/auto_target
+ var/shooting = 0
var/next_fire_time = 0
var/sel_mode = 1 //index of the currently selected mode
@@ -180,8 +182,9 @@
if(P)
if(process_projectile(P, user, user, pick("l_foot", "r_foot")))
handle_post_fire(user, user)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
user.visible_message(
- "\The [user] shoots \himself in the foot with \the [src]!",
+ "\The [user] shoots [TU.himself] in the foot with \the [src]!",
"You shoot yourself in the foot with \the [src]!"
)
M.drop_item()
@@ -206,8 +209,29 @@
if(user && user.a_intent == I_HELP && user.is_preference_enabled(/datum/client_preference/safefiring)) //regardless of what happens, refuse to shoot if help intent is on
user << "You refrain from firing your [src] as your intent is set to help."
+ return
+
else
- Fire(A,user,params) //Otherwise, fire normally.
+ Fire(A, user, params) //Otherwise, fire normally.
+ return
+
+/* //Commented out for quality control and testing
+ if(automatic == 1)//Are we are going to be using automatic shooting
+ //We check to make sure they can fire
+ if(!special_check(user))
+ return
+ if(auto_target)//If they already have one then update it
+ auto_target.loc = get_turf(A)
+ auto_target.delay_del = 1//And reset the del so its like they got a new one and doesnt instantly vanish
+ to_chat(user, "You ready \the [src]! Click and drag the target around to shoot.")
+ else//Otherwise just make a new one
+ auto_target = new/obj/screen/auto_target(get_turf(A), src)
+ visible_message("\[user] readies the [src]!")
+ playsound(src, 'sound/weapons/TargetOn.ogg', 50, 1)
+ to_chat(user, "You ready \the [src]! Click and drag the target around to shoot.")
+ return
+ Fire(A,user,params) //Otherwise, fire normally.
+*/
/obj/item/weapon/gun/attack(atom/A, mob/living/user, def_zone)
if (A == user && user.zone_sel.selecting == O_MOUTH && !mouthshoot)
@@ -307,8 +331,11 @@
return
var/shoot_time = (burst - 1)* burst_delay
+
+ //These should apparently be disabled to allow for the automatic system to function without causing near-permanant paralysis. Re-enabling them while we sort that out.
user.setClickCooldown(shoot_time) //no clicking on things while shooting
user.setMoveCooldown(shoot_time) //no moving while shooting either
+
next_fire_time = world.time + shoot_time
var/held_acc_mod = 0
@@ -320,7 +347,27 @@
//actually attempt to shoot
var/turf/targloc = get_turf(target) //cache this in case target gets deleted during shooting, e.g. if it was a securitron that got destroyed.
+
+/* // Commented out for quality control and testing.
+ shooting = 1
+ if(automatic == 1 && auto_target && auto_target.active)//When we are going to shoot and have an auto_target AND its active meaning we clicked on it we tell it to burstfire 1000 rounds
+ burst = 1000//Yes its not EXACTLY full auto but when are we shooting more than 1000 normally and it can easily be made higher
+*/
for(var/i in 1 to burst)
+ /* // Commented out for quality control and testing.
+ if(!reflex && automatic)//If we are shooting automatic then check our target, however if we are shooting reflex we dont use automatic
+ //extra sanity checking.
+ if(user.incapacitated())
+ return
+ if(user.get_active_hand() != src)
+ break
+ if(!auto_target) break//Stopped shooting
+ else if(auto_target.loc)
+ target = auto_target.loc
+ //Lastly just update our dir if needed
+ if(user.dir != get_dir(user, auto_target))
+ user.face_atom(auto_target)
+ */
var/obj/projectile = consume_next_projectile(user)
if(!projectile)
handle_click_empty(user)
@@ -346,6 +393,9 @@
last_shot = world.time
+/* // Commented out for quality control and testing.
+ shooting = 0
+*/
// We do this down here, so we don't get the message if we fire an empty gun.
if(requires_two_hands)
if(user.item_is_in_hands(src) && user.hands_are_full())
diff --git a/code/modules/projectiles/guns/automatic_fire.dm b/code/modules/projectiles/guns/automatic_fire.dm
new file mode 100644
index 0000000000..25e1e3a461
--- /dev/null
+++ b/code/modules/projectiles/guns/automatic_fire.dm
@@ -0,0 +1,73 @@
+//This entire file is unticked for quality control and testing
+
+
+//True automagic gun modes. Dakka dakka.
+//A significant portion of this code was donated by Mport from SS:CM
+
+//This is used by guns shooting in automatic mode
+/obj/screen/auto_target
+ name = "targeter"
+ icon = null//We dont want people to see this guy
+ density = 0
+ anchored = 1
+ var/obj/item/weapon/gun/gun
+ var/active = 0//Just tells us that it was clicked on so we should start shooting
+ var/delay_del = 0//Delays the del if we retarget without shooting
+
+/obj/screen/auto_target/New(loc, var/obj/item/weapon/gun/G)
+ ..()
+ gun = G
+ var/image/I = image('icons/effects/Targeted.dmi', src, "locked")
+ I.override = 1
+ usr << I
+ //autodel() //Currently doesn't really work right.
+ return
+
+/obj/screen/auto_target/CanPass()//Everything should ignore this guy and just pass by
+ return 1
+
+ //Used to get rid of this if they target but dont actually shoot or stop shooting (no ammo) yet are still dragging us around
+/obj/screen/auto_target/proc/autodel()
+ set waitfor=0
+ if(active == 1)
+ return
+ sleep(20)
+ if(!src) return//Might not really be needed
+ if(delay_del)//This says we want to wait another X seconds before trying to del
+ delay_del = 0
+ autodel()
+ return
+ if(gun.shooting == 0)
+ qdel(src)
+ else
+ autodel()//Yes in theory this could hit the inf loop
+ return
+
+ //When the player clicks on the target it will disable the autodel and tell the gun to shoot
+/obj/screen/auto_target/MouseDown(location,control,params)
+ active += 1//Tell the autodel that we are actually using this now
+ if(gun.shooting == 0)//If we are not shooting start shooting, we need this here or they have to drag to a new turf before it starts shooting, felt weird
+ gun.Fire(loc, usr, params)
+ return
+
+ //Called when they drag the object somewhere else
+ //If its not already shooting (should be though due to the above, but this does let it click at you when it runs dry) then start shooting,
+/obj/screen/auto_target/MouseDrag(over_object,src_location,over_location,src_control,over_control,params)
+ if(gun.shooting == 0)//If we are not shooting start shooting
+ gun.Fire(loc, usr, params)
+ if(over_location != loc)//This updates the loc to our new location when we drag it to a new turf
+ loc = over_location
+ if((usr.get_active_hand() != gun))
+ qdel(src)
+
+ //This gets rid of us when they let go of the click, but only after they actually drag the target to a new turf which is why the below also has to exist
+/obj/screen/auto_target/MouseDrop(over_object,src_location,over_location,src_control,over_control,params)
+ qdel(src)
+ return
+ //This is needed so if they just MouseDown and then let go it will stop shooting, otherwise we stick around till they run out of bullets
+/obj/screen/auto_target/MouseUp(object,location,control,params)
+ qdel(src)
+ return
+
+//This pseudo code is being left in place to serve as references to the modifications to gun.dm, the Fire() proc, and the afterattack() proc. -k22
+//Code donated by Mport.
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 84697e668d..beb44e1a3e 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -25,6 +25,16 @@
charge_cost = 480
projectile_type = /obj/item/projectile/ion
+/obj/item/weapon/gun/energy/phasegun
+ name = "phase pistol"
+ desc = "The NT Mk26 EW Apollo is an energy handgun, specifically designed for use against wildlife."
+ icon_state = "phase"
+ item_state = "taser" //I don't have an in-hand sprite, taser will be fine
+ slot_flags = SLOT_BELT|SLOT_HOLSTER
+ charge_cost = 300
+ projectile_type = /obj/item/projectile/energy/phase
+
+
/obj/item/weapon/gun/energy/decloner
name = "biological demolecularisor"
desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements."
@@ -199,5 +209,5 @@ obj/item/weapon/gun/energy/staff/focus
firemodes = list(
list(mode_name="single shot", burst = 1, burst_accuracy = list(5), dispersion = list(0), charge_cost = 24),
list(mode_name="five shot burst", burst = 5, burst_accuracy = list(5,5,5,5,5), dispersion = list(1,1,1,1,1)),
- list(mode_name="ten shot burst", burst = 10, burst_accuracy = list(5,5,5,5,5,5,5,5,5,5), dispersion = list(2,2,2,2,2,2,2,2,2,2)),
- )
+ list(mode_name="ten shot burst", burst = 10, burst_accuracy = list(5,5,5,5,5,5,5,5,5,5), dispersion = list(2,2,2,2,2,2,2,2,2,2))
+ )
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm
new file mode 100644
index 0000000000..8f81e971c4
--- /dev/null
+++ b/code/modules/projectiles/guns/modular_guns.dm
@@ -0,0 +1,174 @@
+//This will likely drive me insane, but fuck it. Let's give it a shot. -k22
+//This was heavily assisted by MoondancerPony
+/obj/item/weapon/gun/energy/modular
+ name = "modular weapon"
+ desc = "You shouldn't be seeing this. Contact your local time-police station."
+ icon_state = "mod_pistol"
+ cell_type = /obj/item/weapon/cell/device/weapon
+ charge_cost = 120
+
+ var/max_components = 3 //How many components we can hold.
+ var/capacitor_rating = 0 //How good are the capacitors inside us?
+ var/laser_rating = 0 //How good are the lasers inside of us?
+ var/manipulator_rating = 0 //How good are the manipulators inside us?
+ var/assembled = 1 //Are we closed up?
+ var/max_burst_size = 5 //Don't let our maximum burst size get too high.
+ var/list/guncomponents = list() //Generate our list of components.
+ var/accepted_components = list(
+ /obj/item/weapon/stock_parts/capacitor/,
+ /obj/item/weapon/stock_parts/capacitor/adv,
+ /obj/item/weapon/stock_parts/capacitor/super,
+ /obj/item/weapon/stock_parts/micro_laser/,
+ /obj/item/weapon/stock_parts/micro_laser/high,
+ /obj/item/weapon/stock_parts/micro_laser/ultra,
+ /obj/item/weapon/stock_parts/manipulator/,
+ /obj/item/weapon/stock_parts/manipulator/nano,
+ /obj/item/weapon/stock_parts/manipulator/pico,
+ )
+ //Excessively long because it won't accept subtypes for some reason!
+
+
+/obj/item/weapon/gun/energy/modular/New() //Initialize our components.
+ ..()
+ guncomponents = list()
+ guncomponents += new /obj/item/weapon/stock_parts/capacitor
+ guncomponents += new /obj/item/weapon/stock_parts/micro_laser
+ guncomponents += new /obj/item/weapon/stock_parts/manipulator
+ CheckParts()
+ FireModeModify()
+
+/obj/item/weapon/gun/energy/modular/proc/CheckParts() //What parts do we have inside us, and how good are they?
+ capacitor_rating = 0
+ laser_rating = 0
+ manipulator_rating = 0
+ for(var/obj/item/weapon/stock_parts/capacitor/CA in guncomponents)
+ capacitor_rating += CA.rating
+ for(var/obj/item/weapon/stock_parts/micro_laser/ML in guncomponents)
+ laser_rating += ML.rating
+ for(var/obj/item/weapon/stock_parts/manipulator/MA in guncomponents)
+ manipulator_rating += MA.rating
+ FireModeModify()
+
+/obj/item/weapon/gun/energy/modular/attackby(obj/item/O, mob/user)
+ if(istype(O, /obj/item/weapon/screwdriver))
+ to_chat(user, "You [assembled ? "disassemble" : "assemble"] the gun.")
+ assembled = !assembled
+ playsound(src, O.usesound, 50, 1)
+ return
+ if(istype(O, /obj/item/weapon/crowbar))
+ if(assembled == 1)
+ to_chat(user, "Disassemble the [src] first!")
+ return
+ for(var/obj/item/I in guncomponents)
+ to_chat(user, "You remove the gun's components.")
+ playsound(src, O.usesound, 50, 1)
+ I.forceMove(get_turf(src))
+ guncomponents.Remove(I)
+ CheckParts()
+ return
+ //Someone's attacking us, and it's not anything we have a special case for (i.e. a tool)
+ ..()
+ if(assembled) // can't put anything in
+ return
+ if(!(O.type in accepted_components))//check if we can accept it
+ to_chat(user, "You can't add this to [src]!")
+ return
+ if(guncomponents.len >= max_components) //We have too many componenets and can't fit more.
+ to_chat(user, "You can't add any more components!")
+ return
+ if(istype(O, /obj/item/weapon/stock_parts/capacitor) && capacitor_rating == 5)
+ to_chat(user, "You can't add any more capacitors!")
+ return
+ user.drop_item()
+ guncomponents += O
+ O.forceMove(src)
+ to_chat(user, "You add a component to the [src]")
+ CheckParts()
+
+
+/obj/item/weapon/gun/energy/modular/proc/FireModeModify() //Check our laser, manipulator, and capacitor ratings, adjust stun and lethal firemodes depending on laser / manipulator rating and burst size depending on capacitors.
+ //check our lethal and stun ratings depending on laser and manipulator rating.
+ var/burstmode = capacitor_rating
+ var/beammode
+ var/beammode_lethal
+ var/chargecost
+ var/chargecost_lethal
+
+ if(laser_rating >= 15)
+ beammode_lethal = /obj/item/projectile/beam/sniper
+ beammode = /obj/item/projectile/beam/stun
+ chargecost = 300
+ chargecost_lethal = 600
+ else if(laser_rating >= 10)
+ beammode_lethal = /obj/item/projectile/beam/xray
+ beammode = /obj/item/projectile/beam/stun
+ chargecost = 300
+ chargecost_lethal = 200
+ else if(laser_rating == 8 && manipulator_rating == 5) //very specific set of combinations. No, you can't make a pulse rifle. Sorry research.
+ beammode_lethal = /obj/item/projectile/beam/heavylaser
+ beammode = /obj/item/projectile/beam/stun
+ chargecost = 300
+ chargecost_lethal = 600
+ else if(laser_rating >= 5)
+ beammode_lethal = /obj/item/projectile/beam/midlaser
+ beammode = /obj/item/projectile/beam/stun/med
+ chargecost = 180
+ chargecost_lethal = 240
+ else if(laser_rating < 5)
+ beammode_lethal = /obj/item/projectile/beam/weaklaser
+ beammode = /obj/item/projectile/beam/stun/weak
+ chargecost = 100
+ chargecost_lethal = 200
+
+ firemodes = list(
+ new /datum/firemode(src, list(mode_name="stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost)),
+ new /datum/firemode(src, list(mode_name="lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal)),
+ new /datum/firemode(src, list(mode_name="[burstmode] shot stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost, burst = burstmode)),
+ new /datum/firemode(src, list(mode_name="[burstmode] shot lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal, burst = burstmode)),
+ )
+
+/obj/item/weapon/gun/energy/modular/load_ammo(var/obj/item/C, mob/user)
+ if(istype(C, cell_type))
+ if(self_recharge || battery_lock)
+ user << "[src] does not have a battery port."
+ return
+ var/obj/item/weapon/cell/P = C
+ if(power_supply)
+ user << "[src] already has a power cell."
+ else
+ user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].")
+ if(do_after(user, 10))
+ user.remove_from_mob(P)
+ power_supply = P
+ P.loc = src
+ user.visible_message("[user] inserts [P] into [src].", "You insert [P] into [src].")
+ playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1)
+ update_icon()
+ update_held_icon()
+ return
+
+/obj/item/weapon/gun/energy/modular/pistol
+ name = "modular pistol"
+ icon_state = "mod_pistol"
+ max_components = 6
+ desc = "A bulky modular pistol frame. This only only accepts six parts."
+ origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
+ burst_delay = 2
+
+/obj/item/weapon/gun/energy/modular/carbine
+ name = "modular carbine"
+ icon_state = "mod_carbine"
+ max_components = 8
+ desc = "A modular version of the standard laser carbine. This one can hold 8 components."
+ origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3, TECH_MATERIAL = 3)
+ burst_delay = 2
+
+/obj/item/weapon/gun/energy/modular/cannon
+ name = "modular cannon"
+ icon_state = "mod_cannon"
+ max_components = 14
+ desc = "Say hello, to my little friend!"
+ one_handed_penalty = 4 //dual wielding = no.
+ cell_type = /obj/item/weapon/cell //We're bigger. We can use much larger power cells.
+ origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 4) //its a damn cannon capable of holding a huge amount of parts.
+ burst_delay = 4 //preventing extreme silliness.
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 19b92db3b7..39bc6d7ae0 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -190,14 +190,23 @@
one_handed_penalty = 6
+ var/cover_open = 0
+
+/* Commented out for quality control and testing.
+ firemodes = list(
+ list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 0),
+ list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0), automatic = 0),
+ list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2), automatic = 0),
+ list(mode_name="automatic", burst=1, fire_delay=-1, move_delay=null, burst_accuracy=null, dispersion=null, automatic = 1),
+ )
+*/
+
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
- list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2))
+ list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
- var/cover_open = 0
-
/obj/item/weapon/gun/projectile/automatic/l6_saw/special_check(mob/user)
if(cover_open)
user << "[src]'s cover is open! Close it before firing!"
@@ -370,4 +379,4 @@
icon_state = "bullpup"
else
item_state = "bullpup-empty"
- if(!ignore_inhands) update_held_icon()
\ No newline at end of file
+ if(!ignore_inhands) update_held_icon()
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index d3bc093cac..8138146163 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -195,4 +195,10 @@
light_color = "#0000FF"
embed_chance = 0
- muzzle_type = /obj/effect/projectile/pulse/muzzle
\ No newline at end of file
+ muzzle_type = /obj/effect/projectile/pulse/muzzle
+
+/obj/item/projectile/energy/phase
+ kill_count = 4
+ damage = 5
+ SA_bonus_damage = 55 // 60 total on animals.
+ SA_vulnerability = SA_ANIMAL
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 8c5d2cd11a..7a6ecd6c1c 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -121,8 +121,9 @@
if(prob(15))
M.apply_effect((rand(30,80)),IRRADIATE)
M.Weaken(5)
+ var/datum/gender/TM = gender_datums[M.get_visible_gender()]
for (var/mob/V in viewers(src))
- V.show_message("[M] writhes in pain as \his vacuoles boil.", 3, "You hear the crunching of leaves.", 2)
+ V.show_message("[M] writhes in pain as [TM.his] vacuoles boil.", 3, "You hear the crunching of leaves.", 2)
if(prob(35))
// for (var/mob/V in viewers(src)) //Public messages commented out to prevent possible metaish genetics experimentation and stuff. - Cheridan
// V.show_message("[M] is mutated by the radiation beam.", 3, " You hear the snapping of twigs.", 2)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 604eaa6a3a..5288843f57 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -31,7 +31,7 @@
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
- user << "[src] is empty."
+ to_chat(user, "[src] is empty.")
return
if (!istype(M))
return
@@ -40,21 +40,29 @@
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
- user << "\The [H] is missing that limb!"
+ to_chat(user, "\The [H] is missing that limb!")
return
else if(affected.robotic >= ORGAN_ROBOT)
- user << "You cannot inject a robotic limb."
+ to_chat(user, "You cannot inject a robotic limb.")
return
+ if(!H.stat)
+ if(H != user)
+ if(H.a_intent != I_HELP)
+ to_chat(user, "[H] is resisting your attempt to inject them with \the [src].")
+ to_chat(H, " [user] is trying to inject you with \the [src]!")
+ if(!do_after(user, 30))
+ return
+
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
- user << "You inject [M] with [src]."
- M << "You feel a tiny prick!"
+ to_chat(user, "You inject [M] with \the [src].")
+ to_chat(M, "You feel a tiny prick!")
if(M.reagents)
var/contained = reagentlist()
var/trans = reagents.trans_to_mob(M, amount_per_transfer_from_this, CHEM_BLOOD)
admin_inject_log(user, M, src, contained, trans)
- user << "[trans] units injected. [reagents.total_volume] units remaining in \the [src]."
+ to_chat(user, "[trans] units injected. [reagents.total_volume] units remaining in \the [src].")
if(!reusable && !used)
used = !used
@@ -110,7 +118,7 @@
user << "\The [src] already has a vial."
else
..()
-
+
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "autoinjector"
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index dc4401f0bc..a6e158befa 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -491,6 +491,15 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/roller/adv
sort_string = "MBBAF"
+/datum/design/item/medical/enhanced_analyzer
+ name = "enhanced health analyzer"
+ desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels."
+ id = "advanced_analyzer"
+ req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
+ materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 1500)
+ build_path = /obj/item/device/healthanalyzer/advanced
+ sort_string = "MBBAG"
+
/datum/design/item/implant
materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm
index be16b61c06..c2775f9ce7 100644
--- a/code/modules/rogueminer_vr/zonemaster.dm
+++ b/code/modules/rogueminer_vr/zonemaster.dm
@@ -184,7 +184,7 @@
return
var/farEnough = 1
- for(var/A in master_controller.digsite_spawning_turfs)
+ for(var/A in SSxenoarch.digsite_spawning_turfs)
var/turf/T = A
if(T in range(5, M))
farEnough = 0
@@ -192,7 +192,7 @@
if(!farEnough)
return
- master_controller.digsite_spawning_turfs.Add(M)
+ SSxenoarch.digsite_spawning_turfs.Add(M)
var/digsite = get_random_digsite_type()
var/target_digsite_size = rand(DIGSITESIZE_LOWER, DIGSITESIZE_UPPER)
@@ -240,14 +240,14 @@
//have a chance for an artifact to spawn here, but not in animal or plant digsites
if(isnull(M.artifact_find) && digsite != DIGSITE_GARDEN && digsite != DIGSITE_ANIMAL)
- master_controller.artifact_spawning_turfs.Add(archeo_turf)
+ SSxenoarch.artifact_spawning_turfs.Add(archeo_turf)
//create artifact machinery
var/num_artifacts_spawn = rand(ARTIFACTSPAWNNUM_LOWER, ARTIFACTSPAWNNUM_UPPER)
- while(master_controller.artifact_spawning_turfs.len > num_artifacts_spawn)
- pick_n_take(master_controller.artifact_spawning_turfs)
+ while(SSxenoarch.artifact_spawning_turfs.len > num_artifacts_spawn)
+ pick_n_take(SSxenoarch.artifact_spawning_turfs)
- var/list/artifacts_spawnturf_temp = master_controller.artifact_spawning_turfs.Copy()
+ var/list/artifacts_spawnturf_temp = SSxenoarch.artifact_spawning_turfs.Copy()
while(artifacts_spawnturf_temp.len > 0)
var/turf/simulated/mineral/artifact_turf = pop(artifacts_spawnturf_temp)
artifact_turf.artifact_find = new()
diff --git a/code/modules/surgery/slimes.dm b/code/modules/surgery/slimes.dm
index 05ceed18b1..ad4c413c8e 100644
--- a/code/modules/surgery/slimes.dm
+++ b/code/modules/surgery/slimes.dm
@@ -95,5 +95,6 @@
/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
- user.visible_message("[user]'s hand slips, causing \him to miss the core!", \
+ var/datum/gender/T = gender_datums[user.get_visible_gender()]
+ user.visible_message("[user]'s hand slips, causing [T.him] to miss the core!", \
"Your hand slips, causing you to miss the core!")
\ No newline at end of file
diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm
index d24069ca5f..523b8e1eaf 100644
--- a/code/modules/virus2/effect.dm
+++ b/code/modules/virus2/effect.dm
@@ -121,9 +121,10 @@
stage = 4
badness = 3
activate(var/mob/living/carbon/mob,var/multiplier)
+ var/datum/gender/TM = gender_datums[mob.get_visible_gender()]
mob.suiciding = 30
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
- viewers(mob) << "[mob.name] is holding \his breath. It looks like \he's trying to commit suicide."
+ viewers(mob) << "[mob.name] is holding [TM.his] breath. It looks like [TM.he] [TM.is] trying to commit suicide."
mob.adjustOxyLoss(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss() - mob.getOxyLoss())
mob.updatehealth()
diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm
index df9bdc2920..45ef4e173c 100644
--- a/code/modules/vore/eating/belly_vr.dm
+++ b/code/modules/vore/eating/belly_vr.dm
@@ -365,7 +365,7 @@
items_preserved |= item
else
internal_contents -= item
- owner.nutrition += (digested)
+ owner.nutrition += (5 * digested)
if(isrobot(owner))
var/mob/living/silicon/robot/R = owner
R.cell.charge += (50 * digested)
@@ -489,9 +489,6 @@
return
internal_contents -= content
target.internal_contents += content
- if(content in items_preserved)
- items_preserved -= content
- target.items_preserved += content
if(isliving(content))
var/mob/living/M = content
if(target.inside_flavor)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 416715d0f7..65c76d4c35 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -605,6 +605,7 @@
var/datum/belly/selected = vore_organs[belly]
I.forceMove(src)
selected.internal_contents |= I
+ updateVRPanel()
if(istype(I,/obj/item/device/flashlight/flare) || istype(I,/obj/item/weapon/flame/match) || istype(I,/obj/item/weapon/storage/box/matches))
to_chat(src, "You can taste the flavor of spicy cardboard.")
else if(istype(I,/obj/item/device/flashlight/glowstick))
diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm
index e79957ba28..ae7c203fa3 100644
--- a/code/modules/xenoarcheaology/sampling.dm
+++ b/code/modules/xenoarcheaology/sampling.dm
@@ -70,15 +70,15 @@
artifact_distance = rand()
artifact_id = container.artifact_find.artifact_id
else
- if(master_controller) //Sanity check due to runtimes ~Z
- for(var/turf/simulated/mineral/T in master_controller.artifact_spawning_turfs)
+ if(SSxenoarch) //Sanity check due to runtimes ~Z
+ for(var/turf/simulated/mineral/T in SSxenoarch.artifact_spawning_turfs)
if(T.artifact_find)
var/cur_dist = get_dist(container, T) * 2
if( (artifact_distance < 0 || cur_dist < artifact_distance))
artifact_distance = cur_dist + rand() * 2 - 1
artifact_id = T.artifact_find.artifact_id
else
- master_controller.artifact_spawning_turfs.Remove(T)
+ SSxenoarch.artifact_spawning_turfs.Remove(T)
/obj/item/device/core_sampler
name = "core sampler"
diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm
index 1d79a89449..17412b4a8b 100644
--- a/code/modules/xenoarcheaology/tools/tools.dm
+++ b/code/modules/xenoarcheaology/tools/tools.dm
@@ -57,8 +57,8 @@
var/nearestSimpleTargetDist = -1
var/turf/cur_turf = get_turf(src)
- if(master_controller) //Sanity check due to runtimes ~Z
- for(var/A in master_controller.artifact_spawning_turfs)
+ if(SSxenoarch) //Sanity check due to runtimes ~Z
+ for(var/A in SSxenoarch.artifact_spawning_turfs)
var/turf/simulated/mineral/T = A
if(T.density && T.artifact_find)
if(T.z == cur_turf.z)
@@ -67,9 +67,9 @@
nearestTargetDist = cur_dist + rand() * 2 - 1
nearestTargetId = T.artifact_find.artifact_id
else
- master_controller.artifact_spawning_turfs.Remove(T)
+ SSxenoarch.artifact_spawning_turfs.Remove(T)
- for(var/A in master_controller.digsite_spawning_turfs)
+ for(var/A in SSxenoarch.digsite_spawning_turfs)
var/turf/simulated/mineral/T = A
if(T.density && T.finds && T.finds.len)
if(T.z == cur_turf.z)
@@ -77,7 +77,7 @@
if(nearestSimpleTargetDist < 0 || cur_dist < nearestSimpleTargetDist)
nearestSimpleTargetDist = cur_dist + rand() * 2 - 1
else
- master_controller.digsite_spawning_turfs.Remove(T)
+ SSxenoarch.digsite_spawning_turfs.Remove(T)
if(nearestTargetDist >= 0)
user << "Exotic energy detected on wavelength '[nearestTargetId]' in a radius of [nearestTargetDist]m[nearestSimpleTargetDist > 0 ? "; small anomaly detected in a radius of [nearestSimpleTargetDist]m" : ""]"
diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm
index 675149f8d1..f6fb5c885c 100644
--- a/code/modules/xenobio/items/extracts.dm
+++ b/code/modules/xenobio/items/extracts.dm
@@ -970,6 +970,7 @@
if(S)
new S(get_turf(holder.my_atom))
+ ..()
/datum/chemical_reaction/slime/rainbow_unity
name = "Slime Unity"
diff --git a/html/changelogs/Anewbe - ExplorerGear.yml b/html/changelogs/Anewbe - ExplorerGear.yml
new file mode 100644
index 0000000000..19eba8cbfb
--- /dev/null
+++ b/html/changelogs/Anewbe - ExplorerGear.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Lessens the bomb, bio, and rad protection on the Explorer Suit."
+ - tweak: "Replaces the Hunting Rifle cabinets with a Phase Pistol cabinet. Same general purpose, shoot animals, kill animals. Shoot people, get laughed at."
diff --git a/html/changelogs/Anewbe - Gloves.yml b/html/changelogs/Anewbe - Gloves.yml
new file mode 100644
index 0000000000..ddb365ea94
--- /dev/null
+++ b/html/changelogs/Anewbe - Gloves.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Gloves are generally less protective from shocks."
+ - tweak: "Budget Insulated Gloves will almost always be better than any other non-insulated glove."
diff --git a/html/changelogs/Anewbe - Hyposprays.yml b/html/changelogs/Anewbe - Hyposprays.yml
new file mode 100644
index 0000000000..53749bc731
--- /dev/null
+++ b/html/changelogs/Anewbe - Hyposprays.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Hyposprays and autoinjectors now have a delay on use when the target is conscious and not in Help Intent."
diff --git a/html/changelogs/Anewbe - MechsFall.yml b/html/changelogs/Anewbe - MechsFall.yml
new file mode 100644
index 0000000000..af4d4acedb
--- /dev/null
+++ b/html/changelogs/Anewbe - MechsFall.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "You need a parachute to survive atmospheric reentry, closets, mechs, and other impromptu parachutes will not longer prevent splatting."
diff --git a/html/changelogs/Hubblenaut - airlocks.yml b/html/changelogs/Hubblenaut - airlocks.yml
new file mode 100644
index 0000000000..2091ab6596
--- /dev/null
+++ b/html/changelogs/Hubblenaut - airlocks.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Hubblenaut
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "If a cycling airlock is already near the target pressure, pressing the buttons will toggle the doors instead of making it reenter the cycle process."
diff --git a/html/changelogs/Leshana - vplk-airlocks-cycle-to-ext.yml b/html/changelogs/Leshana - vplk-airlocks-cycle-to-ext.yml
new file mode 100644
index 0000000000..3f59f30fea
--- /dev/null
+++ b/html/changelogs/Leshana - vplk-airlocks-cycle-to-ext.yml
@@ -0,0 +1,4 @@
+author: Leshana and mustafakalash
+delete-after: True
+changes:
+ - rscadd: "A new 'planetary' mode for airlocks which makes them purge the chamber contents to the exterior atmosphere before filling with clean air, and vice versa."
diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi
index f0146ec2cc..95e060cbd5 100644
Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ
diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi
index 9213e418ff..22b85b0a78 100644
Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ
diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi
index 5cf5b9cae7..225958a7db 100644
Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ
diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi
index 743ed24466..5c3bb92b76 100644
Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index e0fa980fb9..cd30b3a8cc 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi
index 6b0397c9e1..54b20e0165 100644
Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ
diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi
index 105bdf4750..ca62243e79 100644
Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 8992f9d2c6..7d15a48d24 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi
index e7de0f84f5..59ffc871b7 100644
Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ
diff --git a/icons/mob/items/lefthand_hats.dmi b/icons/mob/items/lefthand_hats.dmi
index 58572857fc..6be64d7a7d 100644
Binary files a/icons/mob/items/lefthand_hats.dmi and b/icons/mob/items/lefthand_hats.dmi differ
diff --git a/icons/mob/items/lefthand_storage.dmi b/icons/mob/items/lefthand_storage.dmi
index 9cd0cb1d52..c4518a59ec 100644
Binary files a/icons/mob/items/lefthand_storage.dmi and b/icons/mob/items/lefthand_storage.dmi differ
diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi
index 8e4053f8a4..d58dd02379 100644
Binary files a/icons/mob/items/lefthand_suits.dmi and b/icons/mob/items/lefthand_suits.dmi differ
diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi
index 242e2b599e..f2e96a0c69 100644
Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ
diff --git a/icons/mob/items/righthand_hats.dmi b/icons/mob/items/righthand_hats.dmi
index 7d089a8a0f..8bf6d4155d 100644
Binary files a/icons/mob/items/righthand_hats.dmi and b/icons/mob/items/righthand_hats.dmi differ
diff --git a/icons/mob/items/righthand_storage.dmi b/icons/mob/items/righthand_storage.dmi
index e3ecbc1f09..9a34f3b89c 100644
Binary files a/icons/mob/items/righthand_storage.dmi and b/icons/mob/items/righthand_storage.dmi differ
diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi
index 5fe5403304..d0ced6b9c2 100644
Binary files a/icons/mob/items/righthand_suits.dmi and b/icons/mob/items/righthand_suits.dmi differ
diff --git a/icons/mob/light_overlays.dmi b/icons/mob/light_overlays.dmi
index fb942bbce5..9a93faef34 100644
Binary files a/icons/mob/light_overlays.dmi and b/icons/mob/light_overlays.dmi differ
diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi
index a331158939..48df908aef 100644
Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ
diff --git a/icons/mob/species/seromi/back.dmi b/icons/mob/species/seromi/back.dmi
index 597c43e234..d0af48607c 100644
Binary files a/icons/mob/species/seromi/back.dmi and b/icons/mob/species/seromi/back.dmi differ
diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi
index 0316955602..849144c6f3 100644
Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ
diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi
index 31bc6a2890..14f5755ef5 100644
Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ
diff --git a/icons/mob/species/seromi/ties.dmi b/icons/mob/species/seromi/ties.dmi
index 7e076caf44..bd88c2dedd 100644
Binary files a/icons/mob/species/seromi/ties.dmi and b/icons/mob/species/seromi/ties.dmi differ
diff --git a/icons/mob/species/seromi/uniform.dmi b/icons/mob/species/seromi/uniform.dmi
index 53a15f94f4..c11e63db0c 100644
Binary files a/icons/mob/species/seromi/uniform.dmi and b/icons/mob/species/seromi/uniform.dmi differ
diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi
index ab7f712844..0283191265 100644
Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ
diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi
index 60bb13c6e1..39cc76b50f 100644
Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ
diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi
index d3a54865fd..7c9e5022cf 100644
Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ
diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi
index 46fe74d39c..6e33c45b5e 100644
Binary files a/icons/mob/species/vox/uniform.dmi and b/icons/mob/species/vox/uniform.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 8bb300d163..1e4770ea1e 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index d23e81d7bd..fa22bde1c4 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 5261e549f8..a41e567a82 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/mob/uniform_rolled_down.dmi b/icons/mob/uniform_rolled_down.dmi
index e379946851..cad1f2ba97 100644
Binary files a/icons/mob/uniform_rolled_down.dmi and b/icons/mob/uniform_rolled_down.dmi differ
diff --git a/icons/mob/uniform_sleeves_rolled.dmi b/icons/mob/uniform_sleeves_rolled.dmi
index 6f7d959fd6..84496075cc 100644
Binary files a/icons/mob/uniform_sleeves_rolled.dmi and b/icons/mob/uniform_sleeves_rolled.dmi differ
diff --git a/icons/mob/vore.dmi b/icons/mob/vore.dmi
index baa68b7b38..0ffaf0087a 100644
Binary files a/icons/mob/vore.dmi and b/icons/mob/vore.dmi differ
diff --git a/icons/mob/vore_shadekin.dmi b/icons/mob/vore_shadekin.dmi
new file mode 100644
index 0000000000..b32ee965e5
Binary files /dev/null and b/icons/mob/vore_shadekin.dmi differ
diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi
index abcf7c1cf9..9627b2bb6a 100644
Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index b621d05474..e8d3946b34 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi
index cf99daa067..5fd95e85d7 100644
Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ
diff --git a/icons/obj/clothing/backpack.dmi b/icons/obj/clothing/backpack.dmi
index a5b109af2b..e64ac2d3b0 100644
Binary files a/icons/obj/clothing/backpack.dmi and b/icons/obj/clothing/backpack.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index ff20e5913e..2fcbe66574 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/species/seromi/suits.dmi b/icons/obj/clothing/species/seromi/suits.dmi
index 8324d9274d..cd8ee95287 100644
Binary files a/icons/obj/clothing/species/seromi/suits.dmi and b/icons/obj/clothing/species/seromi/suits.dmi differ
diff --git a/icons/obj/clothing/species/seromi/uniform.dmi b/icons/obj/clothing/species/seromi/uniform.dmi
index dbb76626e0..053d839a88 100644
Binary files a/icons/obj/clothing/species/seromi/uniform.dmi and b/icons/obj/clothing/species/seromi/uniform.dmi differ
diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi
index 00a304a197..30d404ac82 100644
Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ
diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi
index a18223677f..d9b3a8ff35 100644
Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ
diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi
index 21e0f8bcd7..5c0f9c3e20 100644
Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 174f820ea0..b8ef0246dc 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi
index 944a4938b4..51fa43389d 100644
Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index eeb8183879..e494bc966c 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/decals_vr.dmi b/icons/obj/decals_vr.dmi
index ddb64f7e24..bacf45990c 100644
Binary files a/icons/obj/decals_vr.dmi and b/icons/obj/decals_vr.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 908d3ade7c..e0e3305d44 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/doors/doormedglass.dmi b/icons/obj/doors/doormedglass.dmi
index 2d86a8ed81..da84aae6a2 100644
Binary files a/icons/obj/doors/doormedglass.dmi and b/icons/obj/doors/doormedglass.dmi differ
diff --git a/icons/obj/flora/snowflora.dmi b/icons/obj/flora/snowflora.dmi
index 11cbf5a505..873763ddd9 100644
Binary files a/icons/obj/flora/snowflora.dmi and b/icons/obj/flora/snowflora.dmi differ
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index d7a107da94..4bb7b955a0 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 684cb25b59..bebe9efbee 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/light_overlays.dmi b/icons/obj/light_overlays.dmi
index c7bb310ce9..d5d6499305 100644
Binary files a/icons/obj/light_overlays.dmi and b/icons/obj/light_overlays.dmi differ
diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi
index c761dacf1e..f79493ec03 100644
Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ
diff --git a/icons/obj/machines/power/fusion.dmi b/icons/obj/machines/power/fusion.dmi
index be236a145e..4d20f04fcd 100644
Binary files a/icons/obj/machines/power/fusion.dmi and b/icons/obj/machines/power/fusion.dmi differ
diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi
index b764be7e73..9928e2fee2 100644
Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ
diff --git a/icons/obj/pda_old.dmi b/icons/obj/pda_old.dmi
index 1799aeab52..fcded39c1e 100644
Binary files a/icons/obj/pda_old.dmi and b/icons/obj/pda_old.dmi differ
diff --git a/icons/obj/pda_slim.dmi b/icons/obj/pda_slim.dmi
index 1e26655175..0e5e8b7ee3 100644
Binary files a/icons/obj/pda_slim.dmi and b/icons/obj/pda_slim.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index c9e19dd40b..fba164799e 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index 3e39c77171..3b88c088e9 100644
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi
index e604b23f3f..20faa74a13 100644
Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ
diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi
index 27052c04bb..6900c7e8b0 100644
Binary files a/icons/obj/vending_vr.dmi and b/icons/obj/vending_vr.dmi differ
diff --git a/maps/southern_cross/items/headset_sc.dm b/maps/southern_cross/items/headset_sc.dm
index d7212210f3..75936ecb01 100644
--- a/maps/southern_cross/items/headset_sc.dm
+++ b/maps/southern_cross/items/headset_sc.dm
@@ -11,6 +11,11 @@
desc = "A bowman headset used by pilots, has access to supply and explorer channels."
icon_state = "pilot_headset_alt"
+/obj/item/device/radio/headset/pilot/alt
+ name = "pilot's bowman headset"
+ desc = "A bowman headset used by pilots, has access to supply and explorer channels."
+ icon_state = "pilot_headset_alt"
+
/obj/item/device/radio/headset/explorer
name = "explorer's headset"
desc = "Headset used by explorers for exploring. Access to the explorer channel."
diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm
index cda86ac00e..5b1e2a0caf 100644
--- a/maps/southern_cross/southern_cross-3.dmm
+++ b/maps/southern_cross/southern_cross-3.dmm
@@ -80,10 +80,10 @@
"bB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"bC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"bD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "mining_airlock_control2"; name = "Mining Access Console"; pixel_x = 26; pixel_y = 26; tag_exterior_door = "mining_airlock_exterior2"; tag_interior_door = "mining_airlock_interior2"},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
-"bE" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_airlock_control2"; name = "Mining Access Button"; pixel_x = 6; pixel_y = 26; req_access = null; req_one_access = list(12,47)},/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_interior2"; locked = 1; name = "Mining Interior Outpost"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
+"bE" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_airlock_control2"; name = "Mining Access Button"; pixel_x = 6; pixel_y = 26; req_access = null; req_one_access = list(12,47,48)},/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_interior2"; locked = 1; name = "Mining Interior Outpost"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
"bF" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
"bG" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
-"bH" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_exterior2"; locked = 1; name = "Mining Exterior Outpost"},/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button/airlock_exterior{master_tag = "mining_airlock_control2"; pixel_y = 24; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
+"bH" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining_airlock_exterior2"; locked = 1; name = "Mining Exterior Outpost"},/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button/airlock_exterior{master_tag = "mining_airlock_control2"; pixel_y = 24; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
"bI" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/security)
"bJ" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/security)
"bK" = (/obj/machinery/door/firedoor/glass,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/security)
@@ -110,8 +110,8 @@
"cf" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
"cg" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
"ch" = (/obj/machinery/deployable/barrier,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
-"ci" = (/obj/machinery/light{dir = 1},/obj/structure/closet/secure_closet/guncabinet/rifle,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
-"cj" = (/obj/structure/closet/secure_closet/guncabinet/rifle,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"ci" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/closet/secure_closet/guncabinet/phase,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"cj" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/structure/closet/secure_closet/guncabinet/phase,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"ck" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/table/standard,/obj/item/weapon/book/codex/corp_regs,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/red/border{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"cl" = (/obj/machinery/status_display,/turf/simulated/wall,/area/surface/outpost/main/gateway)
"cm" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/gateway)
@@ -264,10 +264,10 @@
"fd" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"fe" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"ff" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost)
-"fg" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_exterior"; locked = 1; name = "Mining Exterior Outpost"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = 0; pixel_y = -24; req_access = null; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
+"fg" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_exterior"; locked = 1; name = "Mining Exterior Outpost"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = 0; pixel_y = -24; req_access = null; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
"fh" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
"fi" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/mining_main)
-"fj" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_interior"; locked = 1; name = "Mining Interior Outpost"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = -6; pixel_y = -26; req_access = null; req_one_access = list(12,47)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
+"fj" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "mining1_airlock_interior"; locked = 1; name = "Mining Interior Outpost"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining1_airlock_control"; name = "Mining Access Button"; pixel_x = -6; pixel_y = -26; req_access = null; req_one_access = list(12,47,48)},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/mining_main)
"fk" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "mining1_airlock_control"; name = "Mining Access Console"; pixel_x = -26; pixel_y = -26; tag_exterior_door = "mining1_airlock_exterior"; tag_interior_door = "mining1_airlock_interior"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"fl" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"fm" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
@@ -282,9 +282,9 @@
"fv" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/refinery)
"fw" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/refinery)
"fx" = (/turf/simulated/wall,/area/surface/outpost/main/security)
-"fy" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 10},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"fy" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 10},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"fz" = (/obj/machinery/door/window/northright,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
-"fA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 5},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"fA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 5},/obj/structure/closet/crate/secure/gear{name = "explorer crate"; req_access = list(43)},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/spaceacillin,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"fB" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Gateway Access"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/gateway)
"fC" = (/turf/simulated/wall,/area/surface/outpost/main/first_aid)
"fD" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/blue,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
@@ -364,16 +364,16 @@
"gZ" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/machinery/light,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/item/device/paicard,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"ha" = (/obj/structure/closet/secure_closet/explorer,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"hb" = (/obj/structure/closet/secure_closet/explorer,/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
-"hc" = (/obj/structure/closet/secure_closet/explorer,/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"hc" = (/obj/structure/closet/secure_closet/explorer,/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"hd" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"he" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"hf" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/green/bordercorner,/turf/simulated/floor/tiled,/area/surface/outpost/main)
"hg" = (/obj/machinery/mech_recharger,/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
"hh" = (/obj/structure/table/steel,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
"hi" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
-"hj" = (/obj/machinery/camera/network/main_outpost{c_tag = "MO - SAR Prep"; dir = 2},/obj/effect/landmark/start{name = "Search and Rescue"},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
+"hj" = (/obj/structure/closet/secure_closet/medical_wall/pills{pixel_y = 32},/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"hk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/white/bordercorner2,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = 0; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/iv_drip,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
-"hl" = (/obj/structure/closet/secure_closet/sar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/item/roller/adv{pixel_y = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
+"hl" = (/obj/machinery/camera/network/main_outpost{c_tag = "MO - SAR Prep"; dir = 2},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"hm" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"hn" = (/obj/structure/table/steel,/obj/item/device/gps,/obj/item/device/gps{pixel_x = 3; pixel_y = 3},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"ho" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
@@ -386,7 +386,7 @@
"hv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"hw" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/gen_room)
"hx" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/telecomms)
-"hy" = (/obj/structure/closet/secure_closet/sar,/obj/machinery/light,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/item/roller/adv,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
+"hy" = (/obj/structure/closet/secure_closet/sar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/item/roller/adv{pixel_y = 5},/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"hz" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/teleporter)
"hA" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"hB" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main)
@@ -455,7 +455,7 @@
"iM" = (/obj/machinery/power/terminal,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iN" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
-"iP" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
+"iP" = (/obj/structure/closet/secure_closet/sar,/obj/machinery/light,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/item/roller/adv,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"iQ" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled{pixel_x = 0},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iR" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/meter,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iS" = (/obj/machinery/atmospherics/omni/atmos_filter{tag_east = 2; tag_north = 7; tag_west = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
@@ -475,7 +475,7 @@
"jg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/closet/toolcloset,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"jh" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"ji" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/gen_room)
-"jj" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Mining Atmospherics"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
+"jj" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Mining Outpost Power South"; dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"jk" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"jl" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"jm" = (/turf/simulated/wall/r_wall,/area/surface/outpost/main/gen_room)
@@ -600,14 +600,14 @@
"lB" = (/obj/structure/cable/heavyduty,/obj/machinery/power/terminal{dir = 4},/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
"lC" = (/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Dorms"},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
"lD" = (/turf/simulated/wall,/area/surface/outpost/main/bar)
-"lE" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_alc/full,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lF" = (/obj/machinery/button/remote/blast_door{id = "barout"; name = "Bar Shutters"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lG" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lH" = (/obj/item/weapon/stool,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lI" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lJ" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lK" = (/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"lL" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
+"lE" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
+"lF" = (/obj/structure/table/marble,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lG" = (/obj/structure/table/marble,/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lH" = (/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lI" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lJ" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; operating = 0; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lK" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/frame/extinguisher_cabinet,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"lL" = (/obj/structure/table/marble,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar West"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
"lM" = (/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main/corridor)
"lN" = (/obj/effect/overlay/snow/floor,/obj/machinery/light/small,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main/corridor)
"lO" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/holofloor/wood,/area/surface/outpost/main/gym)
@@ -635,14 +635,14 @@
"mk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
"ml" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
"mm" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
-"mn" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar West"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mp" = (/obj/structure/table/marble,/obj/machinery/cash_register/civilian{dir = 8; icon_state = "register_idle"; tag = "icon-register_idle (WEST)"},/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mq" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mr" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"ms" = (/obj/structure/bed/chair/wood,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mu" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
+"mn" = (/obj/structure/table/marble,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/weapon/stool/padded,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mp" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mr" = (/obj/structure/table,/obj/item/stack/material/wood,/obj/item/stack/material/wood,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"ms" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/item/weapon/stock_parts/motor,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mt" = (/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mu" = (/obj/structure/table/marble,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
"mv" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/surface/outpost/main/corridor)
"mw" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/corridor)
"mx" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main4_airlock_exterior"; locked = 1; name = "Main Outpost Exterior"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "main4_airlock_control"; name = "Main Access Button"; pixel_x = 32; pixel_y = 0; req_access = null},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor)
@@ -666,13 +666,13 @@
"mP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
"mQ" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
"mR" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
-"mS" = (/obj/machinery/light{dir = 8},/obj/machinery/vending/boozeomat{req_access = null},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mT" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mU" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mV" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mW" = (/obj/structure/table/woodentable,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mX" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"mY" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar East"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
+"mS" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mT" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/camera/network/main_outpost{c_tag = "MO - Bar East"; dir = 8},/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mW" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"mY" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
"mZ" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/heavyduty{icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/main/corridor)
"na" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Corridor Access North"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
"nb" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
@@ -693,14 +693,14 @@
"nq" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 1},/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
"nr" = (/obj/structure/sign/electricshock,/turf/simulated/wall,/area/surface/outpost/main/gen_room/smes)
"ns" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "SMES Room"; req_one_access = list(12,47)},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
-"nt" = (/obj/machinery/smartfridge/drinks,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nu" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nv" = (/obj/structure/table/marble,/obj/machinery/door/blast/shutters{dir = 4; id = "barout"; layer = 3.1; name = "Bar Shutters"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nw" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nx" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"ny" = (/obj/structure/bed/chair/wood{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nA" = (/obj/structure/table/woodentable,/obj/machinery/recharger,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
+"nt" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"nu" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32; pixel_y = 0},/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
+"nv" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"nw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"nx" = (/obj/structure/table/standard,/obj/item/device/paicard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
+"ny" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Bar"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
+"nz" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/green/border{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
+"nA" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms)
"nB" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
"nC" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
"nD" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
@@ -709,7 +709,7 @@
"nG" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"nH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"nI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
-"nJ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
+"nJ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms)
"nK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"nL" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"nM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
@@ -723,10 +723,8 @@
"nU" = (/turf/simulated/wall,/area/surface/outpost/main/construction_area)
"nV" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
"nW" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
-"nX" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nY" = (/obj/machinery/door/window/eastright{name = "Bar"; req_access = null; req_one_access = list(25,43,67)},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"nZ" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
-"oa" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/wood,/area/surface/outpost/main/bar)
+"nX" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty{outdoors = 1},/area/surface/outpost/main/dorms)
+"nY" = (/turf/simulated/floor/wood{outdoors = 1},/area/surface/outside/path/plains)
"ob" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main4_airlock_interior"; locked = 1; name = "Main Outpost Interior"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "main4_airlock_control"; name = "Main Access Button"; pixel_x = 32; pixel_y = 6; req_access = null},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/corridor)
"oc" = (/obj/structure/closet/athletic_mixed,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"od" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
@@ -746,7 +744,6 @@
"or" = (/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
"os" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
"ot" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/surface/outpost/main/bar)
-"ou" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass{name = "Bar"},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/bar)
"ov" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
"ow" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
"ox" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/corridor)
@@ -758,7 +755,6 @@
"oD" = (/obj/structure/table/bench/marble,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"oE" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"oF" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
-"oG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"oH" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/main/dorms)
"oI" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"oJ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Dorms Access"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
@@ -800,7 +796,6 @@
"pt" = (/obj/structure/disposalpipe/junction/yjunction{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"pu" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"pv" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
-"pw" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"px" = (/obj/machinery/door/airlock/mining{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "main1_airlock_exterior"; locked = 1; name = "Main Outpost Exterior"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "main1_airlock_control"; name = "Main Access Button"; pixel_x = 0; pixel_y = -24; req_access = null},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"py" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"pz" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
@@ -836,7 +831,6 @@
"qd" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"qe" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
"qf" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/surface/outpost/main/restroom)
-"qg" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/dorms)
"qh" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/surface/outpost/main/dorms)
"qi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
"qj" = (/obj/structure/closet/wardrobe/mixed,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/machinery/light,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/dorms)
@@ -1470,7 +1464,6 @@
"Cn" = (/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora)
"Co" = (/turf/simulated/floor/water/deep,/area/surface/outside/river/indalsalven)
"Cp" = (/turf/simulated/wall,/area/surface/outside/path/plains)
-"Cq" = (/turf/simulated/floor/wood,/area/surface/outside/path/plains)
"Cr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology)
"Cs" = (/obj/structure/disposalpipe/segment,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenobiology)
"Ct" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/window/brigdoor/southright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
@@ -1595,29 +1588,29 @@ aaaeaeaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcuajaj
aaaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucuajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbmbnbnbnbnbnbnbnbmbobpblbqbqbqbqbqbqbqbqbqboajajajaCaCaCaCdYdZcYcYeaebeccEedeeeecEeedbcEcEefegcFehaiaiaiajajajajajajajajajajbJeiejekelemeneoepeqereqeseteuevewexeyezbRajajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucuajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbmbnbnbnbnbnbnbnbmbobpblbqbqbqbqbqbqbqbqbqbobhbhbhaFeAeBaFeCeDeEeFbceGbdeHeIeIeJeKeeeLcEeMeMeMeMeNaiaiaiajajajajajajajajajajbIeOePeQeReSeTbJeUeVeWeXeYbReZfafbfcfdfebQajajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfffgfhfifjfkflfmfnfmfofpfqfrfsftfufvfwcEeMeMeMeMeNaiaiaiaiajajajajajajajbIbIbIfxfxfxfyfzfAfxcLbjfBbjcLfCfDfEfFfCfCfCbQbQajajajajajajajajajajajagagagagagagagaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfGaEfHfIaEfJfKfLbZbdeGbdeHeIfMfNfOeefPcEeMeMeMeMeNaiaiaiaiaiaiaiaiaiaifQbJfRfSbJfTfUfVcJfWgdbJfXfYfZbRgagbgbgchjjrgbgebRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaEaEgfaEggggaEghgigjgkcEgleeeegmeedbcEeMeMeMeMgnaiaiaiaiaiaiaiaiaiaifQgogpgqgrgscJgtelelgugvgwgxgygzgAgBgBgCgbgbgDgEbRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaGgFgGgHgGgIaGgJgKgLgKcEgMgNgOgPgQgRcEgSgSgSgSgTaiaiaiaiaiaiaiaiaiaigUbIgVgWbIgXgZgYhahbhcfxhdhehffChghhhihkhyhlhmhnbQajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmbobhbhfGaEfHfIaEfJfKfLbZbdeGbdeHeIfMfNfOeefPcEeMeMeMeMeNaiaiaiaiaiaiaiaiaiaifQbJfRfSbJfTfUfVcJfWgdbJfXfYfZbRgagbgbgchlhjgbgebRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaEaEgfaEggggaEghgigjgkcEgleeeegmeedbcEeMeMeMeMgnaiaiaiaiaiaiaiaiaiaifQgogpgqgrgscJgtelelgugvgwgxgygzgAgBgBgCjrjrgDgEbRajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucucucuajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboaiaiaiaGgFgGgHgGgIaGgJgKgLgKcEgMgNgOgPgQgRcEgSgSgSgSgTaiaiaiaiaiaiaiaiaiaigUbIgVgWbIgXgZgYhahbhcfxhdhehffChghhhihkiPhyhmhnbQajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucucucuajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbnbnbnbnbnbnbobpblbmbqbqbqbqbqbqbqbmboajaiaiaGaGhohphqhrhshthuhvhuhwaGaGaGaGaGaGaGajajajajakaiaiaiaiaiajajajajajajbIhxhxhxhxhxhzhzhzhzhzhAhehBhChChChChChDhDhDhChCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucucucuajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbnbmbmbmbnbnbnbobpblbmbqbqbqbqbqbqbqbmboajaiaiaiaGhEhFhuhGhHhIhJhKhLhMhNhOhPhPhQaGajajajajajakaiaiaiaiajajajajajajajajhxhRhShThxhUhVhWhXhYhAhehBhChZiaibicidieifighCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajcucucucucuajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajblbnbnbmbmbmbmbmbnbnbobpblbmbmbqbqbqbqbqbmbmboajaiaiaiaGihhFhuiiijikiliminioipipiqirisaGajajajajajakaiaiaiajajajajajajajajajhxitiuivhxiwixixiyhziziAiBhCiCiDiDiDiEiEiDiFhCajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajiGiHiIiIiIiIiIiIiIiIiIiJiGiHiIiIiIiIiIiIiIiIiIiJiGajaiaiaGiKiLiMhGhuiNiOiPiQiRiSiTiUiViWaGajajajajajakaiaiaiajajajajajajajajajhxhxiXhxhxiYiZjajbhzhAhejchCiEiEjdififiEiEiDhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajaGaHajajajaiaiaiajajajaHaGaHajajajaiaiaiajajajaHaGajaiaiaGaGjejfjgjhaGaGjiaGaGjjjkjljlaGaGajajajajajakaiaiaiajajajajajajajajajjmjnjojpjqhzhzEbhzhzjshejthDjuiEjvjwjxiDiEiEhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajiGiHiIiIiIiIiIiIiIiIiIiJiGiHiIiIiIiIiIiIiIiIiIiJiGajaiaiaGiKiLiMhGhuiNiOjjiQiRiSiTiUiViWaGajajajajajakaiaiaiajajajajajajajajajhxhxiXhxhxiYiZjajbhzhAhejchCiEiEjdififiEiEiDhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajaGaHajajajaiaiaiajajajaHaGaHajajajaiaiaiajajajaHaGajaiaiaGaGjejfjgjhaGaGjiaGaGlEjkjljlaGaGajajajajajakaiaiaiajajajajajajajajajjmjnjojpjqhzhzEbhzhzjshejthDjuiEjvjwjxiDiEiEhDajajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajaiaiaiaiajajajajajajajajaiaiaiajajajajajaiaiaiaGaGaGaGjyaGjzjAjzaGaGaGaGaGaGajajajajajajakaiaiaiajajajajajajajajajjmjBjCjDjEjFjGjHjIjJfXhejKhDjLiEjMiEiDiDiEiEhDajjNjNajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajaiaiaiajajajajaiaiaijOjPjPjPjQjPjPjRjSjSjSjSjSjSjSjSjSjSjSjSjSjTjSjSjSjUjUjUjUjUjUjUjUjUjVjWjXjYjZkakbkckbkdkbkekfkgkhkikjkikikkiEiEhDajajjNajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiajajajajajajajajajjmkljCkmjqknkokpkqkrksktkuhDkviDjviEiEiEiEiEhCajajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiakaiaiaiajajajajajajajajajjmkwkxkyjqkzkAkBkCkCjJkDkEhChCkFkGkHkIkJkKkLhCajazajajjNajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajajkMajajajajajajajajajajajajajajajajajajajajakaiaiaiajajajajajajajajajkNkOkOkOkOkOkOkOkNkPkQkRkSkThChDkUhDhDhChChChCajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiajajkVkVkVkVkWkWkXkYkXkZkZkZkZlalakZkZkZkZajajajajajajajajajakaiaiaiajajajajajajajajajkNlblcldlclelflglhliljlkllfXjJlmlnlolplqlrlsltlujNajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVkVlvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLkZkZajajajajajajajajaklMlMlNajajajajajajajajajkNlOlPlPlPlPlQlRlSlTlUlVlWlXlYlZmambmcmdmemfmgmhjNjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVmilylylymjmklAmlmmlDmnmompmqmrmsmsmtmukZajajajajajajajajmvmwmxmymyajajajajajajajajmzmAmBmBmBmBmCmDmzhdmEmFmGfXjJmHmImJmKkCmLmMkCmNajjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVlvlymOlymPlylAmQmRlDmSlKmTmUmVmWmXlKmYkZajajajajajajajajmZnanbncmwajajajajajajajajmzndnendnendndnfkNngfXnhkSninjnknlnknkkCkCkCkCajajajjNjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVnmlynnnonpnqlAnrnslDntnunvnwnxnynynznAkZajajajajajajajajmZnBnCnDmwajajajajajajajajkNnEnFnGnHnIndnJkNkCjJnKkEnjnjnLnMnNnOnPnjajajajazajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajkVnQnRlylynSnTnUnVnWlDnXlKnYlKnZoalKlKnXkZajajajajajajajmymvmwobmymymyajajajajajajajkNocodoeofogndohkOoifXiAojokolnNomonnknknjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajookVkVkVkWkWopoqnUoroslDotlalalDoulDlalaotkZmymymwmwmymwmwmyovowoxoyozmymwmwmymwmwmymykNkOmzoAmzkOmzmzkOoBfXnhkSnkoCnNoDnNoEoFnjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaioGoHoIoJoKoLoMoNoOoPoQoRoSoToUoUoVoWoXoUoYoToUoZpapbpbpcpbpdpbpepfpgphpipjpbpbpkpdpbpboZplpmlipnpopmpppmpqprprpsptnkpunNoDpvnknknjnjnjajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaipwpxpypzpApBorpCpDpEpFpGpHpEpEpIpEpJpEpEpKpEpLpMpNpOpPpPpPpQpPpRpSpTpUpPpPpPpOpPpQpPpVpWgwlXlXpXpYpYpZpYpYpYkbqaqbnkqcnNoDpvnkqdqeqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
-aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiqgooqhqiooqjqkqlorqmqnqoqpqqqrqsorqlqtquqvqwqxqyqzqAqzqBqzqzqCqDqEqFqGqHqzqzqAqIqzqzqzqyqJqKqKqLqKqKqKqKqMfXqNqOqPnkqQqRqSqTqUqVqWqXnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVkVlvlwlxlylzlAlBlClDlFlHlGlHlIlJlHlKkZkZajajajajajajajajaklMlMlNajajajajajajajajajkNlOlPlPlPlPlQlRlSlTlUlVlWlXlYlZmambmcmdmemfmgmhjNjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVmilylylymjmklAmlmmlDlLmomnmqmpmqmqmsmrkZajajajajajajajajmvmwmxmymyajajajajajajajajmzmAmBmBmBmBmCmDmzhdmEmFmGfXjJmHmImJmKkCmLmMkCmNajjNjNajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVlvlymOlymPlylAmQmRlDmtlHmulHmSlHlHlHmTkZajajajajajajajajmZnanbncmwajajajajajajajajmzndnendnendndnfkNngfXnhkSninjnknlnknkkCkCkCkCajajajjNjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajkVnmlynnnonpnqlAnrnslDlHmVmUmXmWmXmXntmYkZajajajajajajajajmZnBnCnDmwajajajajajajajajkNnEnFnGnHnIndnukNkCjJnKkEnjnjnLnMnNnOnPnjajajajazajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajkVnQnRlylynSnTnUnVnWlDlHlHlHlHnvlHlHlHnwkZajajajajajajajmymvmwobmymymyajajajajajajajkNocodoeofogndohkOoifXiAojokolnNomonnknknjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajookVkVkVkWkWopoqnUnxoslDlalalalDnylDlalaotkZmymymwmwmymwmwmyovowoxoyozmymwmwmymwmwmymykNkOmzoAmzkOmzmzkOoBfXnhkSnkoCnNoDnNoEoFnjajajajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainAoHoIoJoKoLoMoNoOoPoQoRoSnzoUoUoVoWoXoUoYoToUoZpapbpbpcpbpdpbpepfpgphpipjpbpbpkpdpbpboZplpmlipnpopmpppmpqprprpsptnkpunNoDpvnknknjnjnjajajajajjNajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainJpxpypzpApBorpCpDpEpFpGpHpEpEpIpEpJpEpEpKpEpLpMpNpOpPpPpPpQpPpRpSpTpUpPpPpPpOpPpQpPpVpWgwlXlXpXpYpYpZpYpYpYkbqaqbnkqcnNoDpvnkqdqeqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
+aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiainXooqhqiooqjqkqlorqmqnqoqpqqqrqsorqlqtquqvqwqxqyqzqAqzqBqzqzqCqDqEqFqGqHqzqzqAqIqzqzqzqyqJqKqKqLqKqKqKqKqMfXqNqOqPnkqQqRqSqTqUqVqWqXnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajooooooooqYqYqlorqYqYqYqYqYqYqYorqlqYqYoooooomymymwmwmymwmwmyqZranCrbrcmymwmwmymwmwmymykCrdrerfrgrhrirjrkfXrlrmrnrorpnNrqrrnkqdrsqfnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiazajoortrurvrwrxryrzrArBqYrCrDrEryrxrFrGrHrIooajajajajajajajmyrJmyrKmwmymyajajajajajajajkCrLrMrMrMrMrMrMrMrMrNrOrPnknknkrQnknknkrRnjnjajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
aaaeajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajayajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiajajoHrSrTrUqYqlrVqYrWrXqYrYrZqYsaqlqYsbscsdoHajajajajajajajajsesfnbncmwajajajajajajajajajrLsgshsisisjskslsmsnsospsqsrssstsusvswsxrLajajajajajajajajajaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaa
@@ -1662,15 +1655,15 @@ AOAPaetRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtR
AOAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiaiajajajajajajajajajajajajajwYBoBpyXBqBryjzaykykykykykzazUBsBtyXBpBuxiBvBwyCAqyCBxByBzAJyCxGBABBBCyCxCxGBDBExCususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
AOAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiaiajajajajajajajajajajajajajajajwYwYwYwYwYEaykyjykyjyjyjykyjAYEcwYwYwYwYxixixiBHBIyCBJAsBKBLBMyPBNyNBOBPytBQxixixiususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
AOAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaiaiaiajajajajajajajajajajajajajajajajajajwYBRyjykBSBTBUBVEdBXBUBYBZCaCbCcCdCeCfCfxiCgChCiCjyCyyAJCkxGyzyCyCClCmCnxiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlBmBnutututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-AOCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCpCqCqCpajajajajajajajajajajajajajajajajajajwYwYCryjwYCsCtCuAeCvCwCxwYyjCywYwYCfCfbpxixiCzCAytxCxCCBytCCxCxCytCmCDxixiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-AOAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCECqCqCFAPAPAPajajajajajajajajajajajajajajajajwYwYCGwYCHzrzrAezrzrCHwYCIwYwYCJbhbhbpCKxixiCLytCMxGCNCOCPCQxGBQCnxixiusususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-AOAPAPAPAPCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPCECqCqCRCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajwYwYwYCSzrzrAezrAQCTwYwYwYajCKCKCKCKCKajxixixiCUxGCVAzCWxGCXxixixiususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlBmBnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeAPAPAPCoCoCoAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCYCqCqCRCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajajwYCZzrzrAezrzrDawYajajajajajajajajajajajxixGzQzQDbzQzQDcxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeAPAPAPAPCoCoAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCYCqCqCRAPAPCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoAPAPAPwYDdDdDdwYwYwYwYwYajajajajajajajajajajusxixCxDxCxixCxDxCxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaetRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoCoCoCECqCqCFAPAPAPAPAPAPAPAPAPCoCoCoAPCoCoCoCoCoCoCoAPAPAPajajajajajajajajajajajajajusususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaetRtRtRtRAPAPAPAPAPAPAPAPAPCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCoAPAPAPCECqCqCFAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPajajajajajajajususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaetRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPCECqCqCFAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaetRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPtRCpCqCqCptRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+AOCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCpnYnYCpajajajajajajajajajajajajajajajajajajwYwYCryjwYCsCtCuAeCvCwCxwYyjCywYwYCfCfbpxixiCzCAytxCxCCBytCCxCxCytCmCDxixiususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+AOAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajCEnYnYCFAPAPAPajajajajajajajajajajajajajajajajwYwYCGwYCHzrzrAezrzrCHwYCIwYwYCJbhbhbpCKxixiCLytCMxGCNCOCPCQxGBQCnxixiusususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+AOAPAPAPAPCoAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPCEnYnYCRCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajwYwYwYCSzrzrAezrAQCTwYwYwYajCKCKCKCKCKajxixixiCUxGCVAzCWxGCXxixixiususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlBmBnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeAPAPAPCoCoCoAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCYnYnYCRCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPajajwYCZzrzrAezrzrDawYajajajajajajajajajajajxixGzQzQDbzQzQDcxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeAPAPAPAPCoCoAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCYnYnYCRAPAPCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoCoAPAPAPwYDdDdDdwYwYwYwYwYajajajajajajajajajajusxixCxDxCxixCxDxCxiususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaetRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoCoCoCEnYnYCFAPAPAPAPAPAPAPAPAPCoCoCoAPCoCoCoCoCoCoCoAPAPAPajajajajajajajajajajajajajusususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaetRtRtRtRAPAPAPAPAPAPAPAPAPCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPCoCoAPAPAPCEnYnYCFAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPajajajajajajajususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaetRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPCEnYnYCFAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaetRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPAPtRCpnYnYCptRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPAPAPAPAPAPususususususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPAPAPAPAPAPAPAPtRtRtRtRtRaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoCoCoCoAPAPAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvJutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoCoAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPCoCoAPAPAPAPAPtRtRtRtRtRtRtRaiaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkAPAPAPAPAPAPAPCoCoCoCoCoCoCoAPAPAPAPAPAPusususususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaetRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRAPAPAPAPAPAPCoCoAPAPAPAPAPAPtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRayajajajajajajajajajajajajajajajajajajajajajajajajajAPAPAPAPCoCoAPAPAPAPtRtRtRtRtRtRtRtRtRtRaiaitRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkAPAPAPAPAPAPAPAPCoCoCoCoAPAPAPAPAPAPususususususususususususususususususususususususususususususususususvjvkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
@@ -1696,8 +1689,8 @@ aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtR
aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRDgtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkAPAPAPCoCoAPAPAPvkvkvkvkvkvkaiaiaiaiaiaiaiaiaitCaiaiaivkvkvkvkvkvkvkvkvkvkaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRtRtRtRtRtRtRtRtRtRtRDgtRtRtRtRtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaivkvkvkvkaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkAPAPCoCoCoAPAPvkvkvkvkaiaiaiaiaiaivkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhvkaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvktRtRtRDgtRtRtRtRtRtRtRtRtRvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkCpDiDiDjDjDjDiDiDkCpaiaiaiaivkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhaiaivIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkaiaiaiCqCqCqCqCqCqCqCqCqCqaiaivkvkvkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUwUwUututututututututwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaiCqCqCqCqCqCqCqCqCqCqaivkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUututututututututututwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkaiaiainYnYnYnYnYnYnYnYnYnYaiaivkvkvkvkvkvkvkvkvkvkDevIDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUwUwUututututututututwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaiaiainYnYnYnYnYnYnYnYnYnYaivkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUututututututututututwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkCpDlDmDmDnDnDnDmDmCpvkvkvkvkvkvkvkvkvkvkvkvkDevkDhDhDhDhDhDhDhDhDhDhDhvIvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUwUutututDoDpDpDpvnututututwUwUwUwUwUwUwUwUuu
aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaiaivkvkvkvkvkvkvkAPAPAPCoCoAPAPvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvIvIvIvIvIvkvkvkvIvIvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnututututwUwUwUwUututDoDqvlvlvlvmDpvnututututwUwUwUwUwUwUuu
aaaeaeaevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaiaivkvkvkvkvkvkvkvkvkvkAPAPAPCoAPAPvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvJututututwUwUwUwUututDrvlvIvIvlvlvlvmDpvnututututwUwUwUwUuu
@@ -1725,12 +1718,12 @@ aaaeaevIvIvIvIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDx
aaaeaevIvIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIAPAPAPAPAPAPDsDuvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaevIvIvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIAPAPAPAPutDtDuvlvlvlvlBmBnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeDyDyvIvIvIvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlAPAPAPututDtDsDsDuvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDzvkDzvkCpCqCqCpvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlAPAPutututututDtDsBnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyDyDyvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvmDpDpvnutututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyDyDyDyDyvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvmvnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvmDpvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDACqCqDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
-aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDzvkDzvkCpCqCqCpvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyvIvIvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDzvkDzvkCpnYnYCpvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlAPAPutututututDtDsBnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyDyDyvIvIvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvlvlvlvlvmDpDpvnutututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyDyDyDyDyvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvmvnututututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvmDpvnututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDAnYnYDBDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvJututututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
+aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvDvDvDzvkDzvkCpnYnYCpvkvkvkDvDvDvDvDvDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvmvnutututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvmvnututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvIvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
aaaeaeaeDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyDyvIvIDxDxDxDxvIvIvIDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxvIvIvIvIvIvIvIvIvIvIvIvIDyvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDvDvDvDvDvDvDvDvvkvkvkvkvkvkvkvkvkvkaiaiaivkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkDevkvkvkvkvkvkvkvkvkvkvkvkvIvIvIvIvIvIvIvlvlvlvlvlvlvlvlvlvlvlvlvJututututututwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUwUuu
diff --git a/maps/southern_cross/southern_cross_jobs.dm b/maps/southern_cross/southern_cross_jobs.dm
index 0daeaa97f6..09b380aa9a 100644
--- a/maps/southern_cross/southern_cross_jobs.dm
+++ b/maps/southern_cross/southern_cross_jobs.dm
@@ -100,9 +100,11 @@ var/const/access_explorer = 43
access = list(access_pilot, access_explorer, access_research) //VOREStation Edit
minimal_access = list(access_pilot, access_explorer, access_research) //VOREStation Edit
outfit_type = /decl/hierarchy/outfit/job/explorer2
+/*
alt_titles = list(
"Explorer Technician" = /decl/hierarchy/outfit/job/explorer2/technician,
"Explorer Medic" = /decl/hierarchy/outfit/job/explorer2/medic)
+*/
/datum/job/sar
title = "Search and Rescue"
diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm
index 934b0d8b3d..2c9e8afd15 100644
--- a/maps/southern_cross/structures/closets/misc.dm
+++ b/maps/southern_cross/structures/closets/misc.dm
@@ -26,6 +26,18 @@
new /obj/item/weapon/gun/projectile/shotgun/pump/rifle(src)
return
+/obj/structure/closet/secure_closet/guncabinet/phase
+ name = "phase pistol cabinet"
+ req_one_access = list(access_explorer,access_brig)
+
+/obj/structure/closet/secure_closet/guncabinet/phase/New()
+ ..()
+ new /obj/item/weapon/gun/energy/phasegun(src)
+ new /obj/item/weapon/gun/energy/phasegun(src)
+ // One spare cell per gun
+ new /obj/item/weapon/cell/device/weapon(src)
+ new /obj/item/weapon/cell/device/weapon(src)
+
//Explorer Lockers
/obj/structure/closet/secure_closet/explorer
@@ -108,6 +120,7 @@
new /obj/item/taperoll/medical(src)
new /obj/item/device/gps(src)
new /obj/item/device/geiger(src)
+ new /obj/item/bodybag/cryobag(src)
return
//Pilot Locker
diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
index a12f799868..9fac74ac0e 100644
--- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
+++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm
@@ -3,37 +3,38 @@
"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/CaveTrench)
"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
"e" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CaveTrench)
-"f" = (/turf/simulated/floor/water,/area/submap/CaveTrench)
-"g" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"h" = (/mob/living/simple_animal/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water,/area/submap/CaveTrench)
+"f" = (/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
+"g" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"h" = (/mob/living/simple_animal/fish/trout{faction = "malf_drone"},/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
"i" = (/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
"j" = (/turf/simulated/wall,/area/submap/CaveTrench)
"k" = (/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"l" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water,/area/submap/CaveTrench)
+"l" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water{outdoors = 0},/area/submap/CaveTrench)
"m" = (/turf/simulated/wall/wood,/area/submap/CaveTrench)
-"n" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"o" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"p" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"q" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"r" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"s" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; name = "Note"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"t" = (/obj/structure/table/steel,/obj/item/robot_parts/robot_component/actuator,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"u" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"v" = (/obj/structure/simple_door/wood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"w" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"x" = (/obj/structure/table/steel,/obj/item/device/robotanalyzer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"y" = (/obj/structure/table/steel,/obj/item/weapon/storage/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"z" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"A" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"B" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
-"C" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"D" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"E" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"F" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
-"G" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"H" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
-"I" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
-"J" = (/obj/machinery/drone_fabricator,/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
+"n" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"o" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lantern,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"p" = (/obj/structure/table/woodentable,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"q" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"r" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"s" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"t" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; name = "Note"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"u" = (/obj/structure/table/steel,/obj/item/robot_parts/robot_component/actuator,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"v" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"w" = (/obj/structure/simple_door/wood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"x" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"y" = (/obj/structure/table/steel,/obj/item/device/robotanalyzer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"z" = (/obj/structure/table/steel,/obj/item/weapon/storage/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"A" = (/obj/structure/table/bench/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"B" = (/obj/effect/decal/remains,/obj/item/clothing/under/rank/miner,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"C" = (/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
+"D" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"E" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"F" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"G" = (/obj/item/weapon/storage/box/shotgunammo,/turf/simulated/floor/holofloor/wood,/area/submap/CaveTrench)
+"H" = (/obj/structure/table/steel,/obj/item/robot_parts/l_leg,/obj/item/robot_parts/head,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"I" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CaveTrench)
+"J" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
+"K" = (/obj/machinery/drone_fabricator,/turf/simulated/shuttle/plating,/area/submap/CaveTrench)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -51,9 +52,9 @@ abeeeeeeeeffkkfffeeeeeeeeeeeddddddeeeedddddda
abbbdddddeeekkeeeddddddddddddddddddddddddddca
abbcdddddddjkkjddddddddddddddddddddddddddddca
abcccdddddddddddddddmmmmmmmmddddddddddddidbca
-abbbcidddddddgdddddnmopkkqkmmdddddddddddbbbca
-abbbcccccrstudddddddvkkkqwqmmdddddddddddbbbba
-abbbbbbccccxyzdABBddmCDEkqFmmdddddddccccbbbba
-abbbbbbbccccGHuIJBBdmmmmmmmmdddddccccccbcbbba
+abbbcidddddddndddddompqkkrkmmdddddddddddbbbca
+abbbcccccstuvdddddddwkkkrxrmmdddddddddddbbbba
+abbbbbbccccyzAdBCCddmDEFkrGmmdddddddccccbbbba
+abbbbbbbccccHIvJKCCdmmmmmmmmdddddccccccbcbbba
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/submaps/surface_submaps/mountains/Rockb1.dmm b/maps/submaps/surface_submaps/mountains/Rockb1.dmm
index a94614f3a8..fb80ee173f 100644
--- a/maps/submaps/surface_submaps/mountains/Rockb1.dmm
+++ b/maps/submaps/surface_submaps/mountains/Rockb1.dmm
@@ -24,7 +24,7 @@
"x" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"y" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"z" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockb1)
-"A" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockb1)
+"A" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"B" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"C" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"D" = (/obj/machinery/power/apc{operating = 0; pixel_x = 31},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockb1)
diff --git a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
index aa331159b7..37b3484d14 100644
--- a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm
@@ -9,106 +9,143 @@
"ai" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown)
"aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown)
"ak" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown)
-"al" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"am" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown)
-"an" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/template_noop,/area/submap/Blackshuttledown)
-"ao" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"ap" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aq" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"ar" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"as" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"at" = (/obj/machinery/organ_printer/flesh,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"au" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown)
-"av" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"ax" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"ay" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"az" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown)
-"aA" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown)
-"aB" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aC" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aD" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual."; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aE" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aF" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aG" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aH" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aI" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aJ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aK" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aM" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aN" = (/obj/machinery/door/airlock/security{locked = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aO" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aP" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown)
-"aQ" = (/obj/machinery/computer/communications,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aR" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aS" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aT" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aU" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aV" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
-"aX" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"aY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
-"aZ" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"ba" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
-"bc" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 4; name = "Unknown APC"; pixel_x = 24},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown)
-"bd" = (/obj/machinery/computer/area_atmos,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"be" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bf" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bg" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bh" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bi" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bj" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bk" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bl" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bm" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bn" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bo" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bp" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bq" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"br" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bs" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bt" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bu" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bv" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
-"bw" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown)
-"bx" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown)
+"al" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"; tag = "icon-dark0"},/area/submap/Blackshuttledown)
+"am" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/template_noop,/area/submap/Blackshuttledown)
+"an" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ao" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ap" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aq" = (/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"ar" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"as" = (/obj/machinery/organ_printer/flesh,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"at" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown)
+"au" = (/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"av" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"aw" = (/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ax" = (/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ay" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"az" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aA" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aB" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown)
+"aC" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"; tag = "icon-dark6"},/area/submap/Blackshuttledown)
+"aD" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"aE" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"aF" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aG" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aH" = (/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aI" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aK" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor/full,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aL" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"aM" = (/obj/effect/floor_decal/borderfloor/corner,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aN" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aO" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aP" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aQ" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aR" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aS" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aT" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aV" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aW" = (/obj/machinery/door/airlock/security{locked = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"aX" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown)
+"aY" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"; tag = "icon-dark10"},/area/submap/Blackshuttledown)
+"aZ" = (/obj/machinery/computer/communications,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ba" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bb" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bc" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bd" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"be" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bf" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bg" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bh" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bi" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
+"bk" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bm" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bn" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bo" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bp" = (/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
+"br" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bs" = (/obj/effect/floor_decal/corner/grey,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bt" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bu" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bv" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bw" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bx" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"by" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown)
+"bA" = (/obj/machinery/power/apc{dir = 8; name = "BSD APC"; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bB" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bC" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bD" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bE" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bF" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bG" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bH" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bI" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bJ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bK" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bL" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown)
+"bM" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bN" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bO" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"bP" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bQ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bR" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bS" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
+"bT" = (/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
+"bU" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"bV" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"bW" = (/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bX" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"bY" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
+"bZ" = (/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"ca" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown)
+"cb" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown)
+"cc" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"cd" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ce" = (/obj/structure/table/woodentable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"cf" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"cg" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown)
+"ch" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"; tag = "icon-dark5"},/area/submap/Blackshuttledown)
+"ci" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"; tag = "icon-dark9"},/area/submap/Blackshuttledown)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaabababababacababababababababadadabacabababababacabababababababababaa
aaababababababaeabababababababadadababababababababababababadafababacaa
-aaabababababababababababababadadababababababababababaeababadadabababaa
+aaabababababababababababababadadabababafabababafababaeababadadabababaa
aaababafabadadadababababafababababababababababababababababadadabababaa
aaabababababadadadabacababababagagagagagagabababababacabafabadabababaa
-aaababababababadadababababababagahabababagabababababababababababababaa
+aaababababababadadabafababababagahabababagabababababababababababababaa
aaabababababababaiajajajakababagabababahagabababafaiajajajajakabababaa
-aaabababababababajajajajajajajajajalalajajajajajajajajajajajamanababaa
-aaababababafababajajajajajajaoapajaqarajaqaqasaqatajajajajajamanababaa
-aaabababababababauajajaqavajaqaqajawawajaqaxaqaqaqaqayajajazababababaa
-aaabababababababaAajajaBaCajaqaqaqaqaqajaqaqaqaqaDaqaEajazabababababaa
-aaabafababababaAajaFajaqaFajaqaqaqaqaEajaGaHaqaqaIaJaKajababababafabaa
-aaabababababaAajaLaMajaNajajaqaqajajajajajajaOajajajajajaPabababababaa
-aaabababababajaQaqaqajaqaqaqaqaqajaRaSaqasaqaTaqajaUaUaVajaPababababaa
-aaabababababaWaFaqaqajaLaqaqaqaEajaqaqaXaXaXaqaqajaFaqaqaqamanabababaa
-aaabababababaYaFaqaqaOaqaqaqaqaqaOaqaqaZaFaFaqaqbaaqaqaqaqamanabababaa
-aaabababababaYaFaqaqaOaqaqaqaqaqaOaqaqaFaFaFaqaqbaaqaqaqaqamanabababaa
-aaabababababbbaFaqaqajaLaqaqaqaEajaqaqaXaXaXaqaqbcaqaqaqaTamanabababaa
-aaabababababajbdaqaTajaqaqaqaqaqajbebfaqbgaTaqaqajbhbibjajazababababaa
-aaabababababauajaLbkajaNajajaqaqajajajajajajaOajajajajajazabababababaa
-aaababababababauajaFajaqblajaqaqaqaqaEajbmaqaqaqaqbaaqajababababababaa
-aaabafabababababauajajbnboajaqaqaqaqaqajbpaqbmaqbmajarajaPabafabababaa
-aaabababababababaAajajbqbrajaqaTajawawajbmaqbmaqbmajbsajajaPababababaa
-aaabababababababajajajajajajbtapajaqarajbmaqbuaqbvajajajajamanabababaa
-aaabababababababajajajajajajajajajalalajajajajajajajajajajamanabababaa
-aaababafababababbwajajajbxababagahabababagabababbwajajajajbxababababaa
-aaabababadabababababafababababagabababahagababababafabababadadadababaa
-aaababadadabacababababababababagagagagagagababababacababadadadadababaa
+aaabababababababajajajajajajajajajababajajajajajajajajajajajalamababaa
+aaababababafababajajajajajajanaoajapapajaqaqaraqasajajajajajalamababaa
+aaabababababababatajajauavajawaxajayayajaqazaqaqaqaqaAajajaBababababaa
+aaabababababababaCajajaDaEajawaFaGaGaHajaqaqaqaqaIaqaJajaBabababababaa
+aaabafababababaCajaKajauaLajawaMaNaNaOajaPaQaqaqaRaSaTajababababafabaa
+aaabababababaCajaUaVajaWajajawaxajajajajajajaXajajajajajaYabababababaa
+aaabababababajaZbaaxajbbaGaGbaaxajbcbdbebfbebgbeajbhbhbiajaYababababaa
+aaabababababbjbkbeaxajblbebebebmajbebebnbnbnbebeajbobebebpalamabababaa
+aaabababababbqbkbeaFbrbabebsbebebtbebebubvbvbebebwbebebebpalamabababaa
+aaabababababbqbkbeaMbxbybebebebebtbebebvbvbvbebebwbebebebpalamabababaa
+aaabababababbzbkbeaxajblbebebebmajbebebnbnbnbebeajbAbebebBalamabababaa
+aaabababababajbCbybDajbEaNaNbybFajbGbHbebIbgbebeajbJbKbLajaBababababaa
+aaabababababatajbMbNajaWajajawaxajajajajajajbtajajajajajaBabababababaa
+aaababababababatajaKajaubOajawbPaGaGbQajbRbebebebebSbTajababababababaa
+aaabafabababababatajajbUbVajawaMaNaNbWajbXbebRbebRajbYajaYabafabababaa
+aaabababababababaCajajbZcaajawbDajayayajbRbebRbebRajcbajajaYababababaa
+aaabababababababajajajajajajcccdajapapajbRcecfcecgajajajajalamabababaa
+aaabababababababajajajajajajajajajababajajajajajajajajajajalamabababaa
+aaababafababababchajajajciababagahabababagabababchajajajajciababababaa
+aaabababadabababababafababababagabababahagababafabafabababadadadababaa
+aaababadadabacababababafabababagagagagagagababababacababadadadadababaa
aaabadadadabababababababaeababababababababababadadabababadadadadababaa
aaababadadababacabadababababababababababababadadadababababadadabababaa
-aaabababababababadadafababababababababacabadadadafabababababababababaa
-aaabababafababadadadababababababababababadadadadabababababababafababaa
+aaabababababababadadafabababafababababacabadadadafabababababababababaa
+aaabababafababadadadababababababababafabadadadadabababababababafababaa
aaabababababababadadabacabababababababababababadaeabacafababababababaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/submaps/surface_submaps/wilderness/CaveS.dmm b/maps/submaps/surface_submaps/wilderness/CaveS.dmm
index 022e6baaba..36d0d00ca5 100644
--- a/maps/submaps/surface_submaps/wilderness/CaveS.dmm
+++ b/maps/submaps/surface_submaps/wilderness/CaveS.dmm
@@ -20,7 +20,7 @@
"t" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS)
"u" = (/turf/simulated/floor,/area/submap/CaveS)
"v" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/toolbox,/obj/random/toolbox,/turf/simulated/floor,/area/submap/CaveS)
-"w" = (/obj/structure/loot_pile/surface,/turf/simulated/floor,/area/submap/CaveS)
+"w" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor,/area/submap/CaveS)
"x" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/submap/CaveS)
"y" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/submap/CaveS)
"z" = (/turf/simulated/wall,/area/submap/CaveS)
@@ -31,6 +31,7 @@
"E" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/submap/CaveS)
"F" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/submap/CaveS)
"G" = (/obj/machinery/computer/communications,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/submap/CaveS)
+"H" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/floor,/area/submap/CaveS)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -67,7 +68,7 @@ abdddrrrrrffmddddddfffgdffuyzzAfffdddbba
abdddddtrffddddddgffffddffuBzzCffddddbba
abdddddddrgddddddDffffddffuEFGuuddddbbba
abbddddddddddddddfffffdddffuuuudddddbbba
-abbdddddddddddddddfgdddddfffwudddddbbbba
+abbdddddddddddddddfgdddddfffuHdddddbbbba
abbdddddddddddddddddddddddmffddddbbbbbba
abbbdddddddddddddddddddddddddddbbbbbbbba
abbbddddbbbbdddddddbbdddddddddbbbbbbbbba
diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm
index 805450e539..d18916efc0 100644
--- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm
+++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm
@@ -3,127 +3,124 @@
"ac" = (/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP)
"ad" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
"ae" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/DoomP)
-"af" = (/turf/template_noop,/area/space)
-"ag" = (/turf/simulated/floor/water,/area/submap/DoomP)
-"ah" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP)
-"ai" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"aj" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"ak" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"al" = (/turf/simulated/floor/water/deep,/area/submap/DoomP)
-"am" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"an" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"ao" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
-"ap" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/plating,/area/submap/DoomP)
-"aq" = (/turf/simulated/wall/r_wall,/area/submap/DoomP)
-"ar" = (/turf/simulated/floor/plating,/area/submap/DoomP)
-"as" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/submap/DoomP)
-"at" = (/turf/simulated/floor/tiled,/area/submap/DoomP)
-"au" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"av" = (/obj/structure/bed/chair,/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"ax" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"ay" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"az" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aA" = (/obj/machinery/power/apc{dir = 1; name = "PAPC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aB" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aC" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aD" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aE" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aF" = (/obj/structure/lattice,/obj/machinery/porta_turret/stationary,/turf/simulated/floor/plating,/area/submap/DoomP)
-"aG" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP)
-"aH" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aI" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aJ" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aO" = (/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aP" = (/obj/structure/lattice,/turf/simulated/floor/water,/area/submap/DoomP)
-"aQ" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aR" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aS" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aT" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aU" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aV" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aW" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/spy,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aX" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/smokes,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aY" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"aZ" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"ba" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser/mounted,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/contender,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bc" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bd" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"be" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bf" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bg" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bh" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bi" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bj" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
-"bk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/DoomP)
-"bl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
-"bm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
-"bn" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"af" = (/turf/simulated/floor/water,/area/submap/DoomP)
+"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP)
+"ah" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"ai" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"aj" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"ak" = (/turf/simulated/floor/water/deep,/area/submap/DoomP)
+"al" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"am" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"an" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
+"ao" = (/obj/machinery/porta_turret,/turf/simulated/floor/plating,/area/submap/DoomP)
+"ap" = (/turf/simulated/wall/r_wall,/area/submap/DoomP)
+"aq" = (/turf/simulated/floor/plating,/area/submap/DoomP)
+"ar" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/submap/DoomP)
+"as" = (/turf/simulated/floor/tiled,/area/submap/DoomP)
+"at" = (/obj/structure/bed/chair,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"au" = (/obj/structure/bed/chair,/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"av" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aw" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"ax" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"ay" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"az" = (/obj/machinery/power/apc{dir = 1; name = "PAPC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aA" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aB" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aC" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aD" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aE" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP)
+"aF" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate/ranged{desc = "Even less friendly than he looks."; speak = list("Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Anyone else smell that?")},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aG" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aH" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aI" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aJ" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 32; d2 = 8; icon_state = "32-8"},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aK" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aL" = (/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aM" = (/obj/structure/lattice,/turf/simulated/floor/water,/area/submap/DoomP)
+"aN" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aO" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aP" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aQ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aR" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aS" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aT" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/spy,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aU" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/smokes,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aV" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aW" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aX" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser/mounted,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aY" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/contender,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"aZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"ba" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bb" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bc" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bd" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"be" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bf" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bg" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP)
+"bh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/DoomP)
+"bi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
+"bj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP)
+"bk" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaabababababababababababababababababababababababababababababababababababacacacacacacacacabababababababadadadabababaeabaf
-aaaeabababababababababababababababababababababababababababababababababacacagagagagagagacacacacababacadadadadadacacacabaf
-aaababacacacacacacacabababababababahababababacacacacacacacacababacacacacagagagagagagagagagagacacacacadadaiadacagagacabaf
-aaabacacagagagagagacacacacacacababaeabacacacacagagagagacacacacacagagagagagagagagagagagagagacacadadadadadacacacagagacabaf
-aaabacagagagagagagagagagagagacacacacacacagagagagagagagagagagagagagagagagagagagagagagagagacacadajadadakacacagagagagacacaf
-aaabacagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagacacacadadadadadadacagagagagagagacaf
-aaabacagagagagalalalalalalagagagagagagagagagagagagagalalalalalalalagagagagagagagagacacadakadadaiadadadacagagagagagagacaf
-aaabacagagagagagalalalalalagagagagagagagagagalalalalalalalalalalalalalalagagagagagacadaiadadadadadadacacagagagagagagacaf
-aaabacacagagagagagalalalalagagagagagagagagagalalalalalalalalalalalalalagagagagagacacamadadadadadaiacacagagagagagagagacaf
-aaababacagagagagagagalalalalalagagagalalalalalalalalalalalalalalalalalalalalalagagacacadadadadadacacagagagagagagagagacaf
-aaababacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagagacadadadajadacacagagagagagagagacacaf
-aaababacacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacacadaiadadacacagagagagagagagagacabaf
-aaabababacagagagagagagagalalalalalalalalalalalalagagalalalalalalalalalagagagagagagacacadadadadacagagagagagagagagagacabaf
-aaabababacacagagagagagagagalalalalalalalalalalagagagagalalalalalalalalalagagagagagacacadadamacacagagagagagagagacacacabaf
-aaababababacagagagagagagalalalalalalalalalagagagagagagagagagagagagagagagagagagacacacadadadadacagagagagalagagagacacababaf
-aaababababacacagagagagagagalalalalalalagagagagagagagagagagagagagagagagagagagacacadadadadadacacagagagalalagagagagacababaf
-aaababababacacagagagagagalalalalalagagagagagagagagagagagagagagagagagagagagacacadadadadacacacagagagagalalalagagagacacabaf
-aaababababaeacagagagagalalalalalagagagagagagagagagagagagagagagagagagagagacacadadadacacacagagagagagagalalalagagagagacabaf
-aaababababacacagagalalalalalalalalagagagagagagagagagacacacacacacacagagacacadadacacacagagagagagagagagalalalagagagagacabaf
-aaababababacagagagalalalalalalalalalalagagagagagacacacadadadadadacacacacadadacacagagagagagagagalagalalalagagagagagacabaf
-aaabababacacagagagagalalalalalalalagagagagagagacacadadanadadadadadadadadadadacagagagagagagagagalalalalalagagagagagacabaf
-aaabababacagagagagagagalalalalalagagagagagagacacadadadadadadanadadadadadadadacagagagagagagagalalalalalalagagagagacacabaf
-aaabababacagagagagagagalalalalalagagagagagacacadadadadadadadadadadadadadadacacagagagagagagagalalalalalalalalagagacacabaf
-aaabababacagagagagagagagalalalalagagagagacacadadadadadadadadadadadadadadadadacacagagagagagagalalalalalalalalagagagacabaf
-aaabababacagagagagagagagalalalagagagagagacadadadadadadadadadadadadadadadadadadacacagagagagagagalalalalalalagagagagacabaf
-aaabababacagagagagagagagalalalalalagagagacadadadadadadadaoadadadadadaoadadadadadacacagagagagagagalalalalagagagagagacabaf
-aaabababacagagagagagagagalalalalalagagagacadadapadadapadaqaqarararaqaqadapadadapadacagagagagagagalalalalagagagagagacabaf
-aaabababacagagagagagagagalalalalalalagagacaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqagagagagagalalalalagagagagacacabaf
-aaabababacacagagagagagagalalalalalalagagacaqatauatavawavataxaqayaqazazazazaAaBaCaDaEaqagagagagagalalalalagagagagacacabaf
-aaabababacacacagagagagalalalalalalalagaFaGaqaHaDaIaDaDaDataJaqataqaKaLaMaMaNatataOataqaPaFagagagalalalagagagagagagacabaf
-aaabababababacacagagagalalalalalalalagagagaqayaDaDaDaDaDataQaqaRaqaqaqaqaqaqaSaqaqaqaqagagagagagalalalagagagagagagacabaf
-aaababababababacagagagalalalalalalalalagagaqatatataOatatatataTatatawatatatatatawatataqagagagagagalalalagagagagagagagacaf
-aaabababahabababacagagalalalalalalalalaFaPaqaUaqaqaqaqaqaqaqaqaqaqaqaqaqaqaVaqaqaqaqaqaPaFagagagalalalagagagagagagagacaf
-aaababababababacacagagagalalalalalalalalagaqataDaWaXaYaZbabbaqbcaDbdbebdbfataVawaVbgaqagagagagagalalalagagagagagagagacaf
-aaababababababacagagagagalalalalalalalalagaqatataOatataOatataqayatatatatatbhaqbiaqbjaqagagagagalalalalalagagagagagagacaf
-aaababababababacagagagagalalalalalalalalalaqaqaqaqaqaqaqaqaqaqaqaqbkblblblbmaqaqaqaqaqagagagagalalalalagagagagagagagacaf
-aaabababababacacagagagalalalalalalalalalalagagagagaGacacadadadadbnadadadadadbnacacagagagagagagalalalalagagagagagagagacaf
-aaabababababacagagagagalalalalalalalalalalalalagagaFagacacacacacaFadadadadadaFacagagagagagagalalalalalagagagagagagacacaf
-aaababababacacagagagagalalalalalalalalalalalalalagagagagagagagacacadadadadadacacagagagagagalalalalalalagagagagagagacabaf
-aaababababacagagagagagagalalalalalalalalalalalalagagagagagagagagacacacacacacacagagagagagagagalalalalalagagagagagacacabaf
-aaabababacacagagagagagagalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagagagagagalalalagagagagagagacababaf
-aaabababacacagagagagagalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagagagagagalalalagagagagagagacababaf
-aaabababacacagagagagagalalalalalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagagagalalalagagagagagacacababaf
-aaababacacagagagagagagagalalalalalalalalalalalalalalalalalalagagagagagagagagagagagagagagagagalalalalagagagagagacabababaf
-aaababacagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagalalalalalalagagagagagacacababaf
-aaababacagagagagagalalalalalalalalagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf
-aaabacacagagagagagalagalalalalalagagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf
-aaabacagagagagagagagagalalalalalalalagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf
-aaabacagagagagagagagagagagagagalalalagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagagacababaf
-aaabacagagagagagagagagagagagagagagagagagagagagagagalalalalalalalalalalalalalalalalalalalalalalalalalalagagagagacacababaf
-aaabacagagagagagagagagacacacacacacacacagagagagagagalalalalalalalalalalalalalalalagalalalalalalalalalalagagagagacabababaf
-aaabacagagagagagagacacacababababababacacacagagagagagagalalagagagagagagagagagalagagagagagalalalalalalagagagagagacabababaf
-aaabacacagagagagacacababababababababababacagagagagagagagagagagagagagagagagagagagagagagagagagagalalalalagagagacacababaeaf
-aaababacagagagacacababababababababababacacagagagagagagagagagagagagagagagagagagagagagagagagagagagagalalagagagacababahabaf
-aaababacagagacacabababababababababahabacagagagagagagagagagagagagagagacacacacacacagagagagagagagagagagagagagacacababababaf
-aaabacacagacacababababababababababababacagagagagagagagagagagacacacacacabacacacacacacagagagagagagagagagagacacabababababaf
-aaabacagacacababababaeabababababababacacagagagagagacacacacacacababababababababababacacacacacacacagagagacacacabababababaf
-aaabacacacababababababababababababacacacacacacacacacabababababababababababababababababababababacacacacacabababababababaf
+aaabababababababababababababababababababababababababababababababababababacacacacacacacacabababababababadadadabababaeabaa
+aaaeabababababababababababababababababababababababababababababababababacacafafafafafafacacacacababacadadadadadacacacabaa
+aaababacacacacacacacabababababababagababababacacacacacacacacababacacacacafafafafafafafafafafacacacacadadahadacafafacabaa
+aaabacacafafafafafacacacacacacababaeabacacacacafafafafacacacacacafafafafafafafafafafafafafacacadadadadadacacacafafacabaa
+aaabacafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafafafafafafafafafafafafacacadaiadadajacacafafafafacacaa
+aaabacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafacacacadadadadadadacafafafafafafacaa
+aaabacafafafafakakakakakakafafafafafafafafafafafafafakakakakakakakafafafafafafafafacacadajadadahadadadacafafafafafafacaa
+aaabacafafafafafakakakakakafafafafafafafafafakakakakakakakakakakakakakakafafafafafacadahadadadadadadacacafafafafafafacaa
+aaabacacafafafafafakakakakafafafafafafafafafakakakakakakakakakakakakakafafafafafacacaladadadadadahacacafafafafafafafacaa
+aaababacafafafafafafakakakakakafafafakakakakakakakakakakakakakakakakakakakakakafafacacadadadadadacacafafafafafafafafacaa
+aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafafacadadadaiadacacafafafafafafafacacaa
+aaababacacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacacadahadadacacafafafafafafafafacabaa
+aaabababacafafafafafafafakakakakakakakakakakakakafafakakakakakakakakakafafafafafafacacadadadadacafafafafafafafafafacabaa
+aaabababacacafafafafafafafakakakakakakakakakakafafafafakakakakakakakakakafafafafafacacadadalacacafafafafafafafacacacabaa
+aaababababacafafafafafafakakakakakakakakakafafafafafafafafafafafafafafafafafafacacacadadadadacafafafafakafafafacacababaa
+aaababababacacafafafafafafakakakakakakafafafafafafafafafafafafafafafafafafafacacadadadadadacacafafafakakafafafafacababaa
+aaababababacacafafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacadadadadacacacafafafafakakakafafafacacabaa
+aaababababaeacafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacadadadacacacafafafafafafakakakafafafafacabaa
+aaababababacacafafakakakakakakakakafafafafafafafafafacacacacacacacafafacacadadacacacafafafafafafafafakakakafafafafacabaa
+aaababababacafafafakakakakakakakakakakafafafafafacacacadadadadadacacacacadadacacafafafafafafafakafakakakafafafafafacabaa
+aaabababacacafafafafakakakakakakakafafafafafafacacadadamadadadadadadadadadadacafafafafafafafafakakakakakafafafafafacabaa
+aaabababacafafafafafafakakakakakafafafafafafacacadadadadadadamadadadadadadadacafafafafafafafakakakakakakafafafafacacabaa
+aaabababacafafafafafafakakakakakafafafafafacacadadadadadadadadadadadadadadacacafafafafafafafakakakakakakakakafafacacabaa
+aaabababacafafafafafafafakakakakafafafafacacadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakakakafafafacabaa
+aaabababacafafafafafafafakakakafafafafafacadadadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakafafafafacabaa
+aaabababacafafafafafafafakakakakakafafafacadadadadadadadanadadadadadanadadadadadacacafafafafafafakakakakafafafafafacabaa
+aaabababacafafafafafafafakakakakakafafafacadadaoadadaoadapapaqaqaqapapadaoadadaoadacafafafafafafakakakakafafafafafacabaa
+aaabababacafafafafafafafakakakakakakafafacapapapapapapapapapaparapapapapapapapapapapapafafafafafakakakakafafafafacacabaa
+aaabababacacafafafafafafakakakakakakafafacapasatasauavauasawapaxapayayayayazaAaBaCaDapafafafafafakakakakafafafafacacabaa
+aaabababacacacafafafafakakakakakakakafaoaEapaFaCaGaCaCaCasaHapasapaIaJaJaJaKasasaLasapaMaoafafafakakakafafafafafafacabaa
+aaabababababacacafafafakakakakakakakafafafapaxaCaCaCaCaCasaNapaOapapapapapapaPapapapapafafafafafakakakafafafafafafacabaa
+aaababababababacafafafakakakakakakakakafafapasasasaLasasasasaQasasavasasasasasavasasapafafafafafakakakafafafafafafafacaa
+aaabababagabababacafafakakakakakakakakaoaMapaRapapapapapapapapapapapapapapaSapapapapapaMaoafafafakakakafafafafafafafacaa
+aaababababababacacafafafakakakakakakakakafapasaCaTaUaVaWaXaYapaZaCbabbbabcasaSavaSbdapafafafafafakakakafafafafafafafacaa
+aaababababababacafafafafakakakakakakakakafapasasaLasasaLasasapaxasasasasasbeapbfapbgapafafafafakakakakakafafafafafafacaa
+aaababababababacafafafafakakakakakakakakakapapapapapapapapapapapapbhbibibibjapapapapapafafafafakakakakafafafafafafafacaa
+aaabababababacacafafafakakakakakakakakakakafafafafaEacacadadadadbkadadadadadbkacacafafafafafafakakakakafafafafafafafacaa
+aaabababababacafafafafakakakakakakakakakakakakafafaoafacacacacacaoadadadadadaoacafafafafafafakakakakakafafafafafafacacaa
+aaababababacacafafafafakakakakakakakakakakakakakafafafafafafafacacadadadadadacacafafafafafakakakakakakafafafafafafacabaa
+aaababababacafafafafafafakakakakakakakakakakakakafafafafafafafafacacacacacacacafafafafafafafakakakakakafafafafafacacabaa
+aaabababacacafafafafafafakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa
+aaabababacacafafafafafakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa
+aaabababacacafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafakakakafafafafafacacababaa
+aaababacacafafafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafakakakakafafafafafacabababaa
+aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafakakakakakakafafafafafacacababaa
+aaababacafafafafafakakakakakakakakafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa
+aaabacacafafafafafakafakakakakakafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa
+aaabacafafafafafafafafakakakakakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa
+aaabacafafafafafafafafafafafafakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa
+aaabacafafafafafafafafafafafafafafafafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafacacababaa
+aaabacafafafafafafafafacacacacacacacacafafafafafafakakakakakakakakakakakakakakakafakakakakakakakakakakafafafafacabababaa
+aaabacafafafafafafacacacababababababacacacafafafafafafakakafafafafafafafafafakafafafafafakakakakakakafafafafafacabababaa
+aaabacacafafafafacacababababababababababacafafafafafafafafafafafafafafafafafafafafafafafafafafakakakakafafafacacababaeaa
+aaababacafafafacacababababababababababacacafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakafafafacababagabaa
+aaababacafafacacabababababababababagabacafafafafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafacacababababaa
+aaabacacafacacababababababababababababacafafafafafafafafafafacacacacacabacacacacacacafafafafafafafafafafacacabababababaa
+aaabacafacacababababaeabababababababacacafafafafafacacacacacacababababababababababacacacacacacacafafafacacacabababababaa
+aaabacacacababababababababababababacacacacacacacacacabababababababababababababababababababababacacacacacabababababababaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/submaps/surface_submaps/wilderness/Lab1.dmm b/maps/submaps/surface_submaps/wilderness/Lab1.dmm
index 12745913d6..724043a9ff 100644
--- a/maps/submaps/surface_submaps/wilderness/Lab1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Lab1.dmm
@@ -19,32 +19,33 @@
"s" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
"t" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
"u" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/hyper; dir = 8; name = "Unknown APC"; operating = 0; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"v" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"w" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"v" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"w" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
"x" = (/obj/structure/table/standard,/obj/item/weapon/paper{desc = "Gladstone for the last fucking time, We have crowbars for a REASON. Stop breaking in through the goddamn windows! We big red shiny doors for god's sakes!"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
"y" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"z" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"A" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"B" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"C" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"D" = (/obj/structure/table/standard,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"E" = (/obj/structure/table/standard,/obj/item/device/multitool,/obj/item/clothing/glasses/welding,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"F" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"G" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"H" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"I" = (/obj/item/weapon/cell/super,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"J" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"K" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"L" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"M" = (/obj/item/weapon/storage/bag/circuits,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"N" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"O" = (/obj/item/robot_parts/chest,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"P" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"Q" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"R" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"S" = (/obj/machinery/vending/robotics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"T" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
-"U" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"z" = (/turf/simulated/floor,/area/submap/Lab1)
+"A" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"B" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"C" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"D" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"E" = (/obj/structure/table/standard,/obj/fiftyspawner/steel,/obj/fiftyspawner/glass,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"F" = (/obj/structure/table/standard,/obj/item/device/multitool,/obj/item/clothing/glasses/welding,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"G" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"H" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"I" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"J" = (/obj/item/weapon/cell/super,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"K" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"L" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"M" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"N" = (/obj/item/weapon/storage/bag/circuits,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"O" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"P" = (/obj/item/robot_parts/chest,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"Q" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"R" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"S" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"T" = (/obj/machinery/vending/robotics,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"U" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
+"V" = (/obj/machinery/optable,/turf/simulated/floor/tiled/steel_dirty,/area/submap/Lab1)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
@@ -56,14 +57,14 @@ acmhncbbchhcbbcohpca
acqhrcbbcshcbbcthtca
acuvwcbbchhcbbcxhyca
acdefcbbcllcbbcdefca
-abbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbba
+abbbbbbbbzzbbbbbbbba
+abbbbbbbbzzbbbbbbbba
acdefcbbcllcbbcdefca
-achzAcbbchBcbbcCDEca
-acFhGcbbchhcbbcHIJca
-acKhLcdfcllcdfchhMca
-acFhhihhNhhNhhihhOca
-acPQRcdeeeeeefcSTUca
+achABcbbchCcbbcDEFca
+acGhHcbbchhcbbcIJKca
+acLhMcdfcllcdfchhNca
+acGhhihhOhhOhhihhPca
+acQRScdeeeeeefcTUVca
acdefcbbbbbbbbcdefca
abbbbbbbbbbbbbbbbbba
aaaaaaaaaaaaaaaaaaaa
diff --git a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
index df9dd6ecaa..3033ffdf62 100644
--- a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
+++ b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm
@@ -1,59 +1,53 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/template_noop,/area/submap/MilitaryCamp1)
"c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1)
-"d" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"e" = (/obj/effect/mine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"f" = (/obj/structure/flora/bush,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"g" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"h" = (/obj/effect/decal/remains,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1)
-"i" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"j" = (/obj/item/stack/rods,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"k" = (/obj/effect/mine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1)
-"l" = (/turf/simulated/wall,/area/submap/MilitaryCamp1)
-"m" = (/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"n" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"o" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"p" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"q" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"r" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"s" = (/obj/structure/table/standard,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"t" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/space,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"u" = (/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"v" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"w" = (/mob/living/simple_animal/hostile/viscerator,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"y" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"z" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"A" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"B" = (/obj/machinery/computer/security,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"C" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor/holofloor/tiled,/area/submap/MilitaryCamp1)
-"D" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"E" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/MilitaryCamp1)
-"F" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"G" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"H" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/floor/tiled/steel,/area/submap/MilitaryCamp1)
-"I" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1)
-"J" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1)
+"d" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1)
+"e" = (/obj/structure/flora/bush,/turf/template_noop,/area/submap/MilitaryCamp1)
+"f" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/MilitaryCamp1)
+"g" = (/obj/effect/decal/remains,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1)
+"h" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/MilitaryCamp1)
+"i" = (/obj/item/stack/rods,/turf/template_noop,/area/submap/MilitaryCamp1)
+"j" = (/obj/effect/mine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1)
+"k" = (/turf/simulated/wall,/area/submap/MilitaryCamp1)
+"l" = (/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"m" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/MilitaryCamp1)
+"n" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"o" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"p" = (/obj/machinery/computer/communications,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"q" = (/obj/structure/table/standard,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"r" = (/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"s" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"t" = (/obj/machinery/computer/security,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"u" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"v" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"w" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"x" = (/mob/living/simple_animal/hostile/viscerator{returns_home = 1},/turf/template_noop,/area/submap/MilitaryCamp1)
+"y" = (/obj/structure/table,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"z" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"A" = (/obj/machinery/door/airlock,/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"B" = (/obj/structure/flora/tree/dead,/turf/template_noop,/area/submap/MilitaryCamp1)
+"C" = (/obj/structure/table/standard,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor,/area/submap/MilitaryCamp1)
+"D" = (/obj/structure/table/standard,/obj/item/weapon/gun/energy/gun,/turf/simulated/floor,/area/submap/MilitaryCamp1)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
-abbcdedfgedddbbbbbba
-achcdddddddgedchbbba
-adccddeddijdddcckiba
-adiddjllmlllmlncddda
-abdddlllmmllllldedea
-abbellopqmplrslldfda
-abbdlltmmmuvwxllddda
-abdnlllllyullllzAeda
-adddmlplBuuClullddda
-agedmluvDppDvplldeda
-adddzlullllllulzdEda
-addAllyuuuFuuullddda
-aEddllGouuuuHollndga
-addfdllllImlllldedda
-abedddlllmmllldcceda
-abcddddlldnlldkcddba
-achceddddedjddchibba
-abccfbJdigddeccdbbba
+abbcbdbefdbbbbbbbbba
+acgcbbbbbbbfdbcgbbba
+abccbbdbbhibbbccjhba
+abhbbikkllkklkmcbbba
+abbbbkkkllkkkkkbdbda
+abbdkknllokpqnkkbeba
+abbbkknorsktuukkbbba
+abbmkkvkkwkkkvkoxdba
+abbblknllslnwskkbbba
+afdblknllyznsskkbdba
+abbbokvAkkkkvvkobBba
+abbxkknlosssnnkkbbba
+aBbbkkCDkllnnnkkmbfa
+abbebkkkkvlkkkkbdbba
+abdbbbkkkslkkkbccdba
+abcbbbbkkbmkkbjcbbba
+acgcdbbbddbibbcghbba
+abccebdbhfbbdccbbbba
aaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
index 562ca0efa3..aac376d999 100644
--- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
+++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm
@@ -3,8 +3,8 @@
"ac" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/Rockybase)
"ad" = (/turf/template_noop,/area/submap/Rockybase)
"ae" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Rockybase)
-"af" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/template_noop,/area/submap/Rockybase)
-"ag" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase)
+"af" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase)
+"ag" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/template_noop,/area/submap/Rockybase)
"ah" = (/turf/simulated/floor,/area/submap/Rockybase)
"ai" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor,/area/submap/Rockybase)
"aj" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
@@ -16,104 +16,104 @@
"ap" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
"aq" = (/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
"ar" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/item/weapon/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"as" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"at" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"au" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"av" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aw" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"ax" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"ay" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"az" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aA" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aB" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aC" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aD" = (/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aE" = (/obj/structure/table/standard,/obj/item/device/laptop,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aF" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aG" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aH" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aI" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aJ" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aL" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aM" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aN" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"aO" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"aP" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aQ" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aR" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aS" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aT" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aU" = (/obj/machinery/vending/security,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aV" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aW" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"aX" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"aY" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"aZ" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"ba" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
-"bb" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bc" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bd" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"be" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bf" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bg" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bh" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bi" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bj" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bk" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bl" = (/mob/living/bot/farmbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bm" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bn" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bo" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bp" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bq" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"br" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bs" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bt" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bu" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bw" = (/obj/item/mecha_parts/part/gygax_right_arm,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bx" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"by" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bz" = (/turf/simulated/wall,/area/submap/Rockybase)
-"bA" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bB" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bC" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bD" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bE" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bF" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bG" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bH" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bI" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bJ" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
-"bK" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bL" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bM" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bN" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bO" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bP" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bQ" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bR" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bS" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bT" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bU" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bV" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bW" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"bX" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bY" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"bZ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
-"ca" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
-"cb" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase)
-"cc" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
-"cd" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ce" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
-"cf" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cg" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ch" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ci" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"ck" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase)
+"as" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"at" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"au" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"av" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aw" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"ax" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"ay" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"az" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"aA" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aB" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aC" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aD" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aE" = (/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aF" = (/obj/structure/table/standard,/obj/item/device/laptop,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aG" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aH" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aI" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aJ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aK" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aL" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aM" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aN" = (/obj/structure/closet/crate/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aO" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"aP" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"aQ" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aR" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aS" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aT" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aU" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aV" = (/obj/machinery/vending/security,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aW" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aX" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"aY" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"aZ" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"ba" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"bb" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase)
+"bc" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bd" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"be" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bf" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bg" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bh" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bi" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bj" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bk" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bl" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bm" = (/mob/living/bot/farmbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bn" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bo" = (/obj/machinery/vending/cola,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bp" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bq" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"br" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bs" = (/mob/living/simple_animal/hostile/malf_drone{desc = "An automated combat drone with an aged apperance."; returns_home = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bt" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bu" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bv" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bw" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bx" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"by" = (/obj/item/mecha_parts/part/gygax_right_arm,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bz" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bA" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bB" = (/turf/simulated/wall,/area/submap/Rockybase)
+"bC" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bD" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bE" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bF" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bG" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bH" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bI" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bJ" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bK" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bL" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase)
+"bM" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bN" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bO" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bP" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bR" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bS" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bT" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bU" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bV" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bW" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bX" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"bY" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"bZ" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ca" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
+"cb" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
+"cc" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase)
+"cd" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase)
+"ce" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cf" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
+"cg" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ch" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ci" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cj" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"ck" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cl" = (/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase)
"cm" = (/obj/machinery/vending/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase)
"cn" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase)
"co" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase)
@@ -122,11 +122,11 @@
"cr" = (/obj/item/mecha_parts/part/gygax_armour,/turf/simulated/floor,/area/submap/Rockybase)
"cs" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase)
"ct" = (/obj/item/mecha_parts/chassis/gygax,/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cu" = (/mob/living/simple_animal/hostile/mecha/malf_drone,/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cu" = (/mob/living/simple_animal/hostile/mecha/malf_drone{name = "Autonomous Mechanized Drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
"cv" = (/obj/machinery/vending/robotics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase)
"cw" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light{dir = 8},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "Unknown APC"; pixel_x = -24},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase)
-"cy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase)
+"cx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase)
+"cy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/power/smes/buildable/point_of_interest,/turf/simulated/floor,/area/submap/Rockybase)
"cz" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase)
"cA" = (/obj/item/mecha_parts/part/gygax_right_leg,/turf/simulated/floor/tiled,/area/submap/Rockybase)
"cB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/mecha_parts/part/gygax_left_arm,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase)
@@ -153,31 +153,31 @@
aaabababababababababababababababababababaaababababababababababababababababababababababababababababaa
abacadadadaeadadadadaeadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadacadadadadadab
abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab
-abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadab
-abadadadadadadadadadadafadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadab
-abadadagagagagagadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadab
-abadadagagagagagagadadadadagagagagagadadadadadadadadahahahahahahadadadadadadadadadagagagadadadadadab
-abadagagagagagagagagagagagagagagagagagadadadadadaiahahajahahahahahaiadadadadadagagagagagagagagagadab
-akadagagagagagagagagagagagagagagagagagagagagagahahalahahahahahajalahahagagagagagagagagagagagagagadab
-abadagagamamamamamamamamamamamamamamamamamamamamamamamanaoaoanamamamamamamamamamamamamamagagagagadab
-abadagamamapaqaramasasatauavavasawaxawasayamamazaAaBaCamaDaDamaEaFaGaHaIaJamaDaKamaLaMamamagagagadab
-abagagamamaNaqaOamavavavavavavavavavavavavamamaPaDaDaQamaRaDamaSaTaDaDaDaUamaDaVamaDaWamamagagagadab
-abagagamamaNaqaXamavaYavavaZavasbaasawasawamambbaDbcbdamaDaDambebfaDaDaDaDbgbhbiamaDbjamamagagagadab
-abagagamamaqaqaqamamambkamamamamamamamamamamamambkamamamaoaoamamamamambkamamamamamblbmamamagagagadab
-abagagamamambkamambnaDaDaDaDaIaDaDaDaDboaDaIaDaDaDaDaDaDaDaDaDaDaIaDaDaDaDaDaIaDamaDbjamamagagagadab
-abagagamamaRaDaDaDaDaDaDbpaDaDaDbqbraDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDaDbpaDaDbkaDbjamamagagagadab
-abadagamamambsamambtaDaDbhaDaDaDaDaDbuaDahbrbhaDbqaDbvaDaDaDaDaDaDaDbhaDaDaDaDbwamaDbmamamagagagadab
-abadagamambxaqaqamamamamamamamamamamamahahamamamambyamamamamaDamamamamamamamamamamaDbjamamagagagadab
-abadagamambzbzaqambAbBbCbDbEbFbGbHbIboahbJbKambLbMaDbNbOambPaDaDbQbRbSbTaDaDaDbUamaDbjamamagagagadab
-abadagamambVbsbWamaDaDaDaDaDaDaDaDaDaDaDahbXamaDaDaDaDaDamboaDbTbTbYbZcacbccaDcdamaDbmamamagagagaeab
-abadagamambzbzceamaDcfaDaDcfaDaDcgaDchaDahciamaDaDcjckclamcmaDbTcncocpcqcocrahaDamaDbjamamagagadadab
-abadagamambVbsaqamcsaDaDctaDcuaDaDaDaDaDaDcvamcwckcxckcyamaDaDbTczcqcqcocbahbJaDamaDcAamamagagadadab
-abadagamambzbzcBamaDcfaDaDahahaDaDaDaDaDaDcCamaDaDcDckclamcEaDaDcFcocacacacaahbTamaDcGamamagadadadab
-abadagamambVbsaqamaDaDaDaDaDaDbhcHaDcHaDaDbMamcIcJcKcLaDamcMaDcNaDaDcOcccOcPbTcQamcRcSamamagagadadab
-abadagagamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamagagadadafab
-abadagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagadadadab
-abadagagagagagagagagagagagagagagagagagagagagagagagagagagagagagadagagagadadadagagagagagagagadadadadab
-abadadagagagagagagagagagagagagafadadadagagagagagagadadadadadadadadadadadadadadadadadadadadadadadadab
-abadaeadadadadadadagagagagagadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab
+abadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab
+abadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadab
+abadadafafafafafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadab
+abadadafafafafafafagadadadafafafafafadadadadadadadadahahahahahahadadadadadadadadadafafafagadadadadab
+abadafafafafafafafafafafafafafafafafafadadadadadaiahahajahahahahahaiadadadadadafafafafafafafafafadab
+akadafafafafafafafafafafafafafafafafafafafafafahahalahahahahahajalahahafafafafafafafafafafafafafadab
+abadafafamamamamamamamamamamamamamamamamamamamamamamamanaoaoanamamamamamamamamamamamamamafafafafadab
+abadafamamapaqaramasatauavawawataxayaxatazamamaAaBaCaDamaEaEamaFaGaHaIaJaKamaEaLamaMaNamamafafafadab
+abafafamamaOaqaPamawawawawawawawawawawawawamamaQaEaEaRamaSaEamaTaUaEaEaEaVamaEaWamaEaXamamafafafadab
+abafafamamaOaqaYamawaZawawbaawatbbataxataxamambcaEbdbeamaEaEambfbgaEaEaEaEbhbibjamaEbkamamafafafadab
+abafafamamaqaqaqamamamblamamamamamamamamamamamamblamamamaoaoamamamamamblamamamamambmbnamamafafafadab
+abafafamamamblamamboaEaEaEaEaJaEaEaEaEbpaEaJaEaEaEaEaEaEaEaEaEaEaJaEaEaEaEbqbqbramaEbkamamafafafadab
+abafafamamaSaEaEaEaEaEaEbsbqbqaEbtbuaEaEaEaEaEaEaEaEaEaEbqaEaEaEaEaEaEaEaEbsbqbqblaEbkamamafafafadab
+abadafamamambvamambwaEaEbqbqbqaEaEaEbxaEahbubiaEbtaEbqbqbqaEaEaEaEaEbiaEaEaEaEbyamaEbnamamafafafadab
+abadafamambzaqaqamamamamamamamamamamamahahamamamambAamamamamaEamamamamamamamamamamaEbkamamafafafadab
+abadafamambBbBaqambCbDbEbFbGbHbIbJbKbpahbLbMambNbOaEbPbQambRaEaEbSbTbUbqaEaEaEbVamaEbkamamafafafadab
+abadafamambWbvbXamaEaEaEaEaEaEaEaEaEaEaEahbYamaEaEaEaEaEambpaEbqbqbZcacbcccdaEceamaEbnamamafafafaeab
+abadafamambBbBcfamaEcgaEaEcgaEaEchaEciaEahcjamaEbqbqckclamcmaEbqcncocpcqcocrahaEamaEbkamamafafadadab
+abadafamambWbvaqamcsaEaEctaEcuaEbqbqaEaEaEcvamcwcxbqckcyamaEaEbqczcqcqcoccahbLaEamaEcAamamafafadadab
+abadafamambBbBcBamaEcgaEaEahahbqbqbqbqaEaEcCamaEaEcDckclamcEaEaEcFcocbcbcbcbahbqamaEcGamamafagadadab
+abadafamambWbvaqamaEaEaEaEaEaEbicHaEcHaEaEbOamcIcJcKcLaEamcMaEcNaEaEcOcdcOcPbqcQamcRcSamamafafadadab
+abadafafamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamafafadadadab
+abadafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafadadadab
+abadafafafafafafafafafafafafafafafafafafafafafafafafafafafafafadafafafadadadafafafafafafafadadadadab
+abadadafafafafafafafafafafafafagadadadafafafafafafadadadadadadadadadadadadadadadadadadadadadadadadab
+abadaeadadadadadadafafafafafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadab
aaabcTababababababababababababababababababaaababababababababababababababababakababababababcTabakabab
"}
diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm
index 24bdcd9f49..8829a4664a 100644
--- a/maps/tether/submaps/_tether_submaps.dm
+++ b/maps/tether/submaps/_tether_submaps.dm
@@ -1,7 +1,99 @@
// This causes tether submap maps to get 'checked' and compiled, when undergoing a unit test.
// This is so Travis can validate PoIs, and ensure future changes don't break PoIs, as PoIs are loaded at runtime and the compiler can't catch errors.
-//Away missions defined here for testing
+//////////////////////////////////////////////////////////////////////////////
+/// Static Load
+/datum/map_template/tether_lateload/tether_misc
+ name = "Tether - Misc"
+ desc = "Misc areas, like some transit areas, holodecks, merc area."
+ mappath = 'tether_misc.dmm'
+
+ associated_map_datum = /datum/map_z_level/tether_lateload/ships
+
+/datum/map_z_level/tether_lateload/misc
+ name = "Misc"
+ flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED
+
+/datum/map_template/tether_lateload/tether_ships
+ name = "Tether - Ships"
+ desc = "Ship transit map and whatnot."
+ mappath = 'tether_ships.dmm'
+
+ associated_map_datum = /datum/map_z_level/tether_lateload/ships
+
+/datum/map_z_level/tether_lateload/ships
+ name = "Ships"
+ flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED
+
+//////////////////////////////////////////////////////////////////////////////
+/// Away Missions
+#if AWAY_MISSION_TEST
+#include "beach/beach.dmm"
+#include "beach/cave.dmm"
+#include "alienship/alienship.dmm"
+//#include "aerostat/aerostat.dmm"
+//#include "aerostat/surface.dmm"
+#endif
+
+#include "beach/_beach.dm"
+/datum/map_template/tether_lateload/away_beach
+ name = "Desert Planet - Z1 Beach"
+ desc = "The beach away mission."
+ mappath = 'beach/beach.dmm'
+ associated_map_datum = /datum/map_z_level/tether_lateload/away_beach
+
+/datum/map_z_level/tether_lateload/away_beach
+ name = "Away Mission - Desert Beach"
+
+/datum/map_template/tether_lateload/away_beach_cave
+ name = "Desert Planet - Z2 Cave"
+ desc = "The beach away mission's cave."
+ mappath = 'beach/cave.dmm'
+ associated_map_datum = /datum/map_z_level/tether_lateload/away_beach_cave
+
+/datum/map_z_level/tether_lateload/away_beach_cave
+ name = "Away Mission - Desert Cave"
+
+/obj/effect/step_trigger/zlevel_fall/beach
+ var/static/target_z
+
+
+#include "alienship/_alienship.dm"
+/datum/map_template/tether_lateload/away_alienship
+ name = "Alien Ship - Z1 Ship"
+ desc = "The alien ship away mission."
+ mappath = 'alienship/alienship.dmm'
+ associated_map_datum = /datum/map_z_level/tether_lateload/away_alienship
+
+/datum/map_z_level/tether_lateload/away_alienship
+ name = "Away Mission - Alien Ship"
+
+
+#include "aerostat/_aerostat.dm"
+/datum/map_template/tether_lateload/away_aerostat
+ name = "Remmi Aerostat - Z1 Aerostat"
+ desc = "The Virgo 2 Aerostat away mission."
+ mappath = 'aerostat/aerostat.dmm'
+ associated_map_datum = /datum/map_z_level/tether_lateload/away_aerostat
+
+/datum/map_z_level/tether_lateload/away_aerostat
+ name = "Away Mission - Aerostat"
+
+/datum/map_template/tether_lateload/away_aerostat_surface
+ name = "Remmi Aerostat - Z2 Surface"
+ desc = "The surface from the Virgo 2 Aerostat."
+ mappath = 'aerostat/surface.dmm'
+ associated_map_datum = /datum/map_z_level/tether_lateload/away_aerostat_surface
+
+/datum/map_z_level/tether_lateload/away_aerostat_surface
+ name = "Away Mission - Aerostat Surface"
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////
+// Code Shenanigans for Tether lateload maps
/datum/map_template/tether_lateload
allow_duplicates = FALSE
var/associated_map_datum
@@ -13,7 +105,6 @@
new associated_map_datum(using_map, z)
-
/datum/map_z_level/tether_lateload
z = 0
flags = MAP_LEVEL_SEALED
@@ -66,66 +157,77 @@
var/mob/living/L = A
L.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this.
-/obj/effect/step_trigger/zlevel_fall/beach
- var/static/target_z
+/////////////////////////////
+/obj/tether_away_spawner
+ name = "RENAME ME, JERK"
+ desc = "Spawns the mobs!"
+ icon = 'icons/mob/screen1.dmi'
+ icon_state = "x"
+ invisibility = 101
+ mouse_opacity = 0
+ density = 0
+ anchored = 1
-//////////////////////////////////////////////////////////////////////////////
-/// Static Load
-/datum/map_template/tether_lateload/tether_misc
- name = "Tether - Misc"
- desc = "Misc areas, like some transit areas, holodecks, merc area."
- mappath = 'tether_misc.dmm'
+ var/list/mobs_to_pick_from
+ var/mob/living/simple_animal/my_mob
+ var/depleted = FALSE
- associated_map_datum = /datum/map_z_level/tether_lateload/ships
+ //When the below chance fails, the spawner is marked as depleted and stops spawning
+ var/prob_spawn = 100 //Chance of spawning a mob whenever they don't have one
+ var/prob_fall = 5 //Above decreases by this much each time one spawns
-/datum/map_z_level/tether_lateload/misc
- name = "Misc"
- flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED
+ var/faction //To prevent infighting if it spawns various mobs, set a faction
+ var/atmos_comp //TRUE will set all their survivability to be within 20% of the current air
+ var/guard //# will set the mobs to remain nearby their spawn point within this dist
-/datum/map_template/tether_lateload/tether_ships
- name = "Tether - Ships"
- desc = "Ship transit map and whatnot."
- mappath = 'tether_ships.dmm'
+/obj/tether_away_spawner/initialize()
+ . = ..()
- associated_map_datum = /datum/map_z_level/tether_lateload/ships
+ if(!LAZYLEN(mobs_to_pick_from))
+ error("Mob spawner at [x],[y],[z] ([get_area(src)]) had no mobs_to_pick_from set on it!")
+ initialized = TRUE
+ return INITIALIZE_HINT_QDEL
+ processing_objects |= src
-/datum/map_z_level/tether_lateload/ships
- name = "Ships"
- flags = MAP_LEVEL_ADMIN|MAP_LEVEL_SEALED
+/obj/tether_away_spawner/process()
+ if(my_mob && my_mob.stat != DEAD)
+ return //No need
-//////////////////////////////////////////////////////////////////////////////
-/// Away Missions
-#if AWAY_MISSION_TEST
-#include "beach/beach.dmm"
-#include "beach/cave.dmm"
-#include "alienship/alienship.dmm"
-#endif
+ if(LAZYLEN(human_mobs(world.view)))
+ return //I'll wait.
-#include "beach/beach.dm"
-/datum/map_template/tether_lateload/away_beach
- name = "Desert Planet - Z1 Beach"
- desc = "The beach away mission."
- mappath = 'beach/beach.dmm'
- associated_map_datum = /datum/map_z_level/tether_lateload/away_beach
+ if(prob(prob_spawn))
+ prob_spawn -= prob_fall
+ var/picked_type = pick(mobs_to_pick_from)
+ my_mob = new picked_type(get_turf(src))
+ my_mob.low_priority = TRUE
-/datum/map_z_level/tether_lateload/away_beach
- name = "Away Mission - Desert Beach"
+ if(faction)
+ my_mob.faction = faction
-/datum/map_template/tether_lateload/away_beach_cave
- name = "Desert Planet - Z2 Cave"
- desc = "The beach away mission's cave."
- mappath = 'beach/cave.dmm'
- associated_map_datum = /datum/map_z_level/tether_lateload/away_beach_cave
+ if(atmos_comp)
+ var/turf/T = get_turf(src)
+ var/datum/gas_mixture/env = T.return_air()
+ if(env)
+ my_mob.minbodytemp = env.temperature * 0.8
+ my_mob.maxbodytemp = env.temperature * 1.2
-/datum/map_z_level/tether_lateload/away_beach_cave
- name = "Away Mission - Desert Cave"
+ var/list/gaslist = env.gas
+ my_mob.min_oxy = gaslist["oxygen"] * 0.8
+ my_mob.min_tox = gaslist["phoron"] * 0.8
+ my_mob.min_n2 = gaslist["nitrogen"] * 0.8
+ my_mob.min_co2 = gaslist["carbon_dioxide"] * 0.8
+ my_mob.max_oxy = gaslist["oxygen"] * 1.2
+ my_mob.max_tox = gaslist["phoron"] * 1.2
+ my_mob.max_n2 = gaslist["nitrogen"] * 1.2
+ my_mob.max_co2 = gaslist["carbon_dioxide"] * 1.2
-#include "alienship/alienship.dm"
-/datum/map_template/tether_lateload/away_alienship
- name = "Alien Ship - Z1 Ship"
- desc = "The alien ship away mission."
- mappath = 'alienship/alienship.dmm'
- associated_map_datum = /datum/map_z_level/tether_lateload/away_alienship
+ if(guard)
+ my_mob.returns_home = TRUE
+ my_mob.wander_distance = guard
-/datum/map_z_level/tether_lateload/away_alienship
- name = "Away Mission - Alien Ship"
\ No newline at end of file
+ return
+ else
+ processing_objects -= src
+ depleted = TRUE
+ return
diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm
new file mode 100644
index 0000000000..b6deb461f0
--- /dev/null
+++ b/maps/tether/submaps/aerostat/_aerostat.dm
@@ -0,0 +1,203 @@
+#include "submaps/virgo2.dm"
+
+// -- Datums -- //
+
+/datum/shuttle_destination/excursion/virgo2orbit
+ name = "Virgo 2 Orbit"
+ my_area = /area/shuttle/excursion/space
+ preferred_interim_area = /area/shuttle/excursion/space_moving
+ skip_me = TRUE
+
+ routes_to_make = list(
+ /datum/shuttle_destination/excursion/bluespace = 30 SECONDS,
+ /datum/shuttle_destination/excursion/virgo2orbit = 30 SECONDS
+ )
+
+/datum/shuttle_destination/excursion/aerostat
+ name = "Remmi Aerostat"
+ my_area = /area/shuttle/excursion/away_aerostat
+ preferred_interim_area = /area/shuttle/excursion/space_moving
+ skip_me = TRUE
+
+ routes_to_make = list(
+ /datum/shuttle_destination/excursion/virgo2orbit = 30 SECONDS
+ )
+
+/datum/shuttle/ferry/aerostat
+ name = "Aerostat Ferry"
+ warmup_time = 10 //want some warmup time so people can cancel.
+ area_station = /area/shuttle/aerostat/docked
+ area_offsite = /area/shuttle/aerostat/landed
+
+/datum/random_map/noise/ore/virgo2
+ descriptor = "virgo 2 ore distribution map"
+ deep_val = 0.2
+ rare_val = 0.1
+
+/datum/random_map/noise/ore/virgo2/check_map_sanity()
+ return 1 //Totally random, but probably beneficial.
+
+// -- Objs -- //
+
+/obj/machinery/computer/shuttle_control/aerostat_shuttle
+ name = "aerostat ferry control console"
+ shuttle_tag = "Aerostat Ferry"
+
+/obj/shuttle_connector/aerostat
+ name = "shuttle connector - aerostat"
+ shuttle_name = "Excursion Shuttle"
+ destinations = list(/datum/shuttle_destination/excursion/virgo2orbit, /datum/shuttle_destination/excursion/aerostat)
+
+/obj/away_mission_init/aerostat/initialize()
+ seed_submaps(list(z), 50, /area/tether_away/aerostat/surface/unexplored, /datum/map_template/virgo2)
+ new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z, world.maxx, world.maxy)
+ new /datum/random_map/noise/ore/virgo2(null, 1, 1, z, 64, 64)
+
+ initialized = TRUE
+ return INITIALIZE_HINT_QDEL
+
+/obj/tether_away_spawner/aerostat_inside
+ name = "Aerostat Indoors Spawner"
+ faction = "aerostat_inside"
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 10
+ guard = 20
+ mobs_to_pick_from = list(
+ /mob/living/simple_animal/hostile/hivebot/range,
+ /mob/living/simple_animal/hostile/hivebot/range/ion,
+ /mob/living/simple_animal/hostile/hivebot/range/laser
+ )
+
+/obj/tether_away_spawner/aerostat_surface
+ name = "Aerostat Surface Spawner"
+ faction = "aerostat_surface"
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 10
+ guard = 20
+ mobs_to_pick_from = list(
+ /mob/living/simple_animal/hostile/jelly,
+ /mob/living/simple_animal/hostile/viscerator
+ )
+
+/obj/structure/old_roboprinter
+ name = "old drone fabricator"
+ desc = "Built like a tank, still working after so many years."
+ icon = 'icons/obj/machines/drone_fab.dmi'
+ icon_state = "drone_fab_idle"
+ anchored = TRUE
+ density = TRUE
+
+/obj/structure/metal_edge
+ name = "metal underside"
+ desc = "A metal wall that extends downwards."
+ icon = 'icons/turf/cliff.dmi'
+ icon_state = "metal"
+ anchored = TRUE
+ density = FALSE
+
+// -- Turfs -- //
+
+//Atmosphere properties
+#define VIRGO2_ONE_ATMOSPHERE 312.1 //kPa
+#define VIRGO2_AVG_TEMP 612 //kelvin
+
+#define VIRGO2_PER_N2 0.10 //percent
+#define VIRGO2_PER_O2 0.03
+#define VIRGO2_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
+#define VIRGO2_PER_CO2 0.87
+#define VIRGO2_PER_PHORON 0.00
+
+//Math only beyond this point
+#define VIRGO2_MOL_PER_TURF (VIRGO2_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO2_AVG_TEMP*R_IDEAL_GAS_EQUATION))
+#define VIRGO2_MOL_N2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2)
+#define VIRGO2_MOL_O2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_O2)
+#define VIRGO2_MOL_N2O (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2O)
+#define VIRGO2_MOL_CO2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_CO2)
+#define VIRGO2_MOL_PHORON (VIRGO2_MOL_PER_TURF * VIRGO2_PER_PHORON)
+
+//Turfmakers
+#define VIRGO2_SET_ATMOS nitrogen=VIRGO2_MOL_N2;oxygen=VIRGO2_MOL_O2;carbon_dioxide=VIRGO2_MOL_CO2;phoron=VIRGO2_MOL_PHORON;temperature=VIRGO2_AVG_TEMP
+#define VIRGO2_TURF_CREATE(x) x/virgo2/nitrogen=VIRGO2_MOL_N2;x/virgo2/oxygen=VIRGO2_MOL_O2;x/virgo2/carbon_dioxide=VIRGO2_MOL_CO2;x/virgo2/phoron=VIRGO2_MOL_PHORON;x/virgo2/temperature=VIRGO2_AVG_TEMP;x/virgo2/color="#eacd7c"
+
+/turf/unsimulated/floor/sky/virgo2_sky
+ name = "virgo 2 atmosphere"
+ desc = "Be careful where you step!"
+ color = "#eacd7c"
+ VIRGO2_SET_ATMOS
+
+/turf/unsimulated/floor/sky/virgo2_sky/initialize()
+ skyfall_levels = list(z+1)
+ . = ..()
+
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2
+ VIRGO2_SET_ATMOS
+ color = "#eacd7c"
+
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2/nocol
+ color = null
+
+VIRGO2_TURF_CREATE(/turf/unsimulated/wall/planetary)
+
+VIRGO2_TURF_CREATE(/turf/simulated/wall)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/plating)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/bluegrid)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/tiled/techfloor)
+
+VIRGO2_TURF_CREATE(/turf/simulated/mineral)
+/turf/simulated/mineral/virgo2/make_ore()
+ if(mineral)
+ return
+
+ var/mineral_name = pickweight(list("uranium" = 5, "platinum" = 10, "hematite" = 5, "carbon" = 5, "diamond" = 10, "gold" = 20, "silver" = 20, "phoron" = 5))
+
+ if(mineral_name && (mineral_name in ore_data))
+ mineral = ore_data[mineral_name]
+ UpdateMineral()
+ update_icon()
+
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/ignore_mapgen)
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor)
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen)
+
+// -- Areas -- //
+
+/area/shuttle/excursion/away_aerostat
+ name = "\improper Excursion Shuttle - Aerostat"
+
+// The aerostat shuttle
+/area/shuttle/aerostat/docked
+ name = "\improper Aerostat Shuttle - Dock"
+ base_turf = /turf/unsimulated/floor/sky/virgo2_sky
+
+/area/shuttle/aerostat/landed
+ name = "\improper Aerostat Shuttle - Surface"
+ base_turf = /turf/simulated/floor/plating/virgo2
+
+//The aerostat itself
+/area/tether_away/aerostat
+ name = "\improper Away Mission - Aerostat Outside"
+ icon_state = "away"
+ base_turf = /turf/unsimulated/floor/sky/virgo2_sky
+ requires_power = FALSE
+ dynamic_lighting = FALSE
+
+/area/tether_away/aerostat/inside
+ name = "\improper Away Mission - Aerostat Inside"
+ icon_state = "crew_quarters"
+ base_turf = /turf/simulated/floor/plating/virgo2
+ dynamic_lighting = TRUE
+
+/area/tether_away/aerostat/surface
+ flags = RAD_SHIELDED
+ ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
+ base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2
+
+/area/tether_away/aerostat/surface/explored
+ name = "Away Mission - Aerostat Surface (E)"
+ icon_state = "explored"
+
+/area/tether_away/aerostat/surface/unexplored
+ name = "Away Mission - Aerostat Surface (UE)"
+ icon_state = "unexplored"
diff --git a/maps/tether/submaps/aerostat/aerostat.dmm b/maps/tether/submaps/aerostat/aerostat.dmm
new file mode 100644
index 0000000000..9275989478
--- /dev/null
+++ b/maps/tether/submaps/aerostat/aerostat.dmm
@@ -0,0 +1,16192 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2/nocol,
+/area/tether_away/aerostat)
+"ab" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "2-8"
+ },
+/obj/effect/decal/cleanable/cobweb2,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ac" = (
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2,
+/area/tether_away/aerostat/inside)
+"ad" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ae" = (
+/obj/effect/floor_decal/rust,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"af" = (
+/obj/effect/floor_decal/rust,
+/obj/structure/bed/chair{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"ag" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 9
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"ah" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ai" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"aj" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ak" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"al" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"am" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"an" = (
+/obj/structure/bed/padded,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ao" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ap" = (
+/obj/structure/girder,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aq" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"ar" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"as" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"at" = (
+/obj/structure/table/standard,
+/obj/fiftyspawner/osmium,
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"au" = (
+/obj/structure/table/standard,
+/obj/fiftyspawner/phoron,
+/obj/random/cigarettes,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"av" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aw" = (
+/turf/unsimulated/floor/sky/virgo2_sky,
+/area/tether_away/aerostat)
+"ax" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"ay" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 5
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"az" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aA" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 9
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aB" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aC" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aD" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aE" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aF" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 6
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aG" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aH" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aI" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/obj/machinery/atmospherics/pipe/simple/hidden/black{
+ icon_state = "intact";
+ dir = 10
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"aJ" = (
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aK" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aL" = (
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aM" = (
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aN" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aO" = (
+/obj/machinery/power/terminal{
+ dir = 4
+ },
+/obj/structure/cable/heavyduty{
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aP" = (
+/obj/machinery/power/smes/buildable,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aQ" = (
+/obj/machinery/power/terminal{
+ dir = 8
+ },
+/obj/structure/cable/heavyduty{
+ dir = 2;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aR" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"aS" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aT" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aU" = (
+/obj/structure/cable/heavyduty{
+ dir = 2;
+ icon_state = "0-4"
+ },
+/obj/structure/cable/yellow,
+/obj/structure/cable/yellow{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aV" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aW" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-8";
+ tag = "icon-1-4"
+ },
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"aX" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"aY" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"aZ" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"ba" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"bb" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"bc" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 9
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"bd" = (
+/turf/simulated/shuttle/wall,
+/area/shuttle/aerostat/docked)
+"be" = (
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bf" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bg" = (
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"bh" = (
+/obj/machinery/door/airlock/external,
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"bi" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bj" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bk" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bl" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bm" = (
+/obj/structure/old_roboprinter,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bn" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bo" = (
+/obj/structure/grille,
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bp" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 4
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bq" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"br" = (
+/obj/structure/bed/chair/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"bs" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 1
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bt" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"bu" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 10
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"bv" = (
+/turf/simulated/wall/virgo2,
+/area/tether_away/aerostat/inside)
+"bw" = (
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/tether_away_spawner/aerostat_inside,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bx" = (
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"by" = (
+/obj/machinery/recharge_station,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bz" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bA" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bB" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bC" = (
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bD" = (
+/obj/machinery/portable_atmospherics/canister/empty/oxygen,
+/obj/effect/floor_decal/industrial/outline/blue,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bE" = (
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bF" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 6
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bG" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 10
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bH" = (
+/obj/structure/bed/chair/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"bI" = (
+/obj/structure/closet/emcloset,
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"bJ" = (
+/obj/structure/table/standard,
+/obj/random/cargopod,
+/obj/random/junk,
+/obj/random/maintenance,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bK" = (
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bL" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bM" = (
+/obj/machinery/atmospherics/binary/algae_farm,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bN" = (
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/obj/machinery/atmospherics/portables_connector{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bO" = (
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/obj/machinery/atmospherics/portables_connector{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bP" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bQ" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bR" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bS" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bT" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 5
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bU" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 9
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bV" = (
+/obj/structure/bed/chair,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bW" = (
+/obj/structure/bed/chair{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bX" = (
+/obj/machinery/portable_atmospherics/canister/empty/oxygen,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"bY" = (
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"bZ" = (
+/obj/tether_away_spawner/aerostat_inside,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"ca" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cb" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/machinery/light/small,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cc" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cd" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ce" = (
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2{
+ hard_corner = 1;
+ icon_state = "void-hc"
+ },
+/area/tether_away/aerostat/inside)
+"cf" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/shuttle_connector/aerostat,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cg" = (
+/obj/machinery/door/airlock/multi_tile/metal{
+ icon_state = "door_closed";
+ dir = 1
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ch" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ci" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cj" = (
+/obj/machinery/computer/shuttle_control/aerostat_shuttle,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 1
+ },
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"ck" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/multi_tile/metal{
+ dir = 1;
+ hackProof = 1;
+ icon_state = "door_locked";
+ locked = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cl" = (
+/obj/machinery/light,
+/turf/simulated/shuttle/floor/yellow,
+/area/shuttle/aerostat/docked)
+"cm" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-8";
+ tag = "icon-1-4"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cn" = (
+/obj/machinery/door/airlock/multi_tile/metal{
+ icon_state = "door_closed";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"co" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cp" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/airlock/multi_tile/metal{
+ icon_state = "door_closed";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cq" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cr" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/bed/chair,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cs" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ct" = (
+/obj/structure/bed/chair{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/gibs,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cu" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 5
+ },
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cv" = (
+/turf/unsimulated/floor/sky/virgo2_sky,
+/area/shuttle/excursion/away_aerostat)
+"cw" = (
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cx" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"cy" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"cz" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cA" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cB" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cC" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cD" = (
+/obj/machinery/cryopod/robot,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cE" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cF" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cG" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/obj/item/trash/candle,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cH" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/obj/item/trash/candle,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cI" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 4
+ },
+/obj/item/trash/candle,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cJ" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 1
+ },
+/obj/item/trash/candle,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cK" = (
+/obj/machinery/recharge_station,
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cL" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cM" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cN" = (
+/obj/structure/table/standard,
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cQ" = (
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cR" = (
+/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide,
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cS" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cT" = (
+/obj/effect/floor_decal/industrial/warning/dust/corner,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cU" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"cV" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/drip,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cW" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cX" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cY" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"cZ" = (
+/obj/effect/blocker,
+/turf/unsimulated/floor/sky/virgo2_sky,
+/area/tether_away/aerostat)
+"da" = (
+/obj/effect/floor_decal/plaque{
+ desc = "A plaque memorializing the 2551 crew of the Remmi Aerostat. It appears they were the final crew, and 'they will be missed'.";
+ name = "memorial plaque";
+ pixel_y = -32
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"db" = (
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dc" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dd" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 5
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"de" = (
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"df" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dg" = (
+/obj/machinery/power/solar,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dh" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"di" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dj" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dk" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dl" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dm" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dn" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"do" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dp" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dq" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dr" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "2-4"
+ },
+/obj/effect/decal/cleanable/cobweb,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"ds" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"dt" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"du" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dv" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "0-8"
+ },
+/obj/structure/cable/yellow,
+/obj/structure/cable/yellow{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dw" = (
+/obj/machinery/power/solar_control,
+/obj/structure/cable/yellow,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dx" = (
+/obj/machinery/power/tracker,
+/obj/structure/cable/yellow,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dy" = (
+/obj/structure/cable/heavyduty{
+ icon_state = "1-2"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"dz" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dA" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dB" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dC" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dD" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dE" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 10
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dF" = (
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dG" = (
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dH" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 6
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dI" = (
+/obj/structure/cable/yellow{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/solar,
+/obj/effect/floor_decal/industrial/warning/dust,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"dJ" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 6
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"eE" = (
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/random/toolbox,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"fl" = (
+/obj/random/contraband,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"gD" = (
+/obj/tether_away_spawner/aerostat_inside,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"hd" = (
+/obj/random/contraband,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"kF" = (
+/obj/random/action_figure,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"tZ" = (
+/obj/structure/table/standard,
+/obj/random/powercell,
+/obj/random/contraband,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ub" = (
+/obj/effect/floor_decal/rust,
+/obj/random/powercell,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"uU" = (
+/obj/structure/table/standard,
+/obj/item/weapon/gun/energy/taser/xeno,
+/obj/random/cigarettes,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"xA" = (
+/obj/random/firstaid,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"AS" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"Du" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 1
+ },
+/obj/random/cigarettes,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"DF" = (
+/obj/random/drinkbottle,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"DK" = (
+/obj/effect/floor_decal/industrial/warning/dust{
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/obj/random/powercell,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat)
+"Fg" = (
+/obj/random/firstaid,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"Gs" = (
+/obj/structure/table/standard,
+/obj/random/material,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"Hl" = (
+/obj/random/tank,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"Jb" = (
+/obj/random/toy,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"JG" = (
+/obj/structure/metal_edge,
+/turf/unsimulated/floor/sky/virgo2_sky,
+/area/tether_away/aerostat)
+"Lw" = (
+/obj/structure/table/standard,
+/obj/random/powercell,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"Ly" = (
+/obj/random/material,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"Mj" = (
+/obj/random/contraband,
+/turf/simulated/floor/bluegrid/virgo2,
+/area/tether_away/aerostat/inside)
+"Qe" = (
+/obj/structure/table/standard,
+/obj/effect/decal/cleanable/cobweb2,
+/obj/random/contraband,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"UC" = (
+/obj/structure/table/standard,
+/obj/random/powercell,
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"Wk" = (
+/obj/random/drinkbottle,
+/turf/simulated/floor/plating/virgo2,
+/area/tether_away/aerostat/inside)
+"Ym" = (
+/obj/structure/table/standard,
+/obj/item/weapon/gun/energy/taser/xeno,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+"ZK" = (
+/obj/random/plushie,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/inside)
+
+(1,1,1) = {"
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+"}
+(2,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(3,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(4,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(5,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(6,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(7,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(8,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(9,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(10,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(11,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(12,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(13,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(14,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(15,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+df
+df
+df
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(16,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+df
+df
+df
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(17,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dj
+dx
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(18,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+aG
+dw
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dj
+dx
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(19,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+aG
+dw
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(20,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ag
+aB
+aB
+aB
+aB
+aH
+df
+aY
+bb
+bb
+bb
+bb
+bu
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(21,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ag
+aB
+aB
+aB
+aB
+aH
+df
+aY
+bb
+bb
+bb
+bb
+bu
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(22,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(23,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(24,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(25,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(26,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cv
+cv
+cv
+cv
+cv
+cv
+cv
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(27,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cc
+cY
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(28,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+cf
+cY
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(29,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+cc
+cY
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(30,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+bv
+cw
+cw
+bv
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(31,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+bK
+bv
+cw
+cw
+bv
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(32,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+bK
+an
+bv
+cw
+cw
+bv
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(33,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+bK
+bK
+bK
+bv
+cw
+cw
+bv
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(34,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+kF
+bK
+bK
+an
+bv
+cX
+da
+bv
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aq
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+cx
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(35,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+av
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+dI
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+ao
+ao
+ap
+bK
+bK
+bv
+cw
+cw
+bv
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+as
+aE
+aE
+aE
+aE
+aS
+de
+aG
+bt
+bt
+bt
+bt
+cy
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(36,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ay
+dq
+dq
+dq
+dq
+aT
+dq
+aZ
+dq
+DK
+dq
+dq
+dJ
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+ao
+be
+an
+bv
+cw
+cw
+bv
+be
+ao
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+av
+aD
+aD
+aD
+aD
+dk
+de
+dk
+aD
+aD
+aD
+aD
+dI
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(37,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bK
+bv
+cw
+cw
+bv
+be
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ay
+dq
+dq
+dq
+dq
+aT
+dq
+aZ
+dq
+dq
+dq
+dq
+dJ
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(38,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+gD
+be
+be
+be
+an
+bv
+be
+cg
+bv
+bv
+bK
+be
+be
+ao
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(39,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dp
+aU
+ba
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bv
+bK
+bK
+bK
+bv
+bK
+bK
+be
+be
+be
+gD
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(40,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+du
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+ar
+be
+be
+bC
+bK
+bK
+bK
+bC
+ad
+bK
+bK
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dp
+aU
+ba
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(41,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ax
+aV
+ax
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+ao
+ao
+ao
+be
+be
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bK
+bK
+bv
+an
+DF
+an
+ZK
+an
+bK
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+du
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(42,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+ds
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+ac
+ac
+ac
+ce
+bl
+bl
+bl
+bl
+bl
+bl
+bv
+bJ
+bJ
+bJ
+bJ
+bJ
+bJ
+bv
+bK
+bK
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dq
+aV
+dq
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(43,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+ab
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+bz
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bz
+bB
+bB
+bB
+bB
+bB
+bB
+cd
+ch
+bK
+bv
+bJ
+bJ
+bJ
+bJ
+bJ
+bv
+bl
+bl
+bl
+bl
+bl
+bl
+ce
+ac
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+ac
+ac
+ds
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(44,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+ac
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bo
+bf
+ac
+ac
+ac
+ce
+bn
+bn
+bn
+bn
+bn
+bn
+bn
+bn
+bv
+bK
+bK
+bK
+bK
+bK
+bK
+bv
+ci
+co
+cd
+bB
+bB
+bB
+bB
+bB
+bz
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bz
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+aW
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(45,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+bi
+bl
+bl
+bl
+bl
+bl
+bl
+bp
+bv
+UC
+bK
+bK
+bK
+bK
+bJ
+bv
+ci
+ci
+bv
+at
+bK
+bK
+bK
+au
+bv
+ah
+aj
+aj
+aj
+aj
+aj
+aj
+al
+ce
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bo
+bf
+ac
+ac
+ac
+ac
+ac
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(46,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bL
+bQ
+bL
+bQ
+bL
+bL
+bv
+ci
+ci
+bv
+cr
+bQ
+bL
+bQ
+bL
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(47,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+aF
+bR
+aF
+bR
+bK
+aF
+bv
+ci
+ci
+bv
+az
+bR
+az
+bR
+az
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(48,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bN
+bR
+bN
+bR
+bK
+bN
+bv
+ci
+ci
+bv
+bN
+bR
+bN
+bR
+bN
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(49,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bM
+bR
+bM
+bR
+xA
+bM
+bv
+ci
+ci
+bv
+bM
+bR
+bM
+bR
+bM
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(50,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bO
+bR
+bO
+bR
+bK
+bO
+bv
+ci
+ci
+bv
+bO
+bR
+bO
+bR
+bO
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(51,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+aI
+bR
+aI
+bR
+bX
+aI
+bv
+ci
+ci
+bv
+aA
+bR
+aA
+bR
+aA
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(52,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+be
+bk
+bn
+bn
+bn
+bn
+bn
+bn
+bs
+bv
+cL
+bS
+bP
+bS
+bP
+bP
+bv
+ci
+ci
+bv
+cL
+bS
+bP
+bS
+bP
+bv
+cS
+bn
+bn
+bn
+bn
+bn
+bn
+bs
+be
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(53,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bC
+bv
+ac
+ce
+ci
+cp
+ce
+ac
+bC
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(54,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+bv
+bm
+bm
+bm
+cB
+bv
+bD
+bD
+bD
+bD
+bq
+be
+fl
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+cQ
+bq
+be
+be
+be
+be
+bE
+Fg
+bj
+bD
+bD
+bD
+bD
+bv
+cU
+bm
+bm
+bm
+bv
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(55,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bv
+bK
+bK
+bK
+cB
+bv
+bn
+bn
+bn
+bn
+bs
+be
+be
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+bx
+bq
+be
+be
+be
+be
+be
+be
+bk
+bn
+bn
+bn
+bn
+bv
+cz
+bK
+bK
+bK
+bv
+be
+be
+be
+be
+be
+bf
+bf
+bf
+bf
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(56,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+bf
+bf
+bf
+bf
+be
+be
+be
+be
+be
+be
+be
+bv
+bw
+bw
+bw
+cB
+bC
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+bY
+bq
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bC
+cz
+bw
+bw
+bw
+bv
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(57,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+Wk
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bv
+cF
+bP
+bP
+cC
+bv
+be
+be
+be
+be
+be
+be
+cG
+bl
+bl
+cI
+be
+bj
+ac
+ac
+ce
+ci
+ck
+ce
+ac
+ac
+be
+be
+be
+be
+ct
+bi
+bl
+bl
+bp
+be
+be
+bv
+cA
+bP
+bP
+cb
+bv
+be
+be
+be
+be
+gD
+be
+be
+be
+be
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(58,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+be
+be
+bi
+bl
+bl
+bl
+bl
+bl
+bl
+bl
+bp
+bv
+bK
+bK
+bA
+bL
+bv
+bE
+be
+be
+be
+be
+be
+bj
+aw
+aw
+bq
+be
+be
+ac
+aJ
+aL
+aN
+aN
+aL
+Hl
+ac
+be
+be
+be
+be
+cW
+bj
+aw
+aw
+bq
+be
+be
+bv
+AS
+cE
+bK
+bK
+bv
+bi
+bl
+bl
+bl
+bl
+bl
+bl
+bl
+bp
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(59,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bK
+bK
+cz
+cD
+bv
+be
+be
+cG
+bl
+bl
+bl
+bF
+aw
+aw
+bT
+cI
+be
+ac
+aK
+aL
+aO
+aO
+aL
+aR
+ac
+be
+bi
+cV
+cV
+cV
+bF
+aw
+aw
+cu
+bp
+be
+bv
+cD
+cB
+bK
+bK
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(60,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bK
+bK
+cz
+cD
+bv
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+ac
+Mj
+aL
+aP
+aP
+aL
+aL
+ac
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+bv
+cD
+cB
+bK
+bK
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(61,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bK
+bK
+cz
+cD
+bv
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+ac
+aL
+bZ
+aP
+aP
+aL
+Mj
+ac
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+bv
+cD
+cB
+bK
+bK
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(62,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bK
+bK
+cz
+cD
+bv
+be
+be
+cH
+bn
+bn
+bn
+bG
+aw
+aw
+bU
+cJ
+be
+ac
+aK
+aL
+aQ
+aQ
+aL
+aR
+ac
+be
+bk
+bn
+bn
+bn
+bG
+aw
+aw
+bU
+bs
+be
+bv
+cD
+cB
+bK
+bK
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(63,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+be
+be
+bk
+bn
+bn
+bn
+bn
+bn
+bn
+bn
+bs
+bv
+bK
+bK
+cA
+bP
+bv
+be
+be
+be
+be
+be
+be
+bj
+aw
+aw
+bq
+be
+be
+ac
+aM
+aL
+aN
+aN
+aL
+aL
+ac
+be
+be
+be
+be
+be
+bj
+aw
+aw
+bq
+be
+be
+bv
+bP
+cC
+bK
+bK
+bv
+bk
+bn
+bn
+bn
+bn
+bn
+bn
+bn
+bs
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(64,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bv
+ca
+bK
+bK
+ad
+bv
+be
+be
+be
+gD
+be
+be
+cH
+bn
+bn
+cJ
+be
+bj
+ac
+ac
+ce
+ci
+ck
+ce
+ac
+ac
+be
+be
+be
+be
+be
+bk
+bn
+bn
+bs
+be
+be
+bv
+hd
+bK
+bK
+cs
+bv
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(65,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bf
+bf
+bf
+bf
+bf
+be
+be
+be
+be
+be
+be
+be
+bv
+bK
+bK
+bK
+bK
+bC
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+eE
+bq
+be
+be
+be
+gD
+be
+be
+be
+be
+be
+be
+be
+bC
+bK
+bK
+bK
+bK
+bv
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(66,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bv
+bL
+bL
+bL
+cE
+bv
+bl
+bl
+bl
+bl
+bp
+be
+be
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+bx
+bq
+be
+be
+be
+be
+be
+be
+bi
+bl
+bl
+bl
+bl
+bv
+bA
+bL
+bL
+bL
+bv
+be
+be
+be
+be
+be
+bf
+bf
+bf
+bf
+bf
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(67,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+bv
+cK
+by
+by
+Du
+bv
+bD
+bD
+bD
+bD
+bq
+be
+be
+be
+be
+be
+be
+bj
+bY
+bY
+ac
+ci
+ci
+ac
+cR
+bq
+be
+be
+be
+be
+be
+be
+bj
+bD
+bD
+bD
+bD
+bv
+cz
+by
+by
+by
+bv
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(68,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bC
+bv
+ac
+ce
+ci
+cp
+ce
+ac
+bC
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(69,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+be
+bi
+bl
+bl
+bl
+bl
+bl
+bl
+bp
+bv
+cM
+bQ
+bL
+bQ
+bL
+bL
+bv
+ci
+ci
+bv
+cM
+bQ
+bL
+bQ
+bL
+bv
+cT
+bl
+bl
+bl
+bl
+bl
+bl
+bp
+be
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(70,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+aF
+bR
+aF
+bR
+bK
+aF
+bv
+ci
+ci
+bv
+aC
+bR
+az
+bR
+az
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(71,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bN
+bR
+bN
+bR
+bK
+bN
+bv
+ci
+ci
+bv
+bN
+bR
+bN
+bR
+bN
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(72,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bM
+bR
+bM
+bR
+bX
+bM
+bv
+ci
+ci
+bv
+bM
+bR
+bM
+bR
+bM
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(73,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bO
+bR
+bO
+bR
+bX
+bO
+bv
+ci
+ci
+bv
+bO
+bR
+bO
+bR
+bO
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(74,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+aI
+bR
+aI
+bR
+bK
+aI
+bv
+ci
+ci
+bv
+aA
+bR
+aA
+bR
+aA
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(75,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+bv
+bP
+bS
+bP
+bS
+bP
+bP
+bv
+ci
+ci
+bv
+bP
+bS
+bP
+bS
+bP
+bv
+bj
+aw
+aw
+aw
+aw
+aw
+aw
+bq
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(76,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+bk
+bn
+bn
+bn
+bn
+bn
+bn
+bs
+bv
+uU
+bK
+bV
+bW
+bK
+Gs
+bv
+ci
+ci
+bv
+Gs
+bK
+bK
+bK
+Lw
+bv
+ai
+ak
+ak
+ak
+ak
+ak
+ak
+am
+ce
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+ac
+ac
+ac
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(77,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+ac
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+ac
+ce
+bl
+bl
+bl
+bl
+bl
+bl
+bl
+bl
+bv
+bK
+bK
+bK
+bK
+bK
+bK
+bv
+ci
+cq
+cd
+bB
+bB
+bB
+bB
+bB
+cd
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bz
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+aX
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(78,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+dr
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+bz
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bB
+bz
+bB
+bB
+bB
+bB
+bB
+bB
+cd
+cm
+bK
+bv
+Qe
+Ym
+Gs
+bJ
+Gs
+bv
+bn
+bn
+bn
+bn
+bn
+bn
+ce
+ac
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bo
+bf
+ac
+ac
+ac
+ac
+ds
+ac
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(79,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+ac
+ds
+ac
+ac
+ac
+ac
+bf
+bf
+ac
+ac
+bf
+bf
+ac
+ac
+bo
+bf
+ac
+ac
+ac
+ac
+ac
+ce
+bn
+bn
+bn
+bn
+bn
+bn
+bv
+cN
+bJ
+bJ
+bJ
+tZ
+bJ
+bv
+bK
+bK
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+df
+dt
+df
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(80,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+df
+dt
+df
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+ao
+ao
+be
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bv
+bK
+bK
+bv
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+du
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(81,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+du
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bC
+bK
+bK
+bK
+bC
+be
+be
+be
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dj
+dv
+dz
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(82,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dj
+dv
+dz
+ae
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+be
+be
+bv
+bK
+bK
+bK
+bv
+be
+be
+be
+be
+gD
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(83,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+dk
+de
+dk
+de
+de
+af
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+gD
+be
+be
+be
+bv
+bK
+cn
+bv
+bv
+ao
+be
+ao
+be
+be
+be
+ao
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(84,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+dk
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+be
+bv
+cw
+cw
+bv
+Ly
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bc
+df
+df
+df
+df
+dl
+df
+dl
+df
+df
+df
+df
+dE
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(85,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bc
+df
+df
+df
+df
+dl
+df
+dl
+df
+df
+df
+df
+dE
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+be
+bv
+cw
+cw
+bv
+be
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(86,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+be
+bv
+cw
+cw
+bv
+be
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(87,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+be
+bv
+cw
+cw
+bv
+be
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(88,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+be
+bv
+cw
+cw
+bv
+be
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(89,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+be
+bv
+cw
+cw
+bv
+be
+be
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(90,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+be
+bv
+cw
+cw
+bv
+Jb
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(91,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+bv
+cw
+cw
+bv
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(92,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+ac
+cc
+cY
+ac
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(93,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aa
+cc
+cY
+aa
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(94,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cc
+cY
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(95,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bd
+bd
+bd
+bd
+bd
+bh
+bh
+bd
+bd
+bd
+bd
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(96,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bd
+bI
+br
+br
+br
+bg
+bg
+br
+br
+br
+bd
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(97,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bd
+cj
+bg
+bg
+bg
+bg
+bg
+bg
+bg
+cl
+bd
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(98,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bd
+bI
+bH
+bH
+bH
+bg
+bg
+bH
+bH
+bH
+bd
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(99,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dc
+dh
+dh
+dh
+dh
+dm
+de
+dA
+dC
+dC
+dC
+dC
+dG
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+bd
+bd
+bd
+bd
+bd
+bd
+bd
+bd
+bd
+bd
+bd
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(100,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+db
+dg
+dg
+dg
+dg
+dk
+de
+dk
+dg
+dg
+dg
+dg
+dF
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dd
+di
+di
+di
+di
+dn
+dq
+dB
+dD
+dD
+dD
+dD
+dH
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(101,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dd
+di
+di
+di
+di
+dn
+dq
+dB
+dD
+dD
+dD
+dD
+dH
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(102,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+dk
+de
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+ub
+do
+dw
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(103,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+do
+dw
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dp
+dx
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(104,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+dp
+dx
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(105,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+de
+de
+de
+de
+de
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dq
+dq
+dq
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(106,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+dq
+dq
+dq
+JG
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(107,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(108,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(109,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(110,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(111,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(112,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(113,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(114,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(115,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(116,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(117,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(118,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(119,1,1) = {"
+cZ
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+aw
+cZ
+"}
+(120,1,1) = {"
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+cZ
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm
new file mode 100644
index 0000000000..e0a80783f1
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm
@@ -0,0 +1,1747 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/template_noop,
+/area/submap/virgo2/Blackshuttledown)
+"ac" = (
+/obj/effect/decal/remains/human,
+/turf/template_noop,
+/area/submap/virgo2/Blackshuttledown)
+"ad" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"ae" = (
+/obj/effect/decal/cleanable/blood,
+/turf/template_noop,
+/area/submap/virgo2/Blackshuttledown)
+"af" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"ag" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"ah" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"ai" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark6";
+ name = "Unknown Shuttle";
+ tag = "icon-dark6"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"aj" = (
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark0";
+ name = "Unknown Shuttle";
+ tag = "icon-dark0"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"ak" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark10";
+ name = "Unknown Shuttle";
+ tag = "icon-dark10"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"al" = (
+/obj/machinery/door/airlock/external{
+ density = 1;
+ frequency = 1331;
+ id_tag = "merc_shuttle_outer";
+ name = "Ship External Access";
+ req_access = list(150)
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"am" = (
+/obj/structure/shuttle/engine/heater{
+ icon_state = "heater";
+ dir = 4
+ },
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark0";
+ name = "Unknown Shuttle";
+ tag = "icon-dark0"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"an" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4;
+ icon_state = "propulsion_l"
+ },
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"ao" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/table/rack,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"ap" = (
+/obj/structure/dispenser/oxygen,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aq" = (
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"ar" = (
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"as" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"at" = (
+/obj/machinery/organ_printer/flesh,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"au" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark5";
+ name = "Unknown Shuttle";
+ tag = "icon-dark5"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"av" = (
+/obj/structure/table/steel,
+/obj/item/weapon/gun/projectile/automatic/wt550,
+/obj/item/weapon/gun/projectile/automatic/p90,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aw" = (
+/obj/machinery/door/airlock/external,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"ax" = (
+/obj/machinery/optable,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"ay" = (
+/obj/machinery/bodyscanner{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"az" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark9";
+ name = "Unknown Shuttle";
+ tag = "icon-dark9"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"aB" = (
+/mob/living/simple_animal/hostile/viscerator,
+/mob/living/simple_animal/hostile/viscerator,
+/mob/living/simple_animal/hostile/viscerator,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aC" = (
+/obj/structure/table/steel,
+/obj/item/weapon/gun/projectile/automatic/c20r,
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aD" = (
+/mob/living/simple_animal/hostile/syndicate/ranged/space,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aE" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aF" = (
+/obj/structure/table/steel,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aG" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/firstaid/surgery,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aH" = (
+/obj/structure/table/standard,
+/obj/item/weapon/tank/anesthetic,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aI" = (
+/obj/structure/table/standard,
+/obj/item/clothing/gloves/sterile,
+/obj/item/clothing/gloves/sterile,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aJ" = (
+/obj/structure/table/standard,
+/obj/item/weapon/reagent_containers/spray/sterilizine,
+/obj/item/weapon/reagent_containers/spray/sterilizine,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aK" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/box/masks,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aL" = (
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aM" = (
+/obj/structure/bed/chair/office/dark{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aN" = (
+/obj/machinery/door/airlock/security{
+ locked = 1
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aO" = (
+/obj/machinery/door/airlock/glass,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aQ" = (
+/obj/machinery/computer/communications,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aR" = (
+/obj/structure/closet/secure_closet/freezer/fridge,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aS" = (
+/obj/structure/table/steel,
+/obj/item/weapon/material/knife,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aT" = (
+/mob/living/simple_animal/hostile/syndicate/ranged{
+ desc = "Dosen't look friendly in the slightest.";
+ name = "Unknown Individual";
+ say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!");
+ speak = list("One day the'll fix that damn engine..","Next time, We're hidding on the tropical beach planet.","Wish I had better equipment...","I knew I should have been a line chef...","Fuckin' helmet keeps fogging up.","Hate this blocky ass ship.")
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aU" = (
+/obj/structure/table/steel,
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aV" = (
+/obj/structure/table/steel,
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aW" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/submap/virgo2/Blackshuttledown)
+"aX" = (
+/obj/item/weapon/stool,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"aY" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/submap/virgo2/Blackshuttledown)
+"aZ" = (
+/obj/structure/table/steel,
+/obj/item/pizzabox,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"ba" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bb" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/submap/virgo2/Blackshuttledown)
+"bc" = (
+/obj/machinery/power/apc{
+ cell_type = /obj/item/weapon/cell/hyper;
+ dir = 4;
+ name = "Unknown APC";
+ pixel_x = 24
+ },
+/turf/simulated/shuttle/wall/dark{
+ icon_state = "dark0";
+ name = "Unknown Shuttle";
+ tag = "icon-dark0"
+ },
+/area/submap/virgo2/Blackshuttledown)
+"bd" = (
+/obj/machinery/computer/area_atmos,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"be" = (
+/obj/structure/table/steel,
+/obj/item/weapon/paper{
+ info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet.";
+ name = "Operation Progress/M-53"
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bf" = (
+/obj/structure/table/steel,
+/obj/item/weapon/paper_bin,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bg" = (
+/obj/machinery/light,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bh" = (
+/obj/structure/closet/toolcloset,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bi" = (
+/obj/machinery/portable_atmospherics/canister/empty/oxygen,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bj" = (
+/obj/machinery/atmospherics/pipe/tank/oxygen,
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bk" = (
+/obj/structure/bed/chair/office/dark,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bl" = (
+/obj/structure/table/steel,
+/obj/item/weapon/gun/projectile/automatic/c20r,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bm" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bn" = (
+/mob/living/simple_animal/hostile/viscerator,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bo" = (
+/obj/structure/table/steel,
+/obj/item/weapon/gun/projectile/pistol,
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bp" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/obj/structure/bed,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bq" = (
+/mob/living/simple_animal/hostile/viscerator,
+/mob/living/simple_animal/hostile/viscerator,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"br" = (
+/obj/structure/table/steel,
+/obj/item/weapon/gun/projectile/pistol,
+/obj/item/weapon/gun/projectile/shotgun/pump,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bs" = (
+/obj/structure/toilet{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bt" = (
+/obj/machinery/light,
+/obj/structure/table/rack,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/obj/item/clothing/suit/space,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bu" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/obj/machinery/light,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"bv" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/obj/item/toy/plushie/spider,
+/turf/simulated/floor/tiled/steel,
+/area/submap/virgo2/Blackshuttledown)
+"by" = (
+/obj/structure/table/steel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+"bz" = (
+/mob/living/simple_animal/hostile/syndicate/ranged/space,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Blackshuttledown)
+
+(1,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+af
+af
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+aa
+"}
+(3,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+af
+af
+af
+af
+aa
+"}
+(4,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+af
+ab
+ab
+ab
+ab
+ab
+ab
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+ad
+ad
+af
+af
+af
+aa
+"}
+(5,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+ad
+ad
+ad
+af
+af
+af
+aa
+"}
+(6,1,1) = {"
+aa
+af
+af
+af
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+aa
+"}
+(7,1,1) = {"
+aa
+ag
+af
+af
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+ai
+aj
+aW
+aY
+aY
+bb
+aj
+au
+af
+af
+af
+af
+af
+af
+af
+ag
+af
+af
+af
+af
+af
+aa
+"}
+(8,1,1) = {"
+aa
+af
+ah
+af
+ad
+ad
+ad
+af
+af
+af
+af
+af
+ai
+aj
+aQ
+aF
+aF
+aF
+aF
+bd
+aj
+au
+af
+af
+af
+af
+af
+af
+af
+af
+ag
+af
+ad
+af
+aa
+"}
+(9,1,1) = {"
+aa
+af
+af
+af
+af
+ad
+ad
+ai
+aj
+aj
+au
+ai
+aj
+aL
+aq
+aq
+aq
+aq
+aq
+aq
+aL
+aj
+au
+ai
+aj
+aj
+au
+af
+af
+ab
+ab
+ad
+ad
+ad
+aa
+"}
+(10,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+aj
+aj
+aj
+aj
+aj
+aF
+aM
+aq
+aq
+aq
+aq
+aq
+aT
+bk
+aF
+aj
+aj
+aj
+aj
+aj
+af
+af
+ab
+ad
+ad
+ad
+ad
+aa
+"}
+(11,1,1) = {"
+aa
+af
+af
+af
+af
+ag
+af
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aO
+aO
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+af
+af
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(12,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+aj
+aj
+aj
+aq
+aB
+aq
+aN
+aq
+aL
+aq
+aq
+aL
+aq
+aN
+aq
+bn
+bq
+aj
+aj
+aj
+af
+af
+ab
+ab
+ab
+ab
+ac
+aa
+"}
+(13,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+ak
+aj
+aj
+av
+aC
+aF
+aj
+aq
+aq
+aq
+aq
+aq
+aq
+aj
+bl
+bo
+br
+aj
+aj
+az
+af
+af
+ae
+ab
+ab
+ab
+ab
+aa
+"}
+(14,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+aj
+aj
+aj
+aj
+aj
+aj
+aq
+aq
+aq
+aq
+aq
+aq
+aj
+aj
+aj
+aj
+aj
+aj
+af
+af
+af
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(15,1,1) = {"
+aa
+af
+af
+ad
+af
+af
+af
+af
+aj
+ao
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+aq
+bt
+aj
+af
+af
+af
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(16,1,1) = {"
+aa
+ad
+ad
+ad
+af
+by
+by
+by
+aj
+ap
+aq
+aq
+aq
+aq
+aq
+aE
+aq
+aq
+aE
+aq
+aq
+aq
+aq
+aD
+ap
+aj
+by
+by
+by
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(17,1,1) = {"
+aa
+ad
+ad
+af
+af
+by
+bz
+af
+aj
+aj
+aj
+aq
+aq
+aj
+aj
+aj
+aO
+aO
+aj
+aj
+aj
+aq
+aq
+aj
+aj
+aj
+bz
+af
+by
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(18,1,1) = {"
+aa
+af
+af
+af
+af
+by
+af
+af
+al
+aq
+aw
+aq
+aq
+aj
+aR
+aq
+aq
+aq
+aq
+be
+aj
+aq
+aq
+aw
+aq
+al
+af
+af
+by
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(19,1,1) = {"
+aa
+ag
+af
+af
+af
+by
+af
+af
+al
+ar
+aw
+aq
+aE
+aj
+aS
+aq
+aq
+aq
+aq
+bf
+aj
+aE
+aq
+aw
+ar
+al
+af
+af
+by
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(20,1,1) = {"
+aa
+af
+af
+af
+af
+by
+af
+bz
+aj
+aj
+aj
+aj
+aj
+aj
+aq
+aX
+aZ
+aF
+aX
+aq
+aj
+aj
+aj
+aj
+aj
+aj
+af
+bz
+by
+ab
+ab
+ac
+ab
+ab
+aa
+"}
+(21,1,1) = {"
+aa
+af
+af
+af
+af
+by
+by
+by
+aj
+aq
+aq
+aq
+aG
+aj
+as
+aX
+aF
+aF
+aX
+bg
+aj
+bm
+bp
+bm
+bm
+aj
+by
+by
+by
+ab
+ab
+ab
+ad
+ab
+aa
+"}
+(22,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+aj
+aq
+ax
+aq
+aH
+aj
+aq
+aX
+aF
+aF
+aX
+aD
+aj
+aq
+aq
+aq
+aq
+aj
+af
+af
+af
+ab
+ab
+ad
+ad
+ab
+aa
+"}
+(23,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+aj
+as
+aq
+aq
+aq
+aO
+aD
+aq
+aq
+aq
+aq
+aq
+aO
+aq
+bm
+bm
+bu
+aj
+af
+af
+af
+ab
+ad
+ad
+ad
+ab
+aa
+"}
+(24,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+aj
+aq
+aq
+aq
+aq
+aj
+aq
+aq
+aq
+aq
+aq
+aq
+aj
+aq
+aq
+aq
+aq
+aj
+af
+af
+af
+ad
+ad
+ad
+ad
+ad
+aa
+"}
+(25,1,1) = {"
+aa
+ag
+af
+af
+af
+af
+af
+af
+aj
+at
+aq
+aD
+aI
+aj
+aj
+aj
+ba
+ba
+bc
+aj
+aj
+aq
+bm
+bm
+bv
+aj
+au
+af
+af
+ad
+ad
+af
+af
+ah
+aa
+"}
+(26,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+ai
+aj
+aj
+aq
+aq
+aJ
+aj
+aU
+aF
+aq
+aq
+aq
+bh
+aj
+ba
+aj
+aj
+aj
+aj
+aj
+af
+ag
+af
+af
+af
+af
+af
+aa
+"}
+(27,1,1) = {"
+aa
+af
+af
+ah
+af
+ag
+af
+aj
+aj
+aj
+ay
+aE
+aK
+aj
+aU
+aq
+aq
+aq
+aq
+bi
+aj
+aq
+ar
+bs
+aj
+aj
+aj
+af
+af
+af
+af
+af
+af
+ag
+aa
+"}
+(28,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aV
+aq
+aq
+aq
+aq
+bj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+af
+af
+af
+af
+af
+af
+af
+aa
+"}
+(29,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+aj
+aj
+aj
+aj
+az
+af
+ak
+aj
+aq
+aq
+aq
+aD
+aj
+az
+af
+ak
+aj
+aj
+aj
+aj
+af
+ad
+ad
+af
+af
+af
+af
+aa
+"}
+(30,1,1) = {"
+aa
+af
+ad
+ad
+ad
+af
+af
+aj
+aj
+aj
+az
+af
+af
+af
+ak
+am
+am
+am
+am
+az
+af
+af
+af
+ak
+am
+am
+az
+ad
+ad
+ad
+ad
+af
+af
+af
+aa
+"}
+(31,1,1) = {"
+aa
+af
+af
+ad
+ad
+ad
+af
+ak
+am
+am
+af
+af
+af
+af
+af
+an
+an
+an
+an
+af
+af
+af
+af
+af
+an
+an
+af
+ad
+ad
+ad
+ad
+af
+af
+af
+aa
+"}
+(32,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+an
+an
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+ad
+ad
+af
+af
+af
+af
+aa
+"}
+(33,1,1) = {"
+aa
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+aa
+"}
+(34,1,1) = {"
+aa
+ab
+ac
+af
+af
+ab
+ab
+af
+af
+af
+af
+af
+ab
+ab
+ab
+ab
+af
+af
+af
+af
+af
+af
+af
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+af
+af
+af
+ab
+aa
+"}
+(35,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Boombase.dmm b/maps/tether/submaps/aerostat/submaps/Boombase.dmm
new file mode 100644
index 0000000000..867ffdc6c2
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Boombase.dmm
@@ -0,0 +1,728 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/template_noop,
+/area/submap/virgo2/BoomBase)
+"ac" = (
+/obj/effect/decal/remains/human,
+/turf/template_noop,
+/area/submap/virgo2/BoomBase)
+"ad" = (
+/obj/item/weapon/material/shard,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"ae" = (
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"af" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"ag" = (
+/obj/structure/girder,
+/obj/item/stack/rods,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"ah" = (
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/BoomBase)
+"ai" = (
+/obj/structure/closet/crate/secure/phoron,
+/obj/fiftyspawner/phoron,
+/turf/simulated/floor/plating,
+/area/submap/virgo2/BoomBase)
+"aj" = (
+/obj/structure/closet/crate/secure/phoron,
+/obj/fiftyspawner/phoron,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ak" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"al" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"am" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spider,
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"an" = (
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ao" = (
+/mob/living/simple_animal/hostile/jelly,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ap" = (
+/obj/machinery/portable_atmospherics/canister/empty/phoron,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"aq" = (
+/obj/machinery/portable_atmospherics/canister/empty/phoron,
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ar" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"as" = (
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"at" = (
+/obj/effect/spider/stickyweb,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"au" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"av" = (
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"aw" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spider/stickyweb,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ax" = (
+/obj/effect/decal/cleanable/dirt,
+/mob/living/simple_animal/hostile/jelly,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"ay" = (
+/obj/structure/table,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"az" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table/standard,
+/obj/item/weapon/tank/phoron,
+/obj/item/weapon/fuel_assembly/phoron,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"aA" = (
+/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"aB" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aC" = (
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"aD" = (
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/BoomBase)
+"aE" = (
+/obj/item/device/transfer_valve,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aF" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"aG" = (
+/obj/effect/decal/remains/human,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"aI" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aT" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aU" = (
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aV" = (
+/obj/effect/spider/stickyweb,
+/obj/item/weapon/material/shard,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/BoomBase)
+"aY" = (
+/obj/effect/spider/stickyweb,
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"aZ" = (
+/obj/effect/decal/remains/human,
+/obj/effect/decal/cleanable/ash,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/BoomBase)
+"ba" = (
+/obj/item/stack/rods,
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/BoomBase)
+
+(1,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+aB
+aB
+aB
+aB
+ab
+ab
+ab
+ab
+aB
+aB
+aB
+ab
+aa
+"}
+(3,1,1) = {"
+aa
+ac
+ab
+ab
+ab
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ab
+aa
+"}
+(4,1,1) = {"
+aa
+ab
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ab
+aa
+"}
+(5,1,1) = {"
+aa
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+av
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(6,1,1) = {"
+aa
+aB
+aB
+ba
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+af
+aB
+aB
+aB
+aB
+aa
+"}
+(7,1,1) = {"
+aa
+aB
+ah
+ah
+aF
+au
+aw
+al
+ax
+ay
+az
+an
+ae
+aD
+ae
+aB
+aB
+aB
+aB
+aa
+"}
+(8,1,1) = {"
+aa
+aB
+ah
+ai
+au
+au
+au
+al
+al
+al
+aA
+aC
+an
+an
+ag
+ae
+af
+ae
+aB
+aa
+"}
+(9,1,1) = {"
+aa
+aB
+ah
+aj
+au
+aH
+au
+au
+aT
+aT
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+af
+aB
+aa
+"}
+(10,1,1) = {"
+aa
+aB
+ah
+au
+al
+al
+au
+af
+aT
+an
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(11,1,1) = {"
+aa
+aB
+ah
+ak
+al
+au
+aT
+au
+aT
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ah
+aB
+aB
+aa
+"}
+(12,1,1) = {"
+aa
+aB
+ah
+al
+au
+af
+aT
+aT
+aB
+aB
+aB
+aB
+aB
+aB
+aI
+aB
+ae
+ah
+aB
+aa
+"}
+(13,1,1) = {"
+aa
+aB
+ah
+am
+au
+aT
+aT
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+ah
+aB
+aa
+"}
+(14,1,1) = {"
+aa
+aB
+ah
+an
+an
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+ae
+aB
+aa
+"}
+(15,1,1) = {"
+aa
+aB
+ah
+ao
+ar
+aB
+aB
+aB
+aU
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(16,1,1) = {"
+aa
+aB
+ah
+ap
+an
+aB
+aB
+aB
+aB
+aB
+aB
+aE
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(17,1,1) = {"
+aa
+aB
+ah
+aq
+an
+aB
+aB
+aB
+aB
+aB
+aB
+ad
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(18,1,1) = {"
+aa
+aB
+ah
+as
+ae
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aa
+"}
+(19,1,1) = {"
+aa
+aB
+ah
+at
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+ae
+aB
+aa
+"}
+(20,1,1) = {"
+aa
+aB
+ah
+ag
+aB
+aB
+aB
+aI
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+ae
+ah
+aB
+aa
+"}
+(21,1,1) = {"
+aa
+aB
+ah
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+ae
+aY
+ah
+aB
+aa
+"}
+(22,1,1) = {"
+aa
+aB
+af
+aB
+aB
+aB
+aB
+ah
+ah
+ah
+ah
+ah
+aB
+aB
+ae
+at
+aZ
+ba
+aB
+aa
+"}
+(23,1,1) = {"
+aa
+aB
+ag
+aB
+aB
+aB
+aB
+ae
+af
+af
+af
+af
+aB
+ae
+aV
+ae
+ah
+ah
+aB
+aa
+"}
+(24,1,1) = {"
+aa
+aG
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+aB
+af
+ae
+aB
+aB
+aB
+aB
+aB
+aB
+aG
+aa
+"}
+(25,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/CaveS.dmm b/maps/tether/submaps/aerostat/submaps/CaveS.dmm
new file mode 100644
index 0000000000..426c86125c
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/CaveS.dmm
@@ -0,0 +1,1844 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/template_noop,
+/area/submap/virgo2/CaveS)
+"c" = (
+/obj/item/ammo_casing/a45,
+/turf/template_noop,
+/area/submap/virgo2/CaveS)
+"d" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"e" = (
+/obj/item/ammo_casing/a45,
+/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,
+/turf/template_noop,
+/area/submap/virgo2/CaveS)
+"f" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"g" = (
+/obj/effect/spider/stickyweb,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"h" = (
+/obj/item/ammo_casing/a45,
+/obj/item/ammo_casing/a45,
+/turf/template_noop,
+/area/submap/virgo2/CaveS)
+"i" = (
+/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,
+/turf/template_noop,
+/area/submap/virgo2/CaveS)
+"j" = (
+/obj/item/clothing/accessory/storage/webbing,
+/obj/item/weapon/material/knife/tacknife/combatknife,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"k" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"l" = (
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"m" = (
+/mob/living/simple_animal/hostile/giant_spider/lurker,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"n" = (
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"o" = (
+/obj/effect/mine,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"q" = (
+/obj/effect/decal/cleanable/cobweb2,
+/mob/living/simple_animal/hostile/giant_spider/lurker,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"r" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"u" = (
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"v" = (
+/obj/structure/closet/crate,
+/obj/item/stack/cable_coil,
+/obj/item/stack/cable_coil,
+/obj/item/weapon/storage/toolbox,
+/obj/random/toolbox,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"w" = (
+/obj/structure/loot_pile/surface,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"x" = (
+/obj/structure/table/woodentable,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"y" = (
+/obj/machinery/power/port_gen/pacman,
+/obj/structure/cable{
+ icon_state = "0-2";
+ d2 = 2
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"z" = (
+/turf/simulated/wall,
+/area/submap/virgo2/CaveS)
+"A" = (
+/obj/structure/closet/crate,
+/obj/item/weapon/reagent_containers/hypospray,
+/obj/item/weapon/reagent_containers/glass/bottle/stoxin,
+/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
+/obj/item/weapon/reagent_containers/pill/antitox,
+/obj/item/weapon/reagent_containers/pill/antitox,
+/obj/item/weapon/reagent_containers/pill/antitox,
+/obj/item/weapon/reagent_containers/pill/paracetamol,
+/obj/random/firstaid,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"B" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ pixel_y = 0
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"C" = (
+/obj/structure/closet/crate,
+/obj/random/contraband,
+/obj/random/contraband,
+/obj/random/contraband,
+/obj/random/energy,
+/obj/item/weapon/material/star,
+/obj/item/weapon/material/star,
+/obj/item/weapon/material/star,
+/obj/item/weapon/material/star,
+/obj/item/weapon/material/star,
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"D" = (
+/obj/effect/spider/stickyweb,
+/mob/living/simple_animal/hostile/giant_spider/lurker,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/CaveS)
+"E" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"F" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+"G" = (
+/obj/machinery/computer/communications,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/CaveS)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+b
+b
+b
+b
+b
+b
+a
+"}
+(4,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+b
+b
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+d
+d
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(6,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(7,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+r
+g
+d
+d
+d
+d
+d
+d
+r
+r
+f
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+d
+d
+b
+a
+"}
+(8,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+d
+b
+a
+"}
+(9,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+j
+r
+r
+r
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+b
+b
+a
+"}
+(10,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+r
+r
+r
+r
+f
+r
+r
+r
+d
+d
+d
+d
+b
+b
+a
+"}
+(11,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+r
+r
+r
+f
+r
+r
+r
+d
+d
+d
+d
+d
+g
+r
+r
+r
+r
+r
+g
+d
+d
+d
+d
+b
+b
+a
+"}
+(12,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+r
+r
+r
+r
+d
+d
+d
+d
+d
+d
+b
+b
+a
+"}
+(13,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+g
+r
+m
+d
+r
+r
+r
+r
+d
+d
+d
+d
+d
+r
+r
+d
+m
+d
+d
+d
+d
+d
+d
+d
+b
+a
+"}
+(14,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+n
+r
+r
+d
+d
+d
+d
+d
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(15,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+d
+d
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(16,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+b
+b
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+g
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(17,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+r
+r
+d
+d
+m
+r
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(18,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+r
+r
+d
+d
+d
+r
+r
+d
+d
+d
+d
+g
+D
+r
+d
+d
+d
+d
+b
+a
+"}
+(19,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+h
+c
+b
+b
+d
+d
+d
+d
+d
+d
+r
+r
+d
+d
+d
+r
+o
+r
+d
+d
+d
+r
+r
+r
+r
+d
+d
+d
+b
+a
+"}
+(20,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+c
+b
+b
+b
+b
+d
+d
+d
+d
+d
+l
+r
+r
+m
+d
+d
+r
+r
+r
+g
+d
+r
+r
+r
+r
+g
+d
+d
+b
+b
+a
+"}
+(21,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+i
+b
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+b
+b
+a
+"}
+(22,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+r
+r
+r
+o
+r
+r
+r
+r
+d
+d
+d
+d
+d
+a
+"}
+(23,1,1) = {"
+a
+b
+b
+b
+c
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+o
+r
+r
+r
+g
+d
+d
+d
+d
+d
+d
+d
+b
+a
+"}
+(24,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+b
+b
+r
+r
+g
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+g
+g
+r
+r
+d
+d
+d
+d
+d
+d
+d
+d
+b
+a
+"}
+(25,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+e
+d
+g
+r
+r
+g
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+d
+d
+d
+d
+d
+d
+a
+"}
+(26,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+d
+d
+d
+d
+g
+r
+d
+d
+l
+r
+r
+o
+r
+r
+r
+g
+d
+d
+d
+d
+d
+r
+r
+r
+r
+f
+r
+r
+d
+d
+d
+d
+a
+"}
+(27,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+g
+r
+r
+r
+r
+r
+r
+r
+d
+d
+r
+r
+o
+d
+d
+d
+r
+r
+r
+u
+u
+u
+r
+r
+m
+d
+d
+d
+a
+"}
+(28,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+r
+r
+r
+f
+r
+d
+d
+d
+d
+q
+r
+r
+d
+d
+r
+r
+r
+u
+y
+B
+E
+u
+r
+r
+d
+d
+d
+a
+"}
+(29,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+g
+r
+r
+r
+d
+d
+d
+d
+d
+r
+r
+d
+m
+r
+u
+u
+x
+z
+z
+F
+u
+w
+r
+d
+d
+d
+a
+"}
+(30,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+d
+d
+d
+r
+r
+d
+r
+r
+k
+u
+x
+z
+z
+G
+u
+u
+d
+d
+d
+b
+a
+"}
+(31,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+d
+d
+l
+o
+r
+r
+r
+d
+d
+r
+v
+u
+u
+A
+C
+u
+u
+d
+d
+d
+b
+b
+a
+"}
+(32,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+r
+r
+w
+u
+r
+r
+u
+d
+d
+d
+b
+b
+b
+a
+"}
+(33,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+r
+d
+n
+r
+d
+d
+d
+d
+d
+d
+d
+d
+r
+r
+r
+r
+r
+d
+d
+d
+d
+b
+b
+b
+a
+"}
+(34,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+r
+d
+r
+r
+d
+d
+d
+d
+b
+b
+b
+b
+a
+"}
+(35,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+b
+b
+b
+b
+a
+"}
+(36,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+b
+d
+d
+d
+d
+d
+d
+d
+b
+b
+b
+b
+b
+a
+"}
+(37,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+b
+b
+b
+b
+b
+b
+d
+d
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(38,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+d
+d
+d
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(39,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+d
+d
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(40,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm b/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm
new file mode 100644
index 0000000000..37089e5433
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm
@@ -0,0 +1,1509 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"ac" = (
+/obj/item/weapon/fuel_assembly/deuterium,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"ad" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"ae" = (
+/obj/item/weapon/extinguisher,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"af" = (
+/obj/item/weapon/material/shard/phoron,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"ag" = (
+/obj/machinery/power/rad_collector,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"ah" = (
+/obj/item/weapon/arrow/rod,
+/obj/item/stack/material/steel,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"ai" = (
+/obj/item/stack/material/steel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"aj" = (
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"ak" = (
+/obj/structure/lattice,
+/obj/structure/girder/displaced,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"al" = (
+/obj/item/projectile/bullet/magnetic/fuelrod,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"am" = (
+/obj/item/weapon/arrow/rod,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"an" = (
+/turf/simulated/floor/water{
+ color = "#ddaa77";
+ name = "shallow water(?)"
+ },
+/area/submap/virgo2/DecoupledEngine)
+"ao" = (
+/obj/structure/lattice,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"ap" = (
+/obj/effect/floor_decal/rust,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aq" = (
+/obj/structure/girder,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"ar" = (
+/obj/structure/sign/poi/engineright{
+ dir = 1
+ },
+/turf/simulated/wall/r_wall,
+/area/submap/virgo2/DecoupledEngine)
+"as" = (
+/obj/structure/sign/poi/engineleft{
+ dir = 1
+ },
+/turf/simulated/wall/r_wall,
+/area/submap/virgo2/DecoupledEngine)
+"at" = (
+/turf/simulated/wall/r_wall,
+/area/submap/virgo2/DecoupledEngine)
+"au" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"av" = (
+/turf/simulated/wall/durasteel,
+/area/submap/virgo2/DecoupledEngine)
+"aw" = (
+/obj/structure/girder,
+/obj/item/stack/material/steel,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"ax" = (
+/obj/structure/lattice,
+/obj/structure/grille/broken,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"ay" = (
+/obj/effect/floor_decal/rust,
+/obj/item/stack/material/steel,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"az" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ tag = "icon-intact (SOUTHEAST)";
+ icon_state = "intact";
+ dir = 6
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aA" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aB" = (
+/obj/structure/shuttle/engine/heater{
+ icon_state = "heater";
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/obj/effect/decal/cleanable/cobweb2,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aC" = (
+/obj/structure/shuttle/engine/propulsion{
+ tag = "icon-propulsion_r (EAST)";
+ icon_state = "propulsion_r";
+ dir = 4
+ },
+/turf/simulated/floor/water{
+ color = "#ddaa77";
+ name = "shallow water(?)"
+ },
+/area/submap/virgo2/DecoupledEngine)
+"aD" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"aE" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"aF" = (
+/obj/structure/sign/warning/radioactive{
+ dir = 8
+ },
+/turf/simulated/wall/durasteel,
+/area/submap/virgo2/DecoupledEngine)
+"aG" = (
+/obj/machinery/fusion_fuel_compressor,
+/obj/effect/floor_decal/rust,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aH" = (
+/obj/machinery/fusion_fuel_injector/mapped,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aI" = (
+/obj/effect/decal/cleanable/blood/oil/streak{
+ amount = 0
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aJ" = (
+/obj/machinery/power/rad_collector,
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ icon_state = "warning";
+ dir = 9
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aK" = (
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ icon_state = "warning";
+ dir = 5
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aL" = (
+/obj/structure/grille/broken,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (EAST)";
+ icon_state = "phoronrwindow";
+ dir = 4
+ },
+/obj/item/weapon/material/shard/phoron,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aM" = (
+/obj/machinery/atmospherics/pipe/manifold4w/visible,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aN" = (
+/obj/structure/shuttle/engine/heater{
+ icon_state = "heater";
+ dir = 4
+ },
+/obj/effect/floor_decal/rust,
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aO" = (
+/obj/structure/shuttle/engine/propulsion{
+ icon_state = "propulsion_r";
+ dir = 4
+ },
+/turf/simulated/floor/water{
+ color = "#ddaa77";
+ name = "shallow water(?)"
+ },
+/area/submap/virgo2/DecoupledEngine)
+"aP" = (
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aQ" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ icon_state = "door_closed";
+ locked = 0;
+ name = "Engine Access";
+ req_one_access = list(11)
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aR" = (
+/obj/structure/closet/crate/oldreactor{
+ anchored = 1
+ },
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ icon_state = "warning";
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aS" = (
+/obj/structure/closet/crate/oldreactor{
+ anchored = 1
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aT" = (
+/obj/item/poi/brokenoldreactor{
+ anchored = 1
+ },
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ icon_state = "warning";
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aU" = (
+/obj/machinery/atmospherics/pipe/simple/visible,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aV" = (
+/obj/structure/grille,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (EAST)";
+ icon_state = "phoronrwindow";
+ dir = 4
+ },
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (WEST)";
+ icon_state = "phoronrwindow";
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aW" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ tag = "icon-intact (NORTHEAST)";
+ icon_state = "intact";
+ dir = 5
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aX" = (
+/obj/structure/shuttle/engine/router,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"aY" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4
+ },
+/turf/simulated/floor/water{
+ color = "#ddaa77";
+ name = "shallow water(?)"
+ },
+/area/submap/virgo2/DecoupledEngine)
+"aZ" = (
+/obj/item/stack/material/steel,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"ba" = (
+/obj/item/stack/rods,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"bb" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 2;
+ health = 1e+006
+ },
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"bc" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 2;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ health = 1e+006
+ },
+/turf/template_noop,
+/area/submap/virgo2/DecoupledEngine)
+"bd" = (
+/obj/machinery/atmospherics/pipe/tank/carbon_dioxide,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"be" = (
+/obj/effect/floor_decal/rust,
+/obj/item/projectile/bullet/magnetic/fuelrod,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bf" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/window/phoronreinforced,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (WEST)";
+ icon_state = "phoronrwindow";
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 10
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bg" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/window/phoronreinforced,
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bh" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (EAST)";
+ icon_state = "phoronrwindow";
+ dir = 4
+ },
+/obj/structure/window/phoronreinforced,
+/obj/effect/floor_decal/rust,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 6
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bi" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4
+ },
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"bj" = (
+/obj/machinery/atmospherics/tvalve/digital{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bk" = (
+/obj/machinery/atmospherics/binary/pump{
+ dir = 8
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bl" = (
+/obj/machinery/atmospherics/pipe/manifold/visible,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bm" = (
+/obj/machinery/atmospherics/pipe/simple/visible{
+ dir = 4
+ },
+/obj/structure/grille,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (EAST)";
+ icon_state = "phoronrwindow";
+ dir = 4
+ },
+/obj/structure/window/phoronreinforced,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (WEST)";
+ icon_state = "phoronrwindow";
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bn" = (
+/obj/structure/shuttle/engine/propulsion{
+ icon_state = "propulsion_l";
+ dir = 4
+ },
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"bo" = (
+/obj/effect/floor_decal/rust,
+/obj/structure/closet/crate/radiation,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bp" = (
+/obj/effect/decal/cleanable/blood/oil,
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bq" = (
+/obj/effect/floor_decal/rust,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/weapon/rcd,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"br" = (
+/obj/structure/sign/warning/radioactive,
+/turf/simulated/wall/durasteel,
+/area/submap/virgo2/DecoupledEngine)
+"bs" = (
+/obj/structure/grille,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (NORTH)";
+ icon_state = "phoronrwindow";
+ dir = 1
+ },
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (WEST)";
+ icon_state = "phoronrwindow";
+ dir = 8
+ },
+/obj/structure/window/phoronreinforced,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bt" = (
+/obj/structure/grille,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (NORTH)";
+ icon_state = "phoronrwindow";
+ dir = 1
+ },
+/obj/structure/window/phoronreinforced,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bu" = (
+/obj/structure/grille,
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (NORTH)";
+ icon_state = "phoronrwindow";
+ dir = 1
+ },
+/obj/structure/window/phoronreinforced{
+ tag = "icon-phoronrwindow (EAST)";
+ icon_state = "phoronrwindow";
+ dir = 4
+ },
+/obj/structure/window/phoronreinforced,
+/turf/simulated/floor,
+/area/submap/virgo2/DecoupledEngine)
+"bv" = (
+/obj/structure/sign/poi/engineleft,
+/turf/simulated/wall/durasteel,
+/area/submap/virgo2/DecoupledEngine)
+"bw" = (
+/obj/structure/sign/poi/engineright,
+/turf/simulated/wall/r_wall,
+/area/submap/virgo2/DecoupledEngine)
+"bx" = (
+/obj/structure/girder,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"by" = (
+/obj/structure/girder/displaced,
+/turf/simulated/floor/outdoors/rocks,
+/area/submap/virgo2/DecoupledEngine)
+"bz" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/template_noop)
+"bA" = (
+/obj/item/weapon/arrow/rod,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"bB" = (
+/obj/item/weapon/fuel_assembly/deuterium,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"bC" = (
+/obj/item/weapon/material/shard/phoron,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"bD" = (
+/obj/structure/lattice,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+"bE" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/DecoupledEngine)
+
+(1,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+am
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(3,1,1) = {"
+aa
+ac
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+aj
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(4,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+af
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+bD
+ad
+aZ
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(5,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ai
+ad
+bC
+ad
+bD
+ad
+ba
+aj
+ad
+ad
+bx
+ad
+ab
+ab
+ab
+ab
+af
+aa
+"}
+(6,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+aD
+aP
+bb
+ao
+ad
+ad
+aj
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(7,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ab
+ad
+bB
+ad
+bD
+aE
+aP
+bc
+ax
+ao
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(8,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ak
+ad
+ad
+ad
+ao
+av
+aF
+aQ
+av
+av
+av
+bD
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(9,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ah
+ad
+ad
+ad
+ad
+ao
+av
+aG
+aP
+bd
+aW
+av
+ao
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+aa
+"}
+(10,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ao
+av
+aH
+aP
+bd
+bj
+av
+ao
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+aa
+"}
+(11,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ao
+aw
+aI
+aP
+be
+aA
+av
+br
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aa
+"}
+(12,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+bB
+ax
+aJ
+aR
+bf
+aA
+bo
+bs
+ad
+ad
+bE
+ai
+ab
+ab
+ab
+aa
+"}
+(13,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ao
+ao
+aS
+bg
+bk
+bp
+bt
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aa
+"}
+(14,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ao
+ap
+aK
+aT
+bh
+aA
+aP
+bu
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+aa
+"}
+(15,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ag
+ad
+ad
+ad
+ad
+aj
+ap
+ay
+aI
+aU
+aU
+bl
+bq
+av
+ad
+ad
+ad
+ad
+bA
+ab
+ab
+aa
+"}
+(16,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+bC
+aj
+aq
+aq
+aL
+aV
+aV
+bm
+av
+bv
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+aa
+"}
+(17,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+aq
+az
+aM
+aW
+az
+aM
+aW
+bw
+ad
+bA
+ad
+by
+ad
+ab
+ab
+aa
+"}
+(18,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ar
+aA
+aA
+aN
+aN
+aA
+ay
+au
+ad
+ad
+ad
+aj
+ad
+ab
+ab
+aa
+"}
+(19,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ai
+al
+ad
+ad
+ad
+as
+aB
+aN
+aX
+aX
+aN
+aN
+aP
+ad
+ad
+aj
+ad
+ad
+ab
+ab
+aa
+"}
+(20,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+at
+aC
+aO
+aY
+bi
+bn
+ao
+aj
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+aa
+"}
+(21,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+bA
+ad
+at
+an
+an
+an
+aj
+aj
+ad
+aj
+ad
+ad
+bD
+ab
+ab
+ab
+ab
+aa
+"}
+(22,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+aj
+an
+an
+an
+aj
+aj
+ad
+aj
+aj
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(23,1,1) = {"
+aa
+ab
+ab
+ab
+ae
+ab
+ab
+ad
+ad
+ad
+bE
+ad
+aj
+an
+an
+an
+aj
+aj
+ad
+bA
+aj
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(24,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+aj
+an
+aj
+aj
+ad
+ad
+aj
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(25,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+aj
+aj
+aj
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(26,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+aj
+ad
+aj
+ad
+ad
+ad
+ab
+aj
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(27,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aa
+"}
+(28,1,1) = {"
+aa
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+aj
+ad
+ad
+ad
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aa
+"}
+(29,1,1) = {"
+aa
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+aj
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aa
+"}
+(30,1,1) = {"
+aa
+aa
+aa
+aa
+bz
+bz
+bz
+bz
+bz
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+aa
+aa
+aa
+aa
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/GovPatrol.dmm b/maps/tether/submaps/aerostat/submaps/GovPatrol.dmm
new file mode 100644
index 0000000000..f1a34cd9bd
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/GovPatrol.dmm
@@ -0,0 +1,244 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/template_noop,
+/area/submap/virgo2/GovPatrol)
+"c" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"d" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"e" = (
+/obj/item/device/radio/off,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"f" = (
+/obj/item/weapon/storage/box/flare,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"g" = (
+/obj/item/ammo_casing,
+/turf/template_noop,
+/area/submap/virgo2/GovPatrol)
+"h" = (
+/obj/item/ammo_casing,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"i" = (
+/obj/item/clothing/under/utility/sifguard,
+/obj/item/clothing/shoes/boots/jackboots,
+/obj/effect/decal/remains,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"j" = (
+/obj/item/stack/material/wood/sif,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"k" = (
+/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+"m" = (
+/obj/effect/decal/remains,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/GovPatrol)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+b
+d
+d
+d
+d
+d
+d
+d
+d
+d
+a
+"}
+(4,1,1) = {"
+a
+b
+b
+d
+d
+d
+d
+d
+h
+j
+d
+g
+a
+"}
+(5,1,1) = {"
+a
+b
+b
+d
+d
+d
+d
+d
+d
+d
+k
+d
+a
+"}
+(6,1,1) = {"
+a
+b
+b
+d
+d
+d
+e
+d
+i
+d
+d
+d
+a
+"}
+(7,1,1) = {"
+a
+b
+b
+d
+d
+d
+c
+d
+d
+d
+d
+d
+a
+"}
+(8,1,1) = {"
+a
+b
+d
+d
+d
+d
+d
+f
+d
+d
+d
+d
+a
+"}
+(9,1,1) = {"
+a
+b
+d
+d
+d
+d
+d
+h
+d
+d
+d
+d
+a
+"}
+(10,1,1) = {"
+a
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+m
+a
+"}
+(11,1,1) = {"
+a
+b
+d
+d
+d
+d
+b
+b
+b
+d
+h
+g
+a
+"}
+(12,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(13,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Lab1.dmm b/maps/tether/submaps/aerostat/submaps/Lab1.dmm
new file mode 100644
index 0000000000..fbea6fb1c6
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Lab1.dmm
@@ -0,0 +1,724 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/template_noop)
+"c" = (
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/Lab1)
+"d" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
+/obj/machinery/door/firedoor/border_only,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Lab1)
+"e" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
+/obj/machinery/door/firedoor/border_only,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Lab1)
+"f" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/border_only,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Lab1)
+"g" = (
+/obj/machinery/space_heater,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"h" = (
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"i" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"j" = (
+/obj/machinery/light/small,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"k" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/toolbox,
+/obj/random/tool,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"l" = (
+/obj/machinery/door/airlock/external,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"m" = (
+/obj/structure/table/standard,
+/obj/random/tool,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"n" = (
+/obj/machinery/vending/tool,
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"o" = (
+/obj/structure/table/rack,
+/obj/item/clothing/suit/storage/hooded/wintercoat,
+/obj/item/clothing/shoes/boots/winter,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"p" = (
+/obj/structure/table/rack,
+/obj/item/clothing/suit/storage/hooded/wintercoat,
+/obj/item/clothing/shoes/boots/winter,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"q" = (
+/obj/structure/table/standard,
+/obj/random/toolbox,
+/obj/item/weapon/cell/super,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"r" = (
+/obj/structure/closet/toolcloset,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"s" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"t" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"u" = (
+/obj/machinery/power/apc{
+ cell_type = /obj/item/weapon/cell/hyper;
+ dir = 8;
+ name = "Unknown APC";
+ operating = 0;
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-4";
+ d2 = 4
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"v" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"w" = (
+/obj/machinery/power/smes/buildable/point_of_interest,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"x" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper{
+ desc = "Gladstone for the last fucking time, We have crowbars for a REASON. Stop breaking in through the goddamn windows! We big red shiny doors for god's sakes!"
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"y" = (
+/obj/structure/table/standard,
+/obj/item/device/flashlight/lamp,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"z" = (
+/obj/machinery/vending/hydronutrients,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"A" = (
+/obj/machinery/vending/hydroseeds,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"B" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"C" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/toolbox/mechanical,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"D" = (
+/obj/structure/table/standard,
+/obj/fiftyspawner/steel,
+/obj/fiftyspawner/glass,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"E" = (
+/obj/structure/table/standard,
+/obj/item/device/multitool,
+/obj/item/clothing/glasses/welding,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"F" = (
+/obj/machinery/portable_atmospherics/hydroponics,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"G" = (
+/obj/structure/sink{
+ dir = 4;
+ icon_state = "sink";
+ pixel_x = 11;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"H" = (
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"I" = (
+/obj/item/weapon/cell/super,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"J" = (
+/obj/machinery/pros_fabricator,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"K" = (
+/obj/machinery/portable_atmospherics/hydroponics,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 8
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"L" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"M" = (
+/obj/item/weapon/storage/bag/circuits,
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"N" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"O" = (
+/obj/item/robot_parts/chest,
+/obj/item/robot_parts/l_arm,
+/obj/item/robot_parts/r_arm,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"P" = (
+/obj/structure/closet/crate/hydroponics,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"Q" = (
+/obj/structure/closet/secure_closet/hydroponics,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"R" = (
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"S" = (
+/obj/machinery/vending/robotics,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"T" = (
+/obj/structure/table/standard,
+/obj/machinery/cell_charger,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"U" = (
+/obj/machinery/optable,
+/turf/simulated/floor/tiled/steel_dirty,
+/area/submap/virgo2/Lab1)
+"V" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Lab1)
+"W" = (
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Lab1)
+
+(1,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(2,1,1) = {"
+a
+V
+c
+c
+c
+c
+c
+c
+c
+V
+V
+c
+c
+c
+c
+c
+c
+c
+V
+a
+"}
+(3,1,1) = {"
+a
+V
+d
+g
+k
+m
+q
+u
+d
+V
+V
+d
+h
+F
+K
+F
+P
+d
+V
+a
+"}
+(4,1,1) = {"
+a
+V
+e
+h
+h
+h
+h
+v
+e
+V
+V
+e
+z
+h
+h
+h
+Q
+e
+V
+a
+"}
+(5,1,1) = {"
+a
+V
+f
+h
+g
+n
+r
+w
+f
+V
+V
+f
+A
+G
+L
+h
+R
+f
+V
+a
+"}
+(6,1,1) = {"
+a
+V
+c
+i
+c
+c
+c
+c
+c
+V
+V
+c
+c
+c
+c
+i
+c
+c
+V
+a
+"}
+(7,1,1) = {"
+a
+V
+d
+h
+d
+V
+V
+V
+V
+V
+V
+V
+V
+V
+d
+h
+d
+V
+V
+a
+"}
+(8,1,1) = {"
+a
+V
+e
+h
+f
+V
+V
+V
+V
+V
+V
+V
+V
+V
+f
+h
+e
+V
+V
+a
+"}
+(9,1,1) = {"
+b
+V
+e
+j
+c
+c
+c
+c
+c
+W
+W
+c
+c
+c
+c
+N
+e
+V
+V
+b
+"}
+(10,1,1) = {"
+b
+V
+e
+h
+l
+h
+s
+h
+l
+W
+W
+l
+h
+h
+l
+h
+e
+V
+V
+b
+"}
+(11,1,1) = {"
+b
+V
+e
+h
+l
+h
+h
+h
+l
+W
+W
+l
+B
+h
+l
+h
+e
+V
+V
+b
+"}
+(12,1,1) = {"
+b
+V
+e
+j
+c
+c
+c
+c
+c
+W
+W
+c
+c
+c
+c
+N
+e
+V
+V
+b
+"}
+(13,1,1) = {"
+a
+V
+e
+h
+d
+V
+V
+V
+V
+V
+V
+V
+V
+V
+d
+h
+e
+V
+V
+a
+"}
+(14,1,1) = {"
+a
+V
+f
+h
+f
+V
+V
+V
+V
+V
+V
+V
+V
+V
+f
+h
+f
+V
+V
+a
+"}
+(15,1,1) = {"
+a
+V
+c
+i
+c
+c
+c
+c
+c
+V
+V
+c
+c
+c
+c
+i
+c
+c
+V
+a
+"}
+(16,1,1) = {"
+a
+V
+d
+h
+h
+o
+t
+x
+d
+V
+V
+d
+C
+H
+h
+h
+S
+d
+V
+a
+"}
+(17,1,1) = {"
+a
+V
+e
+h
+h
+h
+h
+h
+e
+V
+V
+e
+D
+I
+h
+h
+T
+e
+V
+a
+"}
+(18,1,1) = {"
+a
+V
+f
+h
+h
+p
+t
+y
+f
+V
+V
+f
+E
+J
+M
+O
+U
+f
+V
+a
+"}
+(19,1,1) = {"
+a
+V
+c
+c
+c
+c
+c
+c
+c
+V
+V
+c
+c
+c
+c
+c
+c
+c
+V
+a
+"}
+(20,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/MCamp1.dmm b/maps/tether/submaps/aerostat/submaps/MCamp1.dmm
new file mode 100644
index 0000000000..f69013322c
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/MCamp1.dmm
@@ -0,0 +1,557 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/template_noop,
+/area/submap/virgo2/MilitaryCamp1)
+"c" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"d" = (
+/obj/structure/flora/bush,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"e" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"f" = (
+/obj/item/stack/rods,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"g" = (
+/obj/item/weapon/material/shard,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"h" = (
+/obj/effect/decal/remains,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"i" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"j" = (
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"k" = (
+/obj/effect/mine,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"l" = (
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"m" = (
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"n" = (
+/obj/structure/table/standard,
+/obj/item/weapon/gun/energy/gun,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"o" = (
+/obj/effect/mine,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"q" = (
+/obj/structure/table/standard,
+/obj/item/weapon/gun/projectile/automatic/c20r,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"r" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/box/syndie_kit/space,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"s" = (
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"t" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"w" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"x" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"y" = (
+/obj/machinery/computer/security,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"z" = (
+/obj/machinery/computer/message_monitor,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"A" = (
+/obj/machinery/light,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"B" = (
+/obj/structure/door_assembly,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"C" = (
+/obj/structure/table/standard,
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"D" = (
+/obj/machinery/light,
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"E" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/MilitaryCamp1)
+"J" = (
+/obj/effect/mine,
+/turf/template_noop,
+/area/submap/virgo2/MilitaryCamp1)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+c
+c
+c
+b
+b
+b
+b
+c
+e
+c
+c
+c
+c
+b
+b
+c
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+h
+c
+c
+c
+b
+b
+c
+c
+k
+c
+c
+c
+c
+k
+c
+h
+c
+a
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+c
+c
+k
+c
+g
+c
+c
+c
+c
+c
+d
+c
+c
+c
+c
+a
+"}
+(5,1,1) = {"
+a
+c
+c
+c
+c
+c
+j
+j
+j
+l
+l
+x
+j
+j
+c
+c
+c
+k
+d
+a
+"}
+(6,1,1) = {"
+a
+k
+c
+c
+f
+j
+j
+j
+j
+j
+j
+j
+j
+j
+j
+c
+c
+c
+b
+a
+"}
+(7,1,1) = {"
+a
+c
+c
+k
+j
+j
+m
+r
+j
+i
+s
+s
+w
+C
+j
+j
+c
+c
+J
+a
+"}
+(8,1,1) = {"
+a
+d
+c
+c
+j
+j
+s
+l
+j
+j
+t
+j
+s
+m
+j
+j
+j
+c
+c
+a
+"}
+(9,1,1) = {"
+a
+e
+c
+c
+l
+l
+o
+l
+j
+y
+A
+j
+s
+s
+j
+j
+j
+c
+c
+a
+"}
+(10,1,1) = {"
+a
+k
+c
+c
+j
+l
+l
+l
+w
+s
+s
+j
+s
+i
+E
+l
+c
+k
+e
+a
+"}
+(11,1,1) = {"
+a
+c
+c
+f
+j
+j
+i
+s
+s
+s
+i
+j
+B
+s
+l
+l
+g
+c
+c
+a
+"}
+(12,1,1) = {"
+a
+c
+e
+c
+j
+j
+j
+t
+j
+z
+A
+j
+s
+s
+j
+j
+j
+f
+c
+a
+"}
+(13,1,1) = {"
+a
+c
+k
+c
+l
+j
+n
+s
+j
+j
+t
+j
+s
+D
+j
+j
+j
+c
+k
+a
+"}
+(14,1,1) = {"
+a
+b
+c
+c
+j
+j
+q
+s
+j
+i
+s
+s
+s
+m
+j
+j
+c
+c
+c
+a
+"}
+(15,1,1) = {"
+a
+b
+c
+c
+g
+j
+j
+j
+j
+j
+j
+j
+j
+j
+j
+c
+k
+c
+c
+a
+"}
+(16,1,1) = {"
+a
+b
+h
+c
+c
+c
+j
+j
+x
+j
+j
+x
+j
+j
+c
+c
+c
+h
+c
+a
+"}
+(17,1,1) = {"
+a
+b
+b
+k
+c
+k
+c
+c
+c
+c
+c
+c
+c
+g
+k
+c
+c
+c
+b
+a
+"}
+(18,1,1) = {"
+a
+b
+b
+c
+c
+c
+d
+c
+k
+c
+c
+c
+c
+c
+c
+k
+c
+b
+b
+a
+"}
+(19,1,1) = {"
+a
+b
+b
+b
+c
+k
+c
+c
+c
+c
+c
+c
+c
+e
+c
+c
+b
+b
+b
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/MHR.dmm b/maps/tether/submaps/aerostat/submaps/MHR.dmm
new file mode 100644
index 0000000000..5e39209496
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/MHR.dmm
@@ -0,0 +1,552 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/template_noop,
+/area/submap/virgo2/MHR)
+"c" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/template_noop)
+"d" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"e" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/MHR)
+"f" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"g" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/MHR)
+"h" = (
+/obj/structure/table/rack,
+/obj/item/weapon/storage/backpack,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"i" = (
+/obj/structure/table/standard,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"j" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper{
+ info = "Do not enter the cave. The estimated active time of the Vicerators is much longer due to the improvements on the rotor bearings. It's estimated to be roughly a few months before we start to see any chancces of mechanical failure. ";
+ name = "NOTICE: DO NOT ENTER"
+ },
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"k" = (
+/obj/effect/decal/cleanable/cobweb2,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"l" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"m" = (
+/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"n" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"o" = (
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"p" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"q" = (
+/obj/effect/decal/remains/robot,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"r" = (
+/obj/effect/decal/remains,
+/obj/item/clothing/mask/gas/explorer,
+/obj/item/weapon/material/twohanded/fireaxe,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+"s" = (
+/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,
+/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2{
+ outdoors = 0
+ },
+/area/submap/virgo2/MHR)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+d
+d
+d
+d
+b
+b
+b
+e
+e
+e
+e
+e
+b
+b
+b
+b
+b
+b
+a
+"}
+(4,1,1) = {"
+c
+d
+d
+d
+d
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+b
+b
+b
+a
+"}
+(5,1,1) = {"
+c
+d
+d
+d
+b
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+b
+b
+a
+"}
+(6,1,1) = {"
+c
+d
+d
+d
+d
+e
+e
+e
+e
+e
+p
+d
+d
+l
+e
+e
+e
+e
+b
+a
+"}
+(7,1,1) = {"
+c
+d
+d
+d
+h
+e
+e
+e
+e
+e
+l
+d
+d
+d
+f
+e
+e
+e
+b
+a
+"}
+(8,1,1) = {"
+c
+d
+d
+d
+i
+e
+e
+e
+e
+d
+d
+d
+d
+d
+e
+e
+e
+e
+b
+a
+"}
+(9,1,1) = {"
+c
+d
+d
+d
+j
+e
+e
+e
+e
+m
+d
+d
+n
+d
+e
+e
+e
+e
+b
+a
+"}
+(10,1,1) = {"
+c
+d
+d
+d
+e
+e
+e
+e
+e
+k
+d
+d
+d
+d
+s
+e
+e
+e
+b
+a
+"}
+(11,1,1) = {"
+c
+d
+d
+d
+e
+e
+e
+e
+e
+e
+q
+d
+d
+d
+d
+e
+e
+e
+b
+a
+"}
+(12,1,1) = {"
+c
+d
+d
+d
+e
+e
+e
+e
+e
+e
+f
+d
+d
+s
+d
+e
+e
+e
+b
+a
+"}
+(13,1,1) = {"
+c
+d
+d
+f
+e
+e
+e
+e
+e
+o
+d
+l
+d
+d
+d
+e
+e
+e
+b
+a
+"}
+(14,1,1) = {"
+c
+d
+d
+d
+d
+e
+e
+e
+d
+d
+d
+d
+d
+d
+l
+e
+e
+b
+b
+a
+"}
+(15,1,1) = {"
+c
+d
+f
+d
+d
+d
+d
+d
+d
+d
+d
+d
+d
+q
+e
+e
+e
+b
+b
+a
+"}
+(16,1,1) = {"
+a
+e
+e
+g
+d
+d
+d
+d
+d
+d
+d
+d
+d
+e
+e
+e
+e
+b
+b
+a
+"}
+(17,1,1) = {"
+a
+e
+e
+e
+e
+e
+e
+e
+k
+d
+d
+r
+e
+e
+e
+e
+e
+b
+b
+a
+"}
+(18,1,1) = {"
+a
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+b
+b
+b
+b
+a
+"}
+(19,1,1) = {"
+a
+b
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+e
+b
+b
+b
+b
+b
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Mudpit.dmm b/maps/tether/submaps/aerostat/submaps/Mudpit.dmm
new file mode 100644
index 0000000000..e1bea2f22c
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Mudpit.dmm
@@ -0,0 +1,317 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/obj/effect/decal/cleanable/liquid_fuel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"c" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"d" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"e" = (
+/obj/effect/decal/cleanable/liquid_fuel,
+/obj/effect/decal/cleanable/liquid_fuel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"f" = (
+/obj/effect/decal/cleanable/liquid_fuel,
+/obj/effect/decal/cleanable/liquid_fuel,
+/obj/effect/decal/cleanable/liquid_fuel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"g" = (
+/obj/effect/decal/remains/mouse,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"h" = (
+/obj/effect/decal/remains/mouse,
+/obj/effect/decal/cleanable/liquid_fuel,
+/obj/effect/decal/cleanable/liquid_fuel,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"i" = (
+/obj/effect/decal/cleanable/liquid_fuel,
+/turf/template_noop,
+/area/template_noop)
+"j" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"k" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"l" = (
+/obj/machinery/portable_atmospherics/canister/empty/phoron,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"m" = (
+/obj/effect/decal/remains,
+/obj/item/clothing/suit/space/void/merc/fire,
+/obj/item/clothing/head/helmet/space/void/merc/fire,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+"n" = (
+/obj/effect/decal/mecha_wreckage/ripley/firefighter,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Mudpit)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+c
+c
+i
+i
+i
+c
+g
+c
+c
+a
+a
+b
+a
+"}
+(3,1,1) = {"
+a
+c
+c
+c
+b
+b
+b
+c
+c
+c
+c
+c
+c
+b
+a
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+c
+b
+j
+j
+j
+c
+c
+c
+c
+a
+a
+"}
+(5,1,1) = {"
+a
+c
+b
+c
+c
+c
+j
+j
+j
+j
+c
+c
+c
+c
+a
+"}
+(6,1,1) = {"
+a
+a
+c
+c
+c
+j
+j
+j
+j
+j
+c
+c
+c
+g
+a
+"}
+(7,1,1) = {"
+a
+a
+c
+g
+j
+j
+j
+k
+l
+j
+j
+c
+c
+c
+a
+"}
+(8,1,1) = {"
+a
+c
+c
+c
+j
+j
+c
+c
+c
+c
+g
+b
+c
+c
+a
+"}
+(9,1,1) = {"
+a
+b
+b
+c
+d
+c
+c
+c
+m
+c
+c
+b
+b
+c
+a
+"}
+(10,1,1) = {"
+a
+b
+b
+c
+b
+c
+c
+c
+c
+c
+c
+b
+b
+a
+a
+"}
+(11,1,1) = {"
+a
+b
+c
+c
+c
+c
+g
+c
+n
+c
+c
+b
+c
+c
+a
+"}
+(12,1,1) = {"
+a
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+d
+c
+c
+a
+"}
+(13,1,1) = {"
+a
+e
+e
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(14,1,1) = {"
+a
+e
+f
+h
+c
+c
+a
+a
+i
+c
+c
+c
+c
+b
+a
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm
new file mode 100644
index 0000000000..fb2cb01a75
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm
@@ -0,0 +1,2438 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/mob/living/simple_animal/hostile/viscerator{
+ returns_home = 1
+ },
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/template_noop,
+/area/template_noop)
+"ac" = (
+/obj/effect/decal/remains,
+/turf/template_noop,
+/area/submap/virgo2/Rockybase)
+"ad" = (
+/turf/template_noop,
+/area/submap/virgo2/Rockybase)
+"ae" = (
+/obj/machinery/door/airlock/external,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"af" = (
+/mob/living/simple_animal/hostile/malf_drone{
+ desc = "An automated combat drone with an aged apperance.";
+ returns_home = 1
+ },
+/turf/template_noop,
+/area/submap/virgo2/Rockybase)
+"ag" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/Rockybase)
+"ah" = (
+/obj/machinery/porta_turret/stationary,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"ai" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"aj" = (
+/obj/machinery/light,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"ak" = (
+/obj/machinery/shower{
+ dir = 4;
+ icon_state = "shower";
+ pixel_x = 5;
+ pixel_y = 0
+ },
+/obj/structure/curtain/open/shower,
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"al" = (
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/Rockybase)
+"am" = (
+/obj/structure/sign/securearea,
+/turf/simulated/wall/virgo2,
+/area/submap/virgo2/Rockybase)
+"an" = (
+/turf/simulated/floor/plating/virgo2,
+/area/template_noop)
+"ao" = (
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ap" = (
+/obj/machinery/shower{
+ dir = 8;
+ icon_state = "shower";
+ pixel_x = -5;
+ pixel_y = 0
+ },
+/obj/structure/curtain/open/shower,
+/obj/item/weapon/soap,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aq" = (
+/obj/structure/table/woodentable,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ar" = (
+/obj/structure/table/woodentable,
+/obj/item/device/flashlight/lamp,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"as" = (
+/obj/structure/closet{
+ icon_closed = "cabinet_closed";
+ icon_opened = "cabinet_open";
+ icon_state = "cabinet_closed"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"at" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"au" = (
+/obj/structure/table/woodentable,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"av" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/obj/item/toy/plushie/spider,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aw" = (
+/obj/structure/closet/l3closet/janitor,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ax" = (
+/mob/living/bot/cleanbot{
+ faction = "malf_drone"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ay" = (
+/obj/item/weapon/stool,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"az" = (
+/obj/item/weapon/storage/belt/janitor,
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aA" = (
+/obj/structure/table/standard,
+/obj/item/device/laptop,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aB" = (
+/obj/structure/table/standard,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aC" = (
+/obj/structure/table/rack,
+/obj/item/weapon/gun/projectile/pistol,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aD" = (
+/obj/structure/table/rack,
+/obj/item/weapon/gun/energy/gun/taser,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aE" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aF" = (
+/obj/machinery/vending/coffee,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aG" = (
+/obj/structure/table/rack,
+/obj/item/weapon/gun/projectile/shotgun/pump/combat,
+/obj/item/weapon/gun/projectile/shotgun/pump/combat,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aH" = (
+/obj/machinery/vending/hydronutrients,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aI" = (
+/obj/structure/closet/crate/hydroponics,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aJ" = (
+/obj/machinery/shower{
+ dir = 4;
+ icon_state = "shower";
+ pixel_x = 5;
+ pixel_y = 0
+ },
+/obj/structure/curtain/open/shower,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aK" = (
+/obj/machinery/shower{
+ dir = 8;
+ icon_state = "shower";
+ pixel_x = -5;
+ pixel_y = 0
+ },
+/obj/structure/curtain/open/shower,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aL" = (
+/obj/structure/janitorialcart,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aM" = (
+/obj/structure/table/standard,
+/obj/item/weapon/grenade/chem_grenade/cleaner,
+/obj/item/weapon/grenade/chem_grenade/cleaner,
+/obj/item/weapon/grenade/chem_grenade/cleaner,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aN" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aO" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper{
+ info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore.";
+ name = "Note"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aP" = (
+/obj/structure/bed/chair{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aQ" = (
+/obj/machinery/vending/security,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aR" = (
+/obj/structure/table/rack,
+/obj/item/weapon/storage/box/shotgunshells,
+/obj/item/weapon/storage/box/shotgunshells,
+/obj/item/weapon/storage/box/shotgunshells,
+/obj/item/ammo_magazine/m10mm,
+/obj/item/ammo_magazine/m10mm,
+/obj/item/ammo_magazine/m10mm,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aS" = (
+/obj/structure/sink{
+ dir = 4;
+ icon_state = "sink";
+ pixel_x = 11;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aT" = (
+/obj/machinery/shower{
+ dir = 8;
+ icon_state = "shower";
+ pixel_x = -5;
+ pixel_y = 0
+ },
+/obj/structure/curtain/open/shower,
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aU" = (
+/obj/item/mecha_parts/part/gygax_left_leg,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aV" = (
+/obj/machinery/light,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aW" = (
+/obj/structure/bed,
+/obj/item/weapon/bedsheet,
+/obj/item/weapon/gun/projectile/pistol,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aX" = (
+/obj/structure/closet/crate/trashcart,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aY" = (
+/obj/structure/loot_pile/maint/trash,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"aZ" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/bag/trash,
+/obj/item/weapon/storage/bag/trash,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ba" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper_bin,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bb" = (
+/obj/machinery/light,
+/obj/structure/table/standard,
+/obj/item/weapon/pen,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bc" = (
+/obj/structure/table/rack,
+/obj/item/weapon/gun/projectile/automatic/c20r,
+/obj/item/weapon/gun/projectile/automatic/c20r,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bd" = (
+/obj/machinery/portable_atmospherics/hydroponics,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"be" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bf" = (
+/mob/living/bot/farmbot{
+ faction = "malf_drone"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bg" = (
+/obj/machinery/door/airlock/security{
+ icon_state = "door_locked";
+ locked = 1
+ },
+/turf/simulated/floor/tiled,
+/area/submap/virgo2/Rockybase)
+"bh" = (
+/obj/machinery/portable_atmospherics/hydroponics,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bi" = (
+/obj/machinery/vending/cola,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bj" = (
+/obj/structure/door_assembly,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bk" = (
+/obj/machinery/door/airlock,
+/turf/simulated/floor/tiled,
+/area/submap/virgo2/Rockybase)
+"bl" = (
+/mob/living/simple_animal/hostile/malf_drone{
+ desc = "An automated combat drone with an aged apperance.";
+ returns_home = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bm" = (
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bn" = (
+/obj/effect/decal/remains,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bo" = (
+/obj/machinery/vending/snack,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bp" = (
+/obj/item/stack/rods,
+/obj/structure/girder,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bq" = (
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"br" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'HIGH VOLTAGE'";
+ icon_state = "shock";
+ name = "HIGH VOLTAGE";
+ pixel_y = -32
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bs" = (
+/obj/item/mecha_parts/part/gygax_right_arm,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bt" = (
+/obj/structure/table/standard,
+/obj/item/device/kit/paint/gygax/darkgygax,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bu" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper{
+ info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals.";
+ name = "V-Grenade Notice 2"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bv" = (
+/obj/structure/table/standard,
+/obj/random/toolbox,
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bw" = (
+/obj/structure/table/standard,
+/obj/random/toolbox,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bx" = (
+/obj/structure/table/standard,
+/obj/item/weapon/paper{
+ info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts.";
+ name = "V-Grenade Notice 1"
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"by" = (
+/obj/machinery/door/airlock/engineering,
+/turf/simulated/floor/tiled,
+/area/submap/virgo2/Rockybase)
+"bz" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/template_noop)
+"bA" = (
+/obj/structure/table/standard,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/obj/item/stack/material/diamond,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bB" = (
+/obj/structure/table/standard,
+/obj/item/weapon/grenade/spawnergrenade/manhacks,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bC" = (
+/obj/structure/table/standard,
+/obj/item/stack/material/steel,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bD" = (
+/obj/structure/table/standard,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/item/weapon/circuitboard/mecha/gygax/main,
+/obj/item/weapon/circuitboard/mecha/gygax/peripherals,
+/obj/item/weapon/circuitboard/mecha/gygax/targeting,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bE" = (
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bF" = (
+/obj/structure/table/standard,
+/obj/fiftyspawner/rods,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bG" = (
+/obj/machinery/vending/engivend,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bH" = (
+/obj/machinery/vending/tool,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bI" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/toolbox,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bJ" = (
+/obj/structure/table/standard,
+/obj/item/weapon/storage/toolbox/mechanical,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bK" = (
+/obj/item/mecha_parts/part/gygax_torso,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bL" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/closet/crate/medical,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bM" = (
+/obj/structure/table/standard,
+/obj/structure/table/standard,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bN" = (
+/obj/structure/table/standard,
+/obj/item/clothing/mask/breath/medical,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bO" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bP" = (
+/obj/structure/closet/secure_closet/medical2,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bQ" = (
+/obj/structure/toilet{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bR" = (
+/obj/structure/table/standard,
+/obj/item/device/mmi/digital/robot,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bS" = (
+/obj/item/stack/rods,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bT" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/girder,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bU" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bV" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bW" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"bX" = (
+/obj/structure/closet/secure_closet/medical1,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bY" = (
+/obj/machinery/light/small{
+ dir = 4;
+ pixel_y = 0
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"bZ" = (
+/obj/machinery/drone_fabricator,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ca" = (
+/obj/machinery/mecha_part_fabricator,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cb" = (
+/obj/machinery/pros_fabricator,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cc" = (
+/obj/structure/table/standard,
+/obj/item/mecha_parts/mecha_equipment/repair_droid,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cd" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"ce" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cf" = (
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/smes/buildable/point_of_interest,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cg" = (
+/obj/machinery/vending/medical,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ch" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"ci" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/weapon/material/shard,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"ck" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cl" = (
+/obj/item/mecha_parts/part/gygax_armour,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cm" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cn" = (
+/obj/item/mecha_parts/chassis/gygax,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"co" = (
+/mob/living/simple_animal/hostile/mecha/malf_drone,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cp" = (
+/obj/machinery/vending/robotics,
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cq" = (
+/obj/structure/cable{
+ icon_state = "0-4";
+ d2 = 4
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/power/apc{
+ cell_type = /obj/item/weapon/cell/super;
+ dir = 8;
+ name = "Unknown APC";
+ pixel_x = -24
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cr" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cs" = (
+/obj/machinery/light{
+ icon_state = "tube1";
+ dir = 4
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/smes/buildable/point_of_interest,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"ct" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cu" = (
+/obj/item/mecha_parts/part/gygax_right_leg,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cv" = (
+/obj/structure/sink{
+ dir = 4;
+ icon_state = "sink";
+ pixel_x = 11;
+ pixel_y = 0
+ },
+/obj/item/mecha_parts/part/gygax_left_arm,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cw" = (
+/obj/machinery/vending,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cx" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cy" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/closet/secure_closet/medical3,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/mob/living/simple_animal/hostile/malf_drone{
+ desc = "An automated combat drone with an aged apperance.";
+ returns_home = 1
+ },
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cA" = (
+/obj/structure/closet/secure_closet/hydroponics,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cB" = (
+/obj/machinery/mech_recharger,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cC" = (
+/obj/machinery/vending/tool,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cD" = (
+/obj/structure/table/standard,
+/obj/item/stack/material/plasteel,
+/obj/item/stack/material/glass/reinforced,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cE" = (
+/obj/structure/table/standard,
+/obj/item/stack/material/glass,
+/obj/item/stack/material/steel,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cF" = (
+/obj/structure/table/standard,
+/obj/item/mecha_parts/part/gygax_head,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cG" = (
+/obj/structure/closet/toolcloset,
+/turf/simulated/floor/plating/virgo2,
+/area/submap/virgo2/Rockybase)
+"cH" = (
+/obj/structure/closet/secure_closet/medical3,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cI" = (
+/obj/item/weapon/surgical/surgicaldrill,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cJ" = (
+/obj/structure/loot_pile/maint/technical,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cK" = (
+/obj/item/clothing/suit/space/void/medical,
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cL" = (
+/obj/effect/decal/cleanable/dirt,
+/mob/living/bot/medbot,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cM" = (
+/obj/machinery/vending/hydroseeds,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cN" = (
+/obj/structure/closet/crate/secure/hydrosec,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/submap/virgo2/Rockybase)
+"cO" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Rockybase)
+"cT" = (
+/obj/effect/decal/remains,
+/turf/template_noop,
+/area/template_noop)
+
+(1,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+aa
+"}
+(2,1,1) = {"
+ab
+ac
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+"}
+(3,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ad
+ad
+cT
+"}
+(4,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ag
+ag
+ad
+ab
+"}
+(5,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(6,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+al
+ak
+aJ
+aJ
+ao
+al
+aN
+al
+aN
+al
+bQ
+al
+bQ
+al
+bQ
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(7,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+al
+ao
+ao
+ao
+ao
+be
+ao
+be
+ao
+al
+be
+al
+be
+al
+be
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(8,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+al
+ap
+aK
+aT
+ao
+al
+ao
+al
+ao
+ao
+aS
+bY
+ao
+cv
+ao
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(9,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+al
+al
+al
+al
+al
+ao
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(10,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+aq
+ao
+ao
+al
+bi
+ao
+bo
+al
+bt
+ao
+ao
+cm
+ao
+ao
+al
+ag
+ag
+ag
+ag
+ab
+"}
+(11,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+aq
+ao
+aU
+al
+ao
+ao
+ao
+al
+bu
+ao
+bZ
+ao
+bZ
+ao
+al
+ag
+ag
+ag
+ag
+ab
+"}
+(12,1,1) = {"
+ab
+ad
+ad
+ad
+af
+ad
+ad
+ag
+ag
+al
+ar
+ao
+ao
+be
+ao
+ao
+ao
+al
+bv
+ao
+ao
+ao
+ao
+ao
+al
+ag
+ag
+ag
+ag
+ab
+"}
+(13,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+as
+ao
+ao
+al
+ao
+bl
+aV
+al
+bw
+ao
+ao
+cn
+ao
+ao
+al
+ag
+ag
+ag
+ag
+ab
+"}
+(14,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+ao
+ao
+aV
+al
+ao
+ao
+ao
+al
+bx
+ao
+bZ
+ao
+bq
+ao
+al
+ag
+ag
+ag
+ag
+ab
+"}
+(15,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+ao
+ao
+ao
+al
+aE
+ao
+ao
+al
+bA
+ao
+ao
+co
+bq
+ao
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(16,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+aq
+ao
+aq
+al
+ao
+ao
+ao
+al
+bB
+ao
+ao
+ao
+ao
+aV
+al
+ag
+ag
+af
+ad
+ab
+"}
+(17,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+at
+ao
+aW
+al
+ao
+bm
+ao
+al
+bC
+ao
+ca
+ao
+ao
+cB
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(18,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+au
+ao
+aq
+al
+ao
+bn
+ao
+al
+bD
+ao
+ao
+ao
+ao
+ao
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(19,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+at
+ao
+at
+al
+ao
+ao
+bp
+al
+bj
+ao
+cb
+ao
+ao
+cB
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(20,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+al
+aq
+ao
+aq
+al
+bj
+ao
+ao
+bq
+bq
+ao
+ao
+ao
+ao
+ao
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(21,1,1) = {"
+aa
+ad
+ad
+ad
+ad
+ad
+cO
+cO
+ag
+al
+av
+ao
+at
+al
+ao
+ao
+bq
+bq
+bE
+bq
+bq
+ao
+ao
+ao
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(22,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+cO
+cO
+cO
+ag
+al
+al
+al
+al
+al
+aE
+ao
+bn
+al
+bF
+bR
+cc
+cp
+cw
+cC
+al
+ag
+ag
+ag
+ad
+aa
+"}
+(23,1,1) = {"
+bz
+cO
+cO
+cO
+cO
+cO
+cO
+bq
+ag
+al
+al
+al
+al
+al
+ao
+ao
+aV
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(24,1,1) = {"
+bz
+cO
+cO
+cO
+cO
+cO
+bq
+bq
+bq
+al
+aw
+aL
+aX
+al
+ao
+ao
+ao
+al
+bG
+bq
+bq
+cq
+bq
+cD
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(25,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+ah
+bq
+al
+ax
+ao
+ao
+be
+ao
+ao
+bm
+al
+bH
+bq
+bq
+ce
+bq
+cE
+al
+ag
+ag
+ag
+ad
+ab
+"}
+(26,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+aj
+al
+ay
+ao
+aY
+al
+ao
+ao
+ao
+by
+bq
+bq
+cd
+cr
+cx
+cF
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(27,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+al
+az
+aM
+aZ
+al
+ao
+ao
+br
+al
+bI
+bq
+ce
+ce
+ce
+cG
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(28,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+ai
+bq
+am
+al
+al
+al
+al
+ao
+ao
+ao
+al
+bJ
+bq
+cf
+cs
+cf
+bq
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(29,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+ae
+ao
+aN
+ao
+ae
+ao
+ao
+ao
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(30,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+ae
+ao
+ao
+ao
+ae
+ao
+ao
+ao
+al
+bK
+bj
+cg
+ao
+cy
+cH
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(31,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+am
+al
+al
+al
+al
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(32,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+ai
+al
+aA
+aO
+ba
+al
+ao
+ao
+ao
+al
+ao
+bO
+bO
+bO
+ao
+cI
+al
+ag
+ad
+ad
+ad
+ab
+"}
+(33,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+bq
+aj
+al
+aB
+aP
+bb
+al
+aE
+ao
+ao
+al
+bL
+bO
+ch
+ct
+cz
+ao
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(34,1,1) = {"
+an
+bq
+bq
+bq
+bq
+bq
+bq
+ah
+bq
+al
+aC
+ao
+ao
+al
+ao
+ao
+ao
+al
+bM
+bS
+ci
+ck
+ci
+ao
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(35,1,1) = {"
+bz
+cO
+cO
+cO
+cO
+cO
+bq
+bq
+bq
+al
+aD
+ao
+ao
+al
+ao
+ao
+aV
+al
+bN
+bT
+cj
+ck
+bU
+cJ
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(36,1,1) = {"
+bz
+cO
+cO
+cO
+cO
+cO
+cO
+bq
+ag
+al
+aE
+ao
+ao
+bk
+ao
+ao
+ao
+al
+bO
+bU
+ck
+ci
+bU
+bW
+al
+ag
+ad
+ad
+ad
+ab
+"}
+(37,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+cO
+cO
+cO
+ag
+al
+aF
+aQ
+ao
+al
+ao
+ao
+ao
+al
+ao
+bV
+ci
+bV
+bU
+cJ
+al
+ag
+ad
+ad
+ad
+ab
+"}
+(38,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+cO
+cO
+ag
+al
+al
+al
+bg
+al
+ao
+bl
+ao
+al
+ao
+bW
+cl
+bq
+bU
+cK
+al
+ag
+ad
+ad
+ad
+ab
+"}
+(39,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+al
+ao
+ao
+aV
+al
+aE
+ao
+ao
+al
+ao
+ao
+bq
+bE
+bq
+bO
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(40,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+aG
+aR
+bc
+al
+ao
+ao
+bs
+al
+bP
+bX
+ao
+ao
+bO
+cL
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(41,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+al
+al
+al
+al
+al
+al
+bk
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(42,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+aH
+ao
+ao
+bf
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+ao
+cM
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(43,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+aI
+aS
+bd
+bh
+bd
+bd
+bh
+bd
+bd
+bh
+bd
+cu
+cA
+cN
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(44,1,1) = {"
+ab
+ac
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ad
+ad
+ab
+"}
+(45,1,1) = {"
+ab
+ad
+ad
+af
+ad
+ad
+ad
+ag
+ag
+ag
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+al
+ag
+ag
+ag
+ad
+ad
+ab
+"}
+(46,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ad
+ad
+ad
+cT
+"}
+(47,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ad
+ag
+ad
+ad
+ad
+ad
+ad
+ab
+"}
+(48,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+"}
+(49,1,1) = {"
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+af
+ad
+ad
+ad
+ad
+ab
+"}
+(50,1,1) = {"
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Shack1.dmm b/maps/tether/submaps/aerostat/submaps/Shack1.dmm
new file mode 100644
index 0000000000..62b0eac0de
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Shack1.dmm
@@ -0,0 +1,276 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/wall/log_sif,
+/area/submap/virgo2/Shack1)
+"c" = (
+/turf/template_noop,
+/area/submap/virgo2/Shack1)
+"d" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Shack1)
+"e" = (
+/obj/effect/decal/cleanable/cobweb,
+/turf/simulated/floor/holofloor/wood{
+ tag = "icon-wood_broken1";
+ icon_state = "wood_broken1"
+ },
+/area/submap/virgo2/Shack1)
+"f" = (
+/obj/structure/table/wooden_reinforced,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"g" = (
+/obj/structure/closet/cabinet,
+/obj/item/clothing/suit/storage/apron/overalls,
+/obj/item/clothing/under/overalls,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"h" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"i" = (
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"j" = (
+/turf/simulated/floor/holofloor/wood{
+ tag = "icon-wood_broken0";
+ icon_state = "wood_broken0"
+ },
+/area/submap/virgo2/Shack1)
+"k" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/holofloor/wood{
+ tag = "icon-wood_broken5";
+ icon_state = "wood_broken5"
+ },
+/area/submap/virgo2/Shack1)
+"m" = (
+/obj/structure/simple_door/wood,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"n" = (
+/turf/simulated/floor/holofloor/wood{
+ tag = "icon-wood_broken3";
+ icon_state = "wood_broken3"
+ },
+/area/submap/virgo2/Shack1)
+"o" = (
+/obj/structure/table/bench/wooden,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"p" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table/wooden_reinforced,
+/obj/item/weapon/storage/toolbox,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"q" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table/wooden_reinforced,
+/obj/item/weapon/material/twohanded/fireaxe/scythe,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"r" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"s" = (
+/turf/simulated/floor/holofloor/wood{
+ tag = "icon-wood_broken6";
+ icon_state = "wood_broken6"
+ },
+/area/submap/virgo2/Shack1)
+"t" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table/wooden_reinforced,
+/obj/item/device/flashlight/lamp,
+/turf/simulated/floor/wood,
+/area/submap/virgo2/Shack1)
+"v" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/template_noop)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+e
+h
+i
+n
+h
+p
+b
+a
+"}
+(4,1,1) = {"
+a
+b
+f
+i
+i
+i
+o
+q
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+g
+j
+i
+i
+i
+r
+b
+a
+"}
+(6,1,1) = {"
+a
+b
+h
+h
+i
+i
+i
+s
+b
+a
+"}
+(7,1,1) = {"
+a
+b
+h
+k
+i
+i
+i
+t
+b
+a
+"}
+(8,1,1) = {"
+a
+b
+b
+b
+m
+m
+b
+b
+b
+a
+"}
+(9,1,1) = {"
+a
+c
+c
+c
+d
+d
+c
+c
+c
+a
+"}
+(10,1,1) = {"
+a
+c
+c
+c
+d
+d
+c
+c
+c
+a
+"}
+(11,1,1) = {"
+a
+c
+c
+c
+d
+d
+c
+c
+c
+a
+"}
+(12,1,1) = {"
+v
+d
+d
+d
+d
+d
+d
+d
+d
+v
+"}
+(13,1,1) = {"
+v
+d
+d
+d
+d
+d
+d
+d
+d
+v
+"}
+(14,1,1) = {"
+a
+c
+c
+c
+c
+c
+c
+c
+c
+a
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Smol1.dmm b/maps/tether/submaps/aerostat/submaps/Smol1.dmm
new file mode 100644
index 0000000000..247296b6ad
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Smol1.dmm
@@ -0,0 +1,135 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Small1)
+"c" = (
+/turf/template_noop,
+/area/submap/virgo2/Small1)
+"d" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/Small1)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+c
+c
+b
+b
+b
+b
+c
+c
+a
+"}
+(3,1,1) = {"
+a
+c
+b
+b
+b
+b
+b
+b
+c
+a
+"}
+(4,1,1) = {"
+a
+b
+b
+d
+b
+b
+b
+b
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(6,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(7,1,1) = {"
+a
+b
+b
+b
+b
+b
+d
+b
+b
+a
+"}
+(8,1,1) = {"
+a
+c
+b
+b
+b
+b
+b
+b
+c
+a
+"}
+(9,1,1) = {"
+a
+c
+c
+b
+b
+b
+b
+c
+c
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/Snowrock1.dmm b/maps/tether/submaps/aerostat/submaps/Snowrock1.dmm
new file mode 100644
index 0000000000..9066f1d841
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/Snowrock1.dmm
@@ -0,0 +1,470 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/template_noop,
+/area/submap/virgo2/SnowR1)
+"c" = (
+/turf/simulated/mineral/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+"d" = (
+/obj/structure/loot_pile/maint/trash,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+"e" = (
+/obj/structure/closet/crate/trashcart,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+"f" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+"g" = (
+/obj/random/trash,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+"h" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/submap/virgo2/SnowR1)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+a
+"}
+(3,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+f
+f
+f
+f
+f
+f
+b
+b
+a
+"}
+(4,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+c
+c
+c
+f
+f
+f
+f
+f
+f
+b
+b
+b
+a
+"}
+(5,1,1) = {"
+a
+b
+b
+b
+b
+b
+c
+c
+c
+f
+f
+f
+f
+f
+f
+c
+b
+b
+b
+a
+"}
+(6,1,1) = {"
+a
+b
+b
+b
+b
+c
+c
+c
+f
+f
+f
+f
+h
+f
+f
+c
+b
+b
+b
+a
+"}
+(7,1,1) = {"
+a
+b
+b
+c
+c
+c
+c
+c
+f
+f
+f
+f
+f
+f
+f
+c
+c
+b
+b
+a
+"}
+(8,1,1) = {"
+a
+b
+c
+c
+c
+c
+c
+c
+f
+f
+f
+f
+f
+f
+f
+c
+c
+b
+b
+a
+"}
+(9,1,1) = {"
+a
+b
+c
+c
+c
+d
+g
+f
+f
+f
+f
+f
+f
+f
+c
+c
+c
+b
+b
+a
+"}
+(10,1,1) = {"
+a
+b
+c
+c
+c
+e
+f
+f
+f
+f
+h
+f
+f
+f
+c
+c
+c
+b
+b
+a
+"}
+(11,1,1) = {"
+a
+b
+c
+c
+c
+f
+f
+f
+f
+f
+f
+f
+f
+f
+c
+c
+c
+b
+b
+a
+"}
+(12,1,1) = {"
+a
+b
+c
+c
+c
+g
+f
+f
+f
+f
+f
+f
+f
+c
+c
+c
+c
+b
+b
+a
+"}
+(13,1,1) = {"
+a
+b
+c
+c
+c
+g
+f
+f
+f
+f
+f
+f
+f
+c
+c
+c
+c
+b
+b
+a
+"}
+(14,1,1) = {"
+a
+b
+b
+c
+c
+c
+c
+f
+f
+f
+f
+f
+f
+c
+c
+c
+b
+b
+b
+a
+"}
+(15,1,1) = {"
+a
+b
+b
+b
+c
+c
+c
+f
+f
+f
+f
+f
+f
+c
+c
+c
+c
+b
+b
+a
+"}
+(16,1,1) = {"
+a
+b
+b
+b
+b
+c
+c
+f
+f
+f
+f
+f
+f
+c
+c
+c
+b
+b
+b
+a
+"}
+(17,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+f
+f
+h
+f
+f
+f
+b
+b
+b
+b
+b
+b
+a
+"}
+(18,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+f
+f
+f
+f
+f
+f
+b
+b
+b
+b
+b
+b
+a
+"}
+(19,1,1) = {"
+a
+b
+b
+b
+b
+b
+b
+f
+f
+f
+f
+f
+f
+b
+b
+b
+b
+b
+b
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/maps/tether/submaps/aerostat/submaps/virgo2.dm b/maps/tether/submaps/aerostat/submaps/virgo2.dm
new file mode 100644
index 0000000000..3657040d01
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/virgo2.dm
@@ -0,0 +1,103 @@
+#include "virgo2_submap_areas.dm"
+
+#if MAP_TEST
+#include "Blackshuttledown.dmm"
+#include "Boombase.dmm"
+#include "CaveS.dmm"
+#include "DecoupledEngine.dmm"
+#include "GovPatrol.dmm"
+#include "Lab1.dmm"
+#include "MCamp1.dmm"
+#include "MHR.dmm"
+#include "Mudpit.dmm"
+#include "Rockybase.dmm"
+#include "Shack1.dmm"
+#include "Smol1.dmm"
+#include "Snowrock1.dmm"
+#endif
+
+/datum/map_template/virgo2
+ name = "Surface Content - Virgo 2"
+ desc = "For seeding submaps on Virgo 2"
+ allow_duplicates = TRUE
+
+/datum/map_template/virgo2/Blackshuttledown
+ name = "V2 - Black Shuttle Down"
+ desc = "You REALLY shouldn't be near this."
+ mappath = 'Blackshuttledown.dmm'
+ cost = 30
+ allow_duplicates = FALSE
+
+/datum/map_template/virgo2/Boombase
+ name = "V2 - Boombase"
+ desc = "What happens when you don't follow SOP."
+ mappath = 'Boombase.dmm'
+ cost = 5
+
+/datum/map_template/virgo2/CaveS
+ name = "V2 - CaveS"
+ desc = "Chitter chitter!"
+ mappath = 'CaveS.dmm'
+ cost = 20
+ allow_duplicates = FALSE
+
+/datum/map_template/virgo2/DecoupledEngine
+ name = "V2 - Decoupled Engine"
+ desc = "A damaged fission engine jettisoned from a starship long ago."
+ mappath = 'DecoupledEngine.dmm'
+ cost = 15
+
+/datum/map_template/virgo2/GovPatrol
+ name = "V2 - Government Patrol"
+ desc = "A long lost SifGuard ground survey patrol. Now they have you guys!"
+ mappath = 'GovPatrol.dmm'
+ cost = 5
+
+/datum/map_template/virgo2/Lab1
+ name = "V2 - Lab1"
+ desc = "An isolated small robotics lab."
+ mappath = 'Lab1.dmm'
+ cost = 5
+
+/datum/map_template/virgo2/Mcamp1
+ name = "V2 - Military Camp 1"
+ desc = "A derelict military camp host to some unsavory dangers"
+ mappath = 'MCamp1.dmm'
+ cost = 15
+
+/datum/map_template/virgo2/MHR
+ name = "V2 - Manhack Rock"
+ desc = "A rock filled with nasty Synthetics."
+ mappath = 'MHR.dmm'
+ cost = 15
+
+/datum/map_template/virgo2/Mudpit
+ name = "V2 - Mudpit"
+ desc = "What happens when someone is a bit too careless with gas.."
+ mappath = 'Mudpit.dmm'
+ cost = 15
+
+/datum/map_template/virgo2/Rockybase
+ name = "V2 - Rocky Base"
+ desc = "A guide to upsetting Icarus and the EIO"
+ mappath = 'Rockybase.dmm'
+ cost = 35
+ allow_duplicates = FALSE
+
+/datum/map_template/virgo2/Shack1
+ name = "V2 - Shack1"
+ desc = "A small shack in the middle of nowhere, Your halloween murder happens here"
+ mappath = 'Shack1.dmm'
+ cost = 5
+
+/datum/map_template/virgo2/Smol1
+ name = "V2 - Smol1"
+ desc = "A tiny grove of trees, The Nemesis of thicc"
+ mappath = 'Smol1.dmm'
+ cost = 5
+
+/datum/map_template/virgo2/Snowrock1
+ name = "V2 - Snowrock1"
+ desc = "A rocky snow covered area"
+ mappath = 'Snowrock1.dmm'
+ cost = 5
diff --git a/maps/tether/submaps/aerostat/submaps/virgo2_submap_areas.dm b/maps/tether/submaps/aerostat/submaps/virgo2_submap_areas.dm
new file mode 100644
index 0000000000..24dd005c0c
--- /dev/null
+++ b/maps/tether/submaps/aerostat/submaps/virgo2_submap_areas.dm
@@ -0,0 +1,54 @@
+/area/submap/virgo2
+ name = "Submap Area"
+ icon_state = "submap"
+ dynamic_lighting = FALSE
+ base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2
+
+/area/submap/virgo2/spider1
+ name = "spider nest"
+
+/area/submap/virgo2/Field1
+ name = "Field 1"
+
+/area/submap/virgo2/Lake1
+ name = "Lake 1"
+
+/area/submap/virgo2/MilitaryCamp1
+ name = "Military Camp 1"
+
+/area/submap/virgo2/Mudpit
+ name = "Mudpit"
+
+/area/submap/virgo2/Shack1
+ name = "Shack1"
+
+/area/submap/virgo2/Small1
+ name = "Small1"
+
+/area/submap/virgo2/SnowR1
+ name = "SnowR1"
+
+/area/submap/virgo2/BoomBase
+ name = "Boom1"
+
+/area/submap/virgo2/Blackshuttledown
+ name = "BSD"
+ requires_power = FALSE
+
+/area/submap/virgo2/Lab1
+ name = "Lab1"
+
+/area/submap/virgo2/MHR
+ name = "Manhack Rock"
+
+/area/submap/virgo2/Rockybase
+ name = "Rockybase"
+
+/area/submap/virgo2/GovPatrol
+ name = "GovPatrol"
+
+/area/submap/virgo2/DecoupledEngine
+ name = "DecoupledEngine"
+
+/area/submap/virgo2/CaveS
+ name = "CaveS"
diff --git a/maps/tether/submaps/aerostat/surface.dmm b/maps/tether/submaps/aerostat/surface.dmm
new file mode 100644
index 0000000000..653f85b9a1
--- /dev/null
+++ b/maps/tether/submaps/aerostat/surface.dmm
@@ -0,0 +1,14701 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/away_mission_init/aerostat,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"b" = (
+/turf/unsimulated/wall/planetary/virgo2,
+/area/tether_away/aerostat/surface)
+"e" = (
+/obj/tether_away_spawner/aerostat_surface,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"i" = (
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"n" = (
+/obj/structure/railing{
+ icon_state = "railing0";
+ dir = 1
+ },
+/obj/structure/metal_edge,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"s" = (
+/obj/structure/stairs/east,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"A" = (
+/obj/structure/railing{
+ icon_state = "railing0";
+ dir = 8
+ },
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"F" = (
+/turf/simulated/mineral/virgo2,
+/area/tether_away/aerostat/surface/unexplored)
+"I" = (
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"Q" = (
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/tiled/techfloor/virgo2,
+/area/shuttle/aerostat/landed)
+"V" = (
+/obj/structure/railing,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"X" = (
+/obj/structure/railing{
+ icon_state = "railing0";
+ dir = 4
+ },
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+"Z" = (
+/obj/structure/stairs/west,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
+/area/tether_away/aerostat/surface/explored)
+
+(1,1,1) = {"
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
+(2,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(3,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(4,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(5,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(6,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(7,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(8,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(9,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(10,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(11,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(12,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(13,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(14,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(15,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(16,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(17,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(18,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(19,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(20,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(21,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(22,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(23,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(24,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(25,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(26,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(27,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(28,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(29,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(30,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(31,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(32,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(33,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(34,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+e
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(35,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(36,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(37,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(38,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(39,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(40,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(41,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(42,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(43,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(44,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(45,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(46,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+i
+i
+i
+i
+i
+F
+i
+i
+i
+i
+i
+i
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(47,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(48,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+I
+I
+i
+i
+I
+I
+I
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(49,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+e
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+I
+I
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(50,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+a
+i
+i
+i
+i
+i
+i
+i
+I
+I
+I
+I
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(51,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(52,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+X
+X
+X
+X
+X
+X
+s
+s
+X
+X
+X
+X
+X
+X
+X
+X
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(53,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(54,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(55,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(56,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(57,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+V
+I
+I
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(58,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(59,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(60,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(61,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+V
+I
+I
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+Q
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(62,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(63,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(64,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(65,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+V
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+n
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(66,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+A
+A
+A
+A
+A
+A
+Z
+Z
+A
+A
+A
+A
+A
+A
+A
+A
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(67,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+I
+i
+i
+I
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(68,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+I
+I
+i
+I
+i
+i
+I
+I
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+e
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(69,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+I
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(70,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(71,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+i
+i
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(72,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(73,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(74,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(75,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(76,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(77,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(78,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(79,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(80,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(81,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(82,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(83,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(84,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(85,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(86,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(87,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(88,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(89,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(90,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(91,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(92,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(93,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+e
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(94,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(95,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(96,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(97,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+i
+i
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(98,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(99,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(100,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(101,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(102,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(103,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(104,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(105,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(106,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(107,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(108,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(109,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(110,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(111,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(112,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(113,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(114,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(115,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(116,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(117,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(118,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(119,1,1) = {"
+b
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+F
+b
+"}
+(120,1,1) = {"
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+"}
diff --git a/maps/tether/submaps/alienship/alienship.dm b/maps/tether/submaps/alienship/_alienship.dm
similarity index 88%
rename from maps/tether/submaps/alienship/alienship.dm
rename to maps/tether/submaps/alienship/_alienship.dm
index 223ecf5d17..8203de4f20 100644
--- a/maps/tether/submaps/alienship/alienship.dm
+++ b/maps/tether/submaps/alienship/_alienship.dm
@@ -1,8 +1,8 @@
// -- Datums -- //
-/datum/shuttle_destination/excursion/alienship1
- name = "Virgo 4 Orbit"
- my_area = /area/shuttle/excursion/away_alienship // /area/shuttle/excursion/space
+/datum/shuttle_destination/excursion/alienship
+ name = "Unknown Ship"
+ my_area = /area/shuttle/excursion/away_alienship
preferred_interim_area = /area/shuttle/excursion/space_moving
skip_me = TRUE
@@ -15,7 +15,8 @@
/obj/shuttle_connector/alienship
name = "shuttle connector - alienship"
shuttle_name = "Excursion Shuttle"
- destinations = list(/datum/shuttle_destination/excursion/alienship1)
+ destinations = list(/datum/shuttle_destination/excursion/alienship)
+ initialized = TRUE //Just don't.
/obj/away_mission_init/alienship
name = "away mission initializer - alienship"
@@ -55,7 +56,18 @@
teleport_friends += src
else //You are dismissed
- qdel(src)
+ return INITIALIZE_HINT_QDEL
+
+/obj/machinery/porta_turret/alien/ion
+ name = "interior anti-boarding turret"
+ desc = "A very tough looking turret made by alien hands."
+ installation = /obj/item/weapon/gun/energy/ionrifle/pistol
+ enabled = TRUE
+ lethal = TRUE
+ ailock = TRUE
+ check_all = TRUE
+ health = 250
+ maxhealth = 250
/obj/away_mission_init/alienship/door_n2s
icon_state = "n2s"
@@ -106,6 +118,8 @@
var/did_entry = FALSE
var/list/teleport_to
var/area/dump_area
+ var/obj/shuttle_connector/shuttle_friend
+
/area/shuttle/excursion/away_alienship/initialize()
. = ..()
dump_area = locate(/area/tether_away/alienship/equip_dump)
@@ -116,15 +130,6 @@
if(did_entry)
return
- //Rename this destination for return trips
- var/datum/shuttle/web_shuttle/ES = shuttle_controller.shuttles["Excursion Shuttle"]
- var/datum/shuttle_web_master/WM = ES.web_master
- for(var/dest in WM.destinations)
- var/datum/shuttle_destination/D = dest
- if(istype(D,/datum/shuttle_destination/excursion/alienship1))
- D.name = "Unknown Vessel"
- break
-
//No talky!
for(var/obj/machinery/telecomms/relay/R in contents)
R.toggled = FALSE
@@ -165,7 +170,7 @@
did_entry = TRUE
/area/tether_away/alienship
- name = "\improper Unknown"
+ name = "\improper Away Mission - Unknown Vessel"
icon_state = "away"
base_turf = /turf/space
requires_power = FALSE
diff --git a/maps/tether/submaps/alienship/alienship.dmm b/maps/tether/submaps/alienship/alienship.dmm
index cf4205b14d..50d0e34c30 100644
--- a/maps/tether/submaps/alienship/alienship.dmm
+++ b/maps/tether/submaps/alienship/alienship.dmm
@@ -101,10 +101,6 @@
/obj/away_mission_init/alienship/start_n2s,
/turf/simulated/shuttle/floor/alien,
/area/tether_away/alienship)
-"ax" = (
-/obj/shuttle_connector/alienship,
-/turf/simulated/shuttle/floor/alienplating,
-/area/tether_away/alienship)
"ay" = (
/obj/structure/bed/alien,
/obj/away_mission_init/alienship/start_n2s,
@@ -580,6 +576,10 @@
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/turf/simulated/shuttle/floor/alien,
/area/tether_away/alienship)
+"YP" = (
+/obj/machinery/porta_turret/alien/ion,
+/turf/simulated/shuttle/floor/alienplating,
+/area/tether_away/alienship)
(1,1,1) = {"
aa
@@ -5378,7 +5378,7 @@ af
ae
ae
ae
-ae
+YP
ae
ae
ae
@@ -5418,7 +5418,7 @@ af
ae
ae
ae
-ae
+YP
ae
ae
ae
@@ -7830,7 +7830,7 @@ af
af
am
af
-ax
+ae
ah
ah
ah
@@ -10258,7 +10258,7 @@ af
ae
ae
ae
-ae
+YP
ae
ae
ae
@@ -10298,7 +10298,7 @@ af
ae
ae
ae
-ae
+YP
ae
ae
ae
diff --git a/maps/tether/submaps/beach/beach.dm b/maps/tether/submaps/beach/_beach.dm
similarity index 76%
rename from maps/tether/submaps/beach/beach.dm
rename to maps/tether/submaps/beach/_beach.dm
index 9fe9072091..3a75183c66 100644
--- a/maps/tether/submaps/beach/beach.dm
+++ b/maps/tether/submaps/beach/_beach.dm
@@ -84,6 +84,43 @@
initialized = TRUE
return INITIALIZE_HINT_QDEL
+// Two mob spawners that are placed on the map that spawn some mobs!
+// They keep track of their mob, and when it's dead, spawn another (only if nobody is looking)
+/obj/tether_away_spawner/beach_outside
+ name = "Beach Outside Spawner" //Just a name
+ faction = "beach_out" //Sets all the mobs to this faction so they don't infight
+ atmos_comp = TRUE //Sets up their atmos tolerances to work in this setting, even if they don't normally (20% up/down tolerance for each gas, and heat)
+ prob_spawn = 50 //Chance of this spawner spawning a mob (once this is missed, the spawner is 'depleted' and won't spawn anymore)
+ prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies)
+ guard = 40 //They'll stay within this range (not defining disables)
+ mobs_to_pick_from = list(
+ /mob/living/simple_animal/snake
+ )
+
+/obj/tether_away_spawner/beach_outside_friendly
+ name = "Fennec Spawner"
+ faction = "fennec"
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 25
+ guard = 40
+ mobs_to_pick_from = list(
+ /mob/living/simple_animal/fennec
+ )
+
+/obj/tether_away_spawner/beach_cave
+ name = "Beach Cave Spawner"
+ faction = "beach_cave"
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 10
+ guard = 20
+ mobs_to_pick_from = list(
+ /mob/living/simple_animal/hostile/deathclaw,
+ /mob/living/simple_animal/hostile/frog,
+ /mob/living/simple_animal/hostile/hivebot/range/ion
+ )
+
// These are step-teleporters, for map edge transitions
// This top one goes INTO the cave
/obj/effect/step_trigger/teleporter/away_beach_tocave/New()
@@ -126,22 +163,22 @@
dynamic_lighting = 0
/area/tether_away/beach/powershed
- name = "\improper Desert Planet Coast"
+ name = "\improper Away Mission - Virgo 4 Coast PS"
icon_state = "blue2"
base_turf = /turf/simulated/floor/beach/sand
/area/tether_away/beach/coast
- name = "\improper Desert Planet Coast"
+ name = "\improper Away Mission - Virgo 4 Coast"
icon_state = "blue2"
base_turf = /turf/simulated/floor/beach/coastline
/area/tether_away/beach/water
- name = "\improper Desert Planet Water"
+ name = "\improper Away Mission - Virgo 4 Water"
icon_state = "bluenew"
base_turf = /turf/simulated/floor/beach/coastwater
/area/tether_away/beach/jungle
- name = "\improper Desert Planet Jungle"
+ name = "\improper Away Mission - Virgo 4 Desert"
icon_state = "green"
base_turf = /turf/simulated/floor/beach/sand/desert
@@ -151,17 +188,17 @@
ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
/area/tether_away/cave/explored/normal
- name = "Tunnels"
+ name = "\improper Away Mission - Virgo 4 Cave (E)"
icon_state = "explored"
/area/tether_away/cave/unexplored/normal
- name = "Tunnels"
+ name = "\improper Away Mission - Virgo 4 Cave (UE)"
icon_state = "unexplored"
/area/tether_away/cave/explored/deep
- name = "Depths"
+ name = "\improper Away Mission - Virgo 4 Cave Deep (E)"
icon_state = "explored_deep"
/area/tether_away/cave/unexplored/deep
- name = "Depths"
+ name = "\improper Away Mission - Virgo 4 Cave Deep (UE)"
icon_state = "unexplored_deep"
diff --git a/maps/tether/submaps/beach/beach.dmm b/maps/tether/submaps/beach/beach.dmm
index feb4e53fcf..fd6ede3c4f 100644
--- a/maps/tether/submaps/beach/beach.dmm
+++ b/maps/tether/submaps/beach/beach.dmm
@@ -242,10 +242,6 @@
/obj/item/weapon/stool/padded,
/turf/simulated/floor/tiled/asteroid_steel,
/area/tether_away/beach)
-"aY" = (
-/mob/living/simple_animal/crab,
-/turf/simulated/floor/beach/sand/desert,
-/area/tether_away/beach/jungle)
"aZ" = (
/obj/effect/overlay/palmtree_l,
/turf/simulated/floor/beach/sand,
@@ -282,14 +278,6 @@
"bi" = (
/turf/simulated/floor/water/shoreline,
/area/tether_away/beach)
-"bj" = (
-/mob/living/simple_animal/hostile/snake,
-/turf/simulated/floor/beach/sand/desert,
-/area/tether_away/beach/jungle)
-"bk" = (
-/mob/living/carbon/human/monkey,
-/turf/simulated/floor/beach/sand/desert,
-/area/tether_away/beach/jungle)
"bl" = (
/turf/unsimulated/wall/planetary/normal,
/area/tether_away/beach/jungle)
@@ -317,18 +305,18 @@
/obj/effect/step_trigger/zlevel_fall/beach,
/turf/simulated/floor/beach/sand/desert,
/area/tether_away/beach/jungle)
-"bt" = (
-/mob/living/simple_animal/fennec,
+"xW" = (
+/obj/tether_away_spawner/beach_outside_friendly,
/turf/simulated/floor/beach/sand/desert,
/area/tether_away/beach/jungle)
-"bu" = (
-/mob/living/simple_animal/fennec,
+"TU" = (
+/obj/tether_away_spawner/beach_outside,
+/turf/simulated/floor/beach/sand/desert,
+/area/tether_away/beach/jungle)
+"UZ" = (
+/obj/tether_away_spawner/beach_outside_friendly,
/turf/simulated/floor/beach/sand,
/area/tether_away/beach)
-"bv" = (
-/mob/living/simple_animal/fennec,
-/turf/simulated/floor/tiled/asteroid_steel,
-/area/tether_away/beach)
(1,1,1) = {"
bl
@@ -1387,7 +1375,7 @@ aa
aa
aa
aa
-bk
+aa
aa
aa
aa
@@ -1477,7 +1465,7 @@ aa
aa
aa
aa
-bj
+aa
aa
aa
aa
@@ -1958,7 +1946,7 @@ aa
aa
aa
aa
-aa
+TU
aa
aa
aa
@@ -2244,7 +2232,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
@@ -2343,7 +2331,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
@@ -2788,7 +2776,7 @@ aa
aa
aa
aa
-bj
+aa
aa
aa
aa
@@ -2831,7 +2819,7 @@ aa
aa
aa
aa
-bt
+aa
aa
aa
aa
@@ -3298,7 +3286,7 @@ aa
aa
aa
aa
-bt
+aa
aa
aa
aa
@@ -3530,7 +3518,7 @@ aa
aa
aa
aa
-aa
+TU
aa
aa
aa
@@ -3844,7 +3832,7 @@ aa
aa
aa
aa
-aY
+aa
aa
aa
ad
@@ -5787,7 +5775,7 @@ ad
ad
ad
ad
-bu
+ad
ad
ad
ad
@@ -5902,7 +5890,7 @@ ad
ad
ad
ad
-ad
+UZ
ad
ad
ad
@@ -7261,7 +7249,7 @@ aX
al
ad
ad
-ad
+UZ
ad
bb
ad
@@ -7607,7 +7595,7 @@ ad
ar
af
al
-bv
+al
al
al
ad
@@ -8338,7 +8326,7 @@ aa
ad
ad
ad
-ad
+UZ
ad
ad
ar
@@ -8891,7 +8879,7 @@ aa
aa
aa
aa
-bj
+aa
aa
aa
aa
@@ -8935,7 +8923,7 @@ aa
aa
aa
aa
-bt
+aa
aa
aa
aa
@@ -9134,7 +9122,7 @@ aa
aa
aa
aa
-bk
+aa
aa
aa
aa
@@ -9413,7 +9401,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
@@ -10039,7 +10027,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
@@ -10130,7 +10118,7 @@ aa
aa
aa
bp
-aa
+xW
aa
aa
aa
@@ -11408,7 +11396,7 @@ aa
aa
aa
aa
-aY
+aa
aa
aa
ad
@@ -11485,7 +11473,7 @@ aa
aa
aa
aa
-aa
+TU
aa
aa
aa
@@ -12005,7 +11993,7 @@ aa
aa
aa
aa
-bt
+aa
aa
aa
aa
@@ -12131,7 +12119,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
@@ -13162,7 +13150,7 @@ aa
aa
aa
aa
-aa
+TU
aa
aa
aa
@@ -13272,7 +13260,7 @@ bq
aa
aa
aa
-bt
+aa
aa
aa
aa
@@ -13326,7 +13314,7 @@ aa
aa
aa
aa
-aa
+xW
aa
aa
aa
diff --git a/maps/tether/submaps/beach/cave.dmm b/maps/tether/submaps/beach/cave.dmm
index 4ac5b67e99..5ee96ec76b 100644
--- a/maps/tether/submaps/beach/cave.dmm
+++ b/maps/tether/submaps/beach/cave.dmm
@@ -31,14 +31,14 @@
"j" = (
/turf/unsimulated/wall/planetary/normal,
/area/tether_away/cave/explored/normal)
-"k" = (
-/mob/living/simple_animal/hostile/deathclaw,
-/turf/simulated/mineral/floor/ignore_mapgen/cave,
-/area/tether_away/cave/explored/deep)
-"l" = (
-/mob/living/simple_animal/hostile/deathclaw,
+"r" = (
+/obj/tether_away_spawner/beach_cave,
/turf/simulated/mineral/floor/ignore_mapgen/cave,
/area/tether_away/cave/explored/normal)
+"x" = (
+/obj/tether_away_spawner/beach_cave,
+/turf/simulated/mineral/floor/ignore_mapgen/cave,
+/area/tether_away/cave/explored/deep)
(1,1,1) = {"
g
@@ -1559,7 +1559,7 @@ a
a
a
b
-k
+b
b
a
a
@@ -1681,7 +1681,7 @@ a
a
a
b
-b
+x
b
b
a
@@ -3034,7 +3034,7 @@ a
c
d
d
-d
+r
d
d
d
@@ -3290,7 +3290,7 @@ c
c
d
d
-d
+r
d
c
c
@@ -3405,7 +3405,7 @@ d
d
d
d
-l
+d
d
d
d
@@ -5490,7 +5490,7 @@ c
c
c
d
-d
+r
d
c
c
@@ -7816,7 +7816,7 @@ d
d
d
d
-l
+d
d
d
c
@@ -8060,7 +8060,7 @@ d
d
d
d
-d
+r
d
d
c
@@ -8433,7 +8433,7 @@ c
d
d
d
-d
+r
d
c
c
@@ -9638,7 +9638,7 @@ c
c
d
d
-d
+r
d
d
c
@@ -9960,7 +9960,7 @@ b
b
b
b
-k
+b
b
a
b
@@ -10085,7 +10085,7 @@ b
b
b
b
-b
+x
b
a
a
@@ -10363,7 +10363,7 @@ c
c
d
d
-d
+r
d
d
c
@@ -10841,7 +10841,7 @@ a
a
c
d
-d
+r
d
d
d
@@ -11900,7 +11900,7 @@ a
a
a
b
-b
+x
b
b
a
diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm
index 072f8142da..b2d5bf42d3 100644
--- a/maps/tether/tether-05-station1.dmm
+++ b/maps/tether/tether-05-station1.dmm
@@ -3754,11 +3754,8 @@
icon_state = "warning";
dir = 9
},
-/obj/machinery/atmospherics/unary/vent_pump/high_volume{
- frequency = 1380;
- id_tag = "expshuttle_vent"
- },
/obj/machinery/embedded_controller/radio/airlock/docking_port{
+ cycle_to_external_air = 1;
frequency = 1380;
id_tag = "expshuttle_docker";
pixel_y = 26;
@@ -3766,23 +3763,31 @@
tag_airpump = "expshuttle_vent";
tag_chamber_sensor = "expshuttle_sensor";
tag_exterior_door = "expshuttle_door_Ro";
+ tag_exterior_sensor = "expshuttle_exterior_sensor";
tag_interior_door = "expshuttle_door_Ri"
},
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 8;
+ frequency = 1380;
+ id_tag = "expshuttle_docker_pump_out_internal"
+ },
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
"alk" = (
/obj/effect/floor_decal/industrial/warning{
dir = 5
},
-/obj/machinery/atmospherics/unary/vent_pump/high_volume{
- frequency = 1380;
- id_tag = "expshuttle_vent"
- },
/obj/machinery/airlock_sensor{
frequency = 1380;
id_tag = "expshuttle_sensor";
+ master_tag = "expshuttle_docker";
pixel_y = 28
},
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1380;
+ id_tag = "expshuttle_vent"
+ },
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
"alm" = (
@@ -4218,8 +4223,11 @@
icon_state = "warning";
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold4w/visible,
-/obj/machinery/meter,
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 8;
+ frequency = 1380;
+ id_tag = "expshuttle_docker_pump_out_internal"
+ },
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
"amJ" = (
@@ -4227,16 +4235,15 @@
frequency = 1380;
id_tag = "expshuttle_door_Ri"
},
-/obj/machinery/atmospherics/pipe/simple/visible{
- icon_state = "intact";
- dir = 6
- },
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1380;
master_tag = "expshuttle_docker";
pixel_y = -24
},
+/obj/machinery/atmospherics/pipe/manifold/visible/yellow{
+ dir = 8
+ },
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
"amK" = (
@@ -4244,11 +4251,16 @@
frequency = 1380;
id_tag = "expshuttle_door_Ro"
},
-/obj/machinery/access_button{
- command = "cycle_exterior";
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 4
+ },
+/obj/machinery/airlock_sensor/airlock_exterior/shuttle{
+ dir = 6;
frequency = 1380;
+ id_tag = "expshuttle_exterior_sensor";
master_tag = "expshuttle_docker";
- pixel_y = 24
+ pixel_x = 4;
+ pixel_y = 28
},
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
@@ -4257,9 +4269,10 @@
icon_state = "warning";
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/visible{
- icon_state = "map";
- dir = 4
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1380;
+ id_tag = "expshuttle_vent"
},
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
@@ -4691,9 +4704,9 @@
dir = 10
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
- dir = 1;
+ dir = 8;
frequency = 1380;
- id_tag = "expshuttle_vent"
+ id_tag = "expshuttle_docker_pump_out_internal"
},
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
@@ -4711,15 +4724,15 @@
/obj/effect/floor_decal/industrial/warning{
dir = 6
},
-/obj/machinery/atmospherics/unary/vent_pump/high_volume{
- dir = 1;
- frequency = 1380;
- id_tag = "expshuttle_vent"
- },
/obj/machinery/light{
icon_state = "tube1";
dir = 4
},
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1380;
+ id_tag = "expshuttle_vent"
+ },
/turf/simulated/shuttle/floor/black,
/area/shuttle/excursion/tether)
"aoc" = (
@@ -5090,20 +5103,17 @@
/turf/simulated/floor,
/area/maintenance/station/eng_lower)
"apk" = (
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 10
+ },
/obj/machinery/atmospherics/pipe/tank/air{
- dir = 8;
+ dir = 4;
icon_state = "air_map";
+ start_pressure = 300;
volume = 20000
},
/turf/simulated/shuttle/floor/darkred,
/area/shuttle/excursion/tether)
-"apl" = (
-/obj/machinery/atmospherics/pipe/simple/visible{
- icon_state = "intact";
- dir = 5
- },
-/turf/simulated/shuttle/wall/voidcraft,
-/area/shuttle/excursion/tether)
"apn" = (
/obj/machinery/light{
icon_state = "tube1";
@@ -7337,7 +7347,9 @@
/turf/simulated/floor/tiled/monotile,
/area/tether/station/excursion_dock)
"auV" = (
-/obj/machinery/atmospherics/pipe/simple/visible,
+/obj/machinery/atmospherics/pipe/manifold/visible/yellow{
+ dir = 8
+ },
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
"auW" = (
@@ -21536,6 +21548,25 @@
/obj/structure/closet/emcloset,
/turf/simulated/floor/tiled,
/area/bridge_hallway)
+"gcH" = (
+/obj/effect/floor_decal/borderfloorblack{
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/danger{
+ dir = 1
+ },
+/obj/machinery/meter,
+/turf/simulated/floor/tiled,
+/area/tether/station/excursion_dock)
+"oVP" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted{
+ dir = 1;
+ frequency = 1380;
+ id_tag = "expshuttle_docker_pump_out_external";
+ power_rating = 20000
+ },
+/turf/simulated/shuttle/wall/voidcraft,
+/area/shuttle/excursion/tether)
"poz" = (
/obj/machinery/camera/network/northern_star{
dir = 8
@@ -21560,6 +21591,9 @@
dir = 5;
id_tag = "shuttlesens_exp"
},
+/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
+ dir = 4
+ },
/turf/simulated/shuttle/wall/voidcraft,
/area/shuttle/excursion/tether)
"CaJ" = (
@@ -21609,6 +21643,33 @@
/obj/structure/closet/secure_closet/guncabinet/excursion,
/turf/simulated/floor/tiled/monotile,
/area/tether/station/explorer_prep)
+"PYd" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 10
+ },
+/turf/simulated/shuttle/wall/voidcraft,
+/area/shuttle/excursion/tether)
+"Qua" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 9
+ },
+/turf/simulated/shuttle/wall/voidcraft,
+/area/shuttle/excursion/tether)
+"TpR" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/atmospherics/pipe/simple/visible/yellow{
+ dir = 6
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/excursion/tether)
+"UkI" = (
+/obj/machinery/atmospherics/pipe/simple/visible/cyan{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/simulated/shuttle/floor/darkred,
+/area/shuttle/excursion/tether)
"Vrx" = (
/obj/machinery/camera/network/northern_star,
/turf/simulated/floor/tiled,
@@ -30556,11 +30617,11 @@ aaM
aaD
ajQ
aaq
-aaJ
+TpR
amJ
auV
-apl
-aaq
+auV
+oVP
aap
avK
auO
@@ -30682,9 +30743,9 @@ ali
amI
anX
apk
-aaq
+oVP
aap
-avK
+gcH
auF
aad
axI
@@ -30803,7 +30864,7 @@ aaq
alk
amL
aob
-adB
+UkI
aaq
aaO
avK
@@ -30922,10 +30983,10 @@ aap
aap
aap
aaq
-aaq
+PYd
amK
AyD
-aaq
+Qua
aau
aaO
avK
diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm
index a7c27e9c08..c22600f858 100644
--- a/maps/tether/tether_defines.dm
+++ b/maps/tether/tether_defines.dm
@@ -115,14 +115,13 @@
/area/tether/surfacebase/emergency_storage/atrium)
lateload_z_levels = list(
- "Tether - Misc",
- "Tether - Ships"
+ list("Tether - Misc","Tether - Ships"), //Stock Tether lateload maps
+ list("Alien Ship - Z1 Ship"),
+ list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"),
+ list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface")
)
- lateload_single_pick = list(
- list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"),
- "Alien Ship - Z1 Ship"
- )
+ lateload_single_pick = null //Nothing right now.
/datum/map/tether/perform_map_generation()
diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm
index 058b39c0dc..b41ede7b5e 100644
--- a/maps/tether/tether_shuttles.dm
+++ b/maps/tether/tether_shuttles.dm
@@ -175,6 +175,14 @@
shuttle_tag = "Excursion Shuttle"
req_access = list()
req_one_access = list(access_heads,access_explorer,access_pilot)
+ var/wait_time = 45 MINUTES
+
+/obj/machinery/computer/shuttle_control/web/excursion/ui_interact()
+ if(world.time < wait_time)
+ to_chat(usr,"The console is locked while the shuttle refuels. It will be complete in [round((wait_time - world.time)/10/60)] minute\s.")
+ return FALSE
+
+ . = ..()
/datum/shuttle/web_shuttle/excursion
name = "Excursion Shuttle"
@@ -182,6 +190,22 @@
current_area = /area/shuttle/excursion/tether
docking_controller_tag = "expshuttle_docker"
web_master_type = /datum/shuttle_web_master/excursion
+ var/abduct_chance = 1 //Prob
+
+/datum/shuttle/web_shuttle/excursion/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction)
+ if(prob(abduct_chance))
+ abduct_chance = 0
+ //Build the route to the alien ship
+ var/obj/shuttle_connector/alienship/ASC = new /obj/shuttle_connector/alienship(null)
+ ASC.setup_routes()
+
+ //Redirect us onto that route instead
+ var/datum/shuttle/web_shuttle/WS = shuttle_controller.shuttles[name]
+ var/datum/shuttle_destination/ASD = WS.web_master.get_destination_by_type(/datum/shuttle_destination/excursion/alienship)
+ WS.web_master.future_destination = ASD
+ . = ..(departing,ASD.my_area,interim,travel_time,direction)
+ else
+ . = ..()
/datum/shuttle_web_master/excursion
destination_class = /datum/shuttle_destination/excursion
diff --git a/vorestation.dme b/vorestation.dme
index a5f8047f95..284923f123 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -204,6 +204,7 @@
#include "code\controllers\subsystems\persist_vr.dm"
#include "code\controllers\subsystems\shuttles.dm"
#include "code\controllers\subsystems\transcore_vr.dm"
+#include "code\controllers\subsystems\xenoarch.dm"
#include "code\datums\ai_law_sets.dm"
#include "code\datums\ai_laws.dm"
#include "code\datums\beam.dm"
@@ -929,6 +930,7 @@
#include "code\game\objects\items\devices\suit_cooling.dm"
#include "code\game\objects\items\devices\t_scanner.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
+#include "code\game\objects\items\devices\text_to_speech.dm"
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
#include "code\game\objects\items\devices\translator.dm"
@@ -1232,6 +1234,7 @@
#include "code\game\turfs\unsimulated\floor.dm"
#include "code\game\turfs\unsimulated\planetary.dm"
#include "code\game\turfs\unsimulated\shuttle.dm"
+#include "code\game\turfs\unsimulated\sky_vr.dm"
#include "code\game\turfs\unsimulated\walls.dm"
#include "code\game\verbs\advanced_who.dm"
#include "code\game\verbs\ignore.dm"
@@ -2137,8 +2140,10 @@
#include "code\modules\mob\living\simple_animal\vore\frog.dm"
#include "code\modules\mob\living\simple_animal\vore\gaslamp.dm"
#include "code\modules\mob\living\simple_animal\vore\horse.dm"
+#include "code\modules\mob\living\simple_animal\vore\jelly.dm"
#include "code\modules\mob\living\simple_animal\vore\otie.dm"
#include "code\modules\mob\living\simple_animal\vore\panther.dm"
+#include "code\modules\mob\living\simple_animal\vore\shadekin.dm"
#include "code\modules\mob\living\simple_animal\vore\snake.dm"
#include "code\modules\mob\living\simple_animal\vore\solargrub.dm"
#include "code\modules\mob\living\simple_animal\vore\solargrub_larva.dm"
@@ -2293,6 +2298,7 @@
#include "code\modules\power\fusion\fusion_particle_catcher.dm"
#include "code\modules\power\fusion\fusion_reactions.dm"
#include "code\modules\power\fusion\fusion_reagents.dm"
+#include "code\modules\power\fusion\magpower.dm"
#include "code\modules\power\fusion\core\_core.dm"
#include "code\modules\power\fusion\core\core_control.dm"
#include "code\modules\power\fusion\core\core_field.dm"
@@ -2335,6 +2341,7 @@
#include "code\modules\projectiles\ammunition\rounds.dm"
#include "code\modules\projectiles\guns\energy.dm"
#include "code\modules\projectiles\guns\launcher.dm"
+#include "code\modules\projectiles\guns\modular_guns.dm"
#include "code\modules\projectiles\guns\projectile.dm"
#include "code\modules\projectiles\guns\vox.dm"
#include "code\modules\projectiles\guns\energy\laser.dm"
@@ -2672,7 +2679,6 @@
#include "code\modules\xenoarcheaology\boulder.dm"
#include "code\modules\xenoarcheaology\effect.dm"
#include "code\modules\xenoarcheaology\manuals.dm"
-#include "code\modules\xenoarcheaology\master_controller.dm"
#include "code\modules\xenoarcheaology\misc.dm"
#include "code\modules\xenoarcheaology\misc_vr.dm"
#include "code\modules\xenoarcheaology\sampling.dm"