diff --git a/.travis.yml b/.travis.yml
index 75d81c06453..cea5f854c91 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,7 @@ env:
global:
- BASENAME="vorestation" # $BASENAME.dmb, $BASENAME.dme, etc.
- BYOND_MAJOR="513"
- - BYOND_MINOR="1513"
+ - BYOND_MINOR="1520"
- MACRO_COUNT=4
cache:
diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm
index 37f4bff5f9d..fd55905300e 100644
--- a/code/__defines/subsystems.dm
+++ b/code/__defines/subsystems.dm
@@ -74,7 +74,8 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
#define INIT_ORDER_XENOARCH -20
#define INIT_ORDER_CIRCUIT -21
#define INIT_ORDER_AI -22
-#define INIT_ORDER_GAME_MASTER -24
+#define INIT_ORDER_AI_FAST -23
+#define INIT_ORDER_GAME_MASTER -24
#define INIT_ORDER_TICKER -50
#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.
diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm
index 17a25448500..119f9d554fa 100644
--- a/code/_helpers/game.dm
+++ b/code/_helpers/game.dm
@@ -272,17 +272,17 @@
var/list/hearturfs = list()
for(var/thing in hear)
- if(istype(thing,/obj))
+ if(istype(thing, /obj)) //Can't use isobj() because /atom/movable returns true in that, and so lighting overlays would be included
objs += thing
hearturfs |= get_turf(thing)
- else if(istype(thing,/mob))
+ if(ismob(thing))
mobs += thing
hearturfs |= get_turf(thing)
//A list of every mob with a client
for(var/mob in player_list)
//VOREStation Edit - Trying to fix some vorestation bug.
- if(!istype(mob, /mob))
+ if(!ismob(mob))
player_list -= mob
crash_with("There is a null or non-mob reference inside player_list ([mob]).")
continue
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index a0a38bf9d15..2362ff1b3df 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1273,14 +1273,8 @@ var/mob/dview/dview_mob = new
if(!center)
return
- //VOREStation Add - Emergency Backup
- if(!dview_mob)
- dview_mob = new()
- WARNING("dview mob was lost, and had to be recreated!")
- //VOREStation Add End
-
dview_mob.loc = center
-
+
dview_mob.see_invisible = invis_flags
. = view(range, dview_mob)
diff --git a/code/controllers/subsystems/ai.dm b/code/controllers/subsystems/ai.dm
index a111b83e434..5ebbb22a2fe 100644
--- a/code/controllers/subsystems/ai.dm
+++ b/code/controllers/subsystems/ai.dm
@@ -2,8 +2,8 @@ SUBSYSTEM_DEF(ai)
name = "AI"
init_order = INIT_ORDER_AI
priority = FIRE_PRIORITY_AI
- wait = 5 // This gets run twice a second, however this is technically two loops in one, with the second loop being run every four iterations.
- flags = SS_NO_INIT|SS_TICKER
+ wait = 2 SECONDS
+ flags = SS_NO_INIT
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/processing = list()
@@ -22,15 +22,11 @@ SUBSYSTEM_DEF(ai)
var/list/currentrun = src.currentrun
while(currentrun.len)
- // var/mob/living/L = currentrun[currentrun.len]
var/datum/ai_holder/A = currentrun[currentrun.len]
--currentrun.len
if(!A || QDELETED(A) || A.busy) // Doesn't exist or won't exist soon or not doing it this tick
continue
- if(times_fired % 4 == 0 && A.holder.stat != DEAD)
- A.handle_strategicals()
- if(A.holder.stat != DEAD) // The /TG/ version checks stat twice, presumably in-case processing somehow got the mob killed in that instant.
- A.handle_tactics()
+ A.handle_strategicals()
if(MC_TICK_CHECK)
return
diff --git a/code/controllers/subsystems/aifast.dm b/code/controllers/subsystems/aifast.dm
new file mode 100644
index 00000000000..f045a7fd35c
--- /dev/null
+++ b/code/controllers/subsystems/aifast.dm
@@ -0,0 +1,32 @@
+SUBSYSTEM_DEF(aifast)
+ name = "AI (Fast)"
+ init_order = INIT_ORDER_AI_FAST
+ priority = FIRE_PRIORITY_AI
+ wait = 0.25 SECONDS // Every quarter second
+ flags = SS_NO_INIT
+ runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
+
+ var/list/processing = list()
+ var/list/currentrun = list()
+
+/datum/controller/subsystem/aifast/stat_entry(msg_prefix)
+ var/list/msg = list(msg_prefix)
+ msg += "P:[processing.len]"
+ ..(msg.Join())
+
+/datum/controller/subsystem/aifast/fire(resumed = 0)
+ if (!resumed)
+ src.currentrun = processing.Copy()
+
+ //cache for sanic speed (lists are references anyways)
+ var/list/currentrun = src.currentrun
+
+ while(currentrun.len)
+ var/datum/ai_holder/A = currentrun[currentrun.len]
+ --currentrun.len
+ if(!A || QDELETED(A) || A.busy) // Doesn't exist or won't exist soon or not doing it this tick
+ continue
+ A.handle_tactics()
+
+ if(MC_TICK_CHECK)
+ return
diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm
index 684505aa57c..65576a52a72 100644
--- a/code/datums/helper_datums/teleport.dm
+++ b/code/datums/helper_datums/teleport.dm
@@ -98,7 +98,6 @@
var/turf/destturf
var/turf/curturf = get_turf(teleatom)
- var/area/destarea = get_area(destination)
if(precision)
var/list/posturfs = circlerangeturfs(destination,precision)
destturf = safepick(posturfs)
@@ -125,8 +124,6 @@
if(C)
C.forceMove(destturf)
- destarea.Entered(teleatom)
-
return 1
/datum/teleport/proc/teleport()
diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm
index 10ddb9b7b07..1b48efcb9d2 100644
--- a/code/datums/outfits/jobs/cargo.dm
+++ b/code/datums/outfits/jobs/cargo.dm
@@ -5,6 +5,7 @@
/decl/hierarchy/outfit/job/cargo/qm
name = OUTFIT_JOB_NAME("Cargo")
uniform = /obj/item/clothing/under/rank/cargo
+ l_ear = /obj/item/device/radio/headset/headset_qm //VOREStation Add
shoes = /obj/item/clothing/shoes/brown
glasses = /obj/item/clothing/glasses/sunglasses
l_hand = /obj/item/weapon/clipboard
diff --git a/code/datums/outfits/outfit_vr.dm b/code/datums/outfits/outfit_vr.dm
index 27e5cde50ef..d8a8a58d218 100644
--- a/code/datums/outfits/outfit_vr.dm
+++ b/code/datums/outfits/outfit_vr.dm
@@ -101,3 +101,76 @@
r_hand = /obj/item/weapon/melee/energy/sword/imperial
l_hand = /obj/item/weapon/shield/energy/imperial
suit_store = /obj/item/weapon/gun/energy/imperial
+
+/*
+SOUTHERN CROSS OUTFITS
+Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead goes in lockers. Keep this in mind if editing.
+*/
+
+
+/decl/hierarchy/outfit/job/explorer2
+ name = OUTFIT_JOB_NAME("Explorer")
+ shoes = /obj/item/clothing/shoes/boots/winter/explorer
+ uniform = /obj/item/clothing/under/explorer
+ l_ear = /obj/item/device/radio/headset/explorer
+ id_slot = slot_wear_id
+ pda_slot = slot_l_store
+ pda_type = /obj/item/device/pda/explorer //VORESTation Edit - Better Brown
+ id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit
+ id_pda_assignment = "Explorer"
+ flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
+ backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1)
+
+/decl/hierarchy/outfit/job/explorer2/post_equip(mob/living/carbon/human/H)
+ ..()
+ for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents)
+ permit.set_name(H.real_name)
+
+/decl/hierarchy/outfit/job/pilot
+ name = OUTFIT_JOB_NAME("Pilot")
+ shoes = /obj/item/clothing/shoes/black
+ uniform = /obj/item/clothing/under/rank/pilot1
+ suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot
+ gloves = /obj/item/clothing/gloves/fingerless
+ glasses = /obj/item/clothing/glasses/fakesunglasses/aviator
+ l_ear = /obj/item/device/radio/headset/pilot/alt
+ id_slot = slot_wear_id
+ pda_slot = slot_belt
+ pda_type = /obj/item/device/pda //VOREStation Edit - Civilian
+ id_pda_assignment = "Pilot"
+ flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
+
+/decl/hierarchy/outfit/job/medical/sar
+ name = OUTFIT_JOB_NAME("Field Medic") //VOREStation Edit
+ uniform = /obj/item/clothing/under/utility/blue
+ //suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar //VOREStation Edit
+ shoes = /obj/item/clothing/shoes/boots/winter/explorer
+ l_ear = /obj/item/device/radio/headset/sar
+ l_hand = /obj/item/weapon/storage/firstaid/regular
+ belt = /obj/item/weapon/storage/belt/medical/emt
+ pda_slot = slot_l_store
+ pda_type = /obj/item/device/pda/sar //VOREStation Add
+ id_pda_assignment = "Field Medic" //VOREStation Edit
+ flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
+
+/decl/hierarchy/outfit/job/pathfinder
+ name = OUTFIT_JOB_NAME("Pathfinder")
+ shoes = /obj/item/clothing/shoes/boots/winter/explorer
+ uniform = /obj/item/clothing/under/explorer //TODO: Uniforms.
+ l_ear = /obj/item/device/radio/headset/explorer
+ id_slot = slot_wear_id
+ pda_slot = slot_l_store
+ pda_type = /obj/item/device/pda/pathfinder
+ id_type = /obj/item/weapon/card/id/explorer/head
+ id_pda_assignment = "Pathfinder"
+ flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
+ backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1)
+
+/decl/hierarchy/outfit/job/pathfinder/post_equip(mob/living/carbon/human/H)
+ ..()
+ for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents)
+ permit.set_name(H.real_name)
+
+/decl/hierarchy/outfit/job/assistant/explorer
+ id_type = /obj/item/weapon/card/id/explorer
+ flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm
index c739ffbf852..4b5d8f28a77 100644
--- a/code/defines/procs/announce.dm
+++ b/code/defines/procs/announce.dm
@@ -32,7 +32,7 @@
title = "Security Announcement"
announcement_type = "Security Announcement"
-/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, zlevel)
+/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, var/zlevel)
if(!message)
return
var/message_title = new_title ? new_title : title
@@ -52,11 +52,38 @@
Sound(message_sound, zlevels)
Log(message, message_title)
-datum/announcement/proc/Message(var/message as text, var/message_title as text, var/list/zlevels)
- global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels)
+datum/announcement/proc/Message(message as text, message_title as text, var/list/zlevels)
+ for(var/mob/M in player_list)
+ if(!istype(M,/mob/new_player) && !isdeaf(M))
+ to_chat(M, "
[title]
")
+ to_chat(M, "[message]")
+ if (announcer)
+ to_chat(M, " -[html_encode(announcer)]")
-datum/announcement/minor/Message(var/message as text, var/message_title as text, var/list/zlevels)
- global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME, zlevels)
+// You'll need to update these to_world usages if you want to make these z-level specific ~Aro
+datum/announcement/minor/Message(message as text, message_title as text)
+ to_world("[message]")
+
+datum/announcement/priority/Message(message as text, message_title as text)
+ to_world("[message_title]
")
+ to_world("[message]")
+ if(announcer)
+ to_world(" -[html_encode(announcer)]")
+ to_world("
")
+
+datum/announcement/priority/command/Message(message as text, message_title as text, var/list/zlevels)
+ var/command
+ command += "[command_name()] Update
"
+ if (message_title)
+ command += "
[message_title]
"
+
+ command += "
[message]
"
+ command += "
"
+ for(var/mob/M in player_list)
+ if(zlevels && !(get_z(M) in zlevels))
+ continue
+ if(!istype(M,/mob/new_player) && !isdeaf(M))
+ to_chat(M, command)
datum/announcement/priority/Message(var/message as text, var/message_title as text, var/list/zlevels)
global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels)
diff --git a/code/game/area/areas_vr.dm b/code/game/area/areas_vr.dm
index 6c4948fd4fb..5396c46e601 100644
--- a/code/game/area/areas_vr.dm
+++ b/code/game/area/areas_vr.dm
@@ -4,10 +4,10 @@
/area/Entered(var/atom/movable/AM, oldLoc)
. = ..()
- if(enter_message && ismob(AM))
+ if(enter_message && isliving(AM))
to_chat(AM, enter_message)
/area/Exited(var/atom/movable/AM, newLoc)
. = ..()
- if(exit_message && ismob(AM))
+ if(exit_message && isliving(AM))
to_chat(AM, exit_message)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 4323cb974f9..b711274be62 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -7,7 +7,6 @@
var/moving_diagonally
var/move_speed = 10
var/l_move_time = 1
- var/m_flag = 1
var/throwing = 0
var/thrower
var/turf/throw_source = null
@@ -65,71 +64,80 @@
return ..()
////////////////////////////////////////
-// Here's where we rewrite how byond handles movement except slightly different
-// To be removed on step_ conversion
-// All this work to prevent a second bump
-/atom/movable/Move(atom/newloc, direct=0)
- . = FALSE
- if(!newloc || newloc == loc)
- return
-
- if(!direct)
- direct = get_dir(src, newloc)
- set_dir(direct)
-
- if(!loc.Exit(src, newloc))
- return
-
- if(!newloc.Enter(src, src.loc))
- return
-
- if(!check_multi_tile_move_density_dir(direct, locs)) // We're big, and we can't move that way.
- return
-
- // Past this is the point of no return
- if(!locs || locs.len <= 1) // We're not a multi-tile object.
- var/atom/oldloc = loc
- var/area/oldarea = get_area(oldloc)
- var/area/newarea = get_area(newloc)
- loc = newloc
- . = TRUE
- oldloc.Exited(src, newloc)
- if(oldarea != newarea)
- oldarea.Exited(src, newloc)
-
- for(var/i in oldloc)
- if(i == src) // Multi tile objects
- continue
- var/atom/movable/thing = i
- thing.Uncrossed(src)
-
- newloc.Entered(src, oldloc)
- if(oldarea != newarea)
- newarea.Entered(src, oldloc)
-
- for(var/i in loc)
- if(i == src) // Multi tile objects
- continue
- var/atom/movable/thing = i
- thing.Crossed(src)
-
- else if(newloc) // We're a multi-tile object.
- . = doMove(newloc)
-
-//
-////////////////////////////////////////
-
/atom/movable/Move(atom/newloc, direct = 0)
+ // Didn't pass enough info
if(!loc || !newloc)
return FALSE
+
+ // Store this early before we might move, it's used several places
var/atom/oldloc = loc
+ // If we're not moving to the same spot (why? does that even happen?)
if(loc != newloc)
if(!direct)
direct = get_dir(oldloc, newloc)
- if (!(direct & (direct - 1))) //Cardinal move
- . = ..()
- else //Diagonal move, split it into cardinal moves
+ if (IS_CARDINAL(direct)) //Cardinal move
+ // Track our failure if any in this value
+ . = TRUE
+
+ // Face the direction of movement
+ set_dir(direct)
+
+ // Check to make sure we can leave
+ if(!loc.Exit(src, newloc))
+ . = FALSE
+
+ // Check to make sure we can enter, if we haven't already failed
+ if(. && !newloc.Enter(src, src.loc))
+ . = FALSE
+
+ // Check to make sure if we're multi-tile we can move, if we haven't already failed
+ if(. && !check_multi_tile_move_density_dir(direct, locs))
+ . = FALSE
+
+ // Definitely moving if you enter this, no failures so far
+ if(. && locs.len <= 1) // We're not a multi-tile object.
+ var/area/oldarea = get_area(oldloc)
+ var/area/newarea = get_area(newloc)
+ var/old_z = get_z(oldloc)
+ var/dest_z = get_z(newloc)
+
+ // Do The Move
+ loc = newloc
+ . = TRUE
+
+ // So objects can be informed of z-level changes
+ if (old_z != dest_z)
+ onTransitZ(old_z, dest_z)
+
+ // We don't call parent so we are calling this for byond
+ oldloc.Exited(src, newloc)
+ if(oldarea != newarea)
+ oldarea.Exited(src, newloc)
+
+ // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself
+ for(var/i in oldloc)
+ var/atom/movable/thing = i
+ // We don't call parent so we are calling this for byond
+ thing.Uncrossed(src)
+
+ // We don't call parent so we are calling this for byond
+ newloc.Entered(src, oldloc)
+ if(oldarea != newarea)
+ newarea.Entered(src, oldloc)
+
+ // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself
+ for(var/i in loc)
+ var/atom/movable/thing = i
+ // We don't call parent so we are calling this for byond
+ thing.Crossed(src)
+
+ // We're a multi-tile object (multiple locs)
+ else if(. && newloc)
+ . = doMove(newloc)
+
+ //Diagonal move, split it into cardinal moves
+ else
moving_diagonally = FIRST_DIAG_STEP
var/first_step_dir
// The `&& moving_diagonally` checks are so that a forceMove taking
@@ -174,32 +182,32 @@
first_step_dir = WEST
moving_diagonally = SECOND_DIAG_STEP
. = step(src, SOUTH)
- if(moving_diagonally == SECOND_DIAG_STEP)
- if(!.)
- set_dir(first_step_dir)
- //else if (!inertia_moving)
- // inertia_next_move = world.time + inertia_move_delay
- // newtonian_move(direct)
+ // If we failed, turn to face the direction of the first step at least
+ if(!. && moving_diagonally == SECOND_DIAG_STEP)
+ set_dir(first_step_dir)
+ // Done, regardless!
moving_diagonally = 0
+ // We return because step above will call Move() and we don't want to do shenanigans back in here again
return
- if(!loc || (loc == oldloc && oldloc != newloc))
+ else if(!loc || (loc == oldloc))
last_move = 0
return
+ // If we moved, call Moved() on ourselves
if(.)
- Moved(oldloc, direct)
+ Moved(oldloc, direct, FALSE)
- //Polaris stuff
+ // Update timers/cooldown stuff
move_speed = world.time - l_move_time
l_move_time = world.time
- m_flag = 1
- //End
+ last_move = direct // The direction you last moved
+ // set_dir(direct) //Don't think this is necessary
- last_move = direct
- set_dir(direct)
- if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
- return FALSE
+ // Handle any buckled mobs on this movable
+ if(has_buckled_mobs())
+ handle_buckled_mob_movement(oldloc,direct)
+
//VOREStation Add
else if(. && riding_datum)
riding_datum.handle_vehicle_layer()
@@ -207,19 +215,12 @@
//VOREStation Add End
//Called after a successful Move(). By this point, we've already moved
-/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
- //if (!inertia_moving)
- // inertia_next_move = world.time + inertia_move_delay
- // newtonian_move(Dir)
- //if (length(client_mobs_in_contents))
- // update_parallax_contents()
-
+/atom/movable/proc/Moved(atom/old_loc, direction, forced = FALSE)
return TRUE
// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly.
// You probably want CanPass()
/atom/movable/Cross(atom/movable/AM)
- . = TRUE
return CanPass(AM, loc)
/atom/movable/CanPass(atom/movable/mover, turf/target)
@@ -261,56 +262,87 @@
return doMove(null)
/atom/movable/proc/doMove(atom/destination)
- . = FALSE
+ var/atom/oldloc = loc
+ var/area/old_area = get_area(oldloc)
+ var/same_loc = oldloc == destination
+
if(destination)
- var/atom/oldloc = loc
- var/same_loc = oldloc == destination
- var/area/old_area = get_area(oldloc)
var/area/destarea = get_area(destination)
+ // Do The Move
+ last_move = 0
loc = destination
+
+ // Unset this in case it was set in some other proc. We're no longer moving diagonally for sure.
moving_diagonally = 0
+ // We are moving to a different loc
if(!same_loc)
+ // Not moving out of nullspace
if(oldloc)
oldloc.Exited(src, destination)
+ // If it's not the same area, Exited() it
if(old_area && old_area != destarea)
old_area.Exited(src, destination)
- for(var/atom/movable/AM in oldloc)
+
+ // Uncross everything where we left
+ for(var/i in oldloc)
+ var/atom/movable/AM = i
+ if(AM == src)
+ continue
AM.Uncrossed(src)
+
+ // Information about turf and z-levels for source and dest collected
var/turf/oldturf = get_turf(oldloc)
var/turf/destturf = get_turf(destination)
var/old_z = (oldturf ? oldturf.z : null)
var/dest_z = (destturf ? destturf.z : null)
+
+ // So objects can be informed of z-level changes
if (old_z != dest_z)
onTransitZ(old_z, dest_z)
+
+ // Destination atom Entered
destination.Entered(src, oldloc)
+
+ // Entered() the new area if it's not the same area
if(destarea && old_area != destarea)
destarea.Entered(src, oldloc)
- for(var/atom/movable/AM in destination)
+ // We ignore ourselves because if we're multi-tile we might be in both old and new locs
+ for(var/i in destination)
+ var/atom/movable/AM = i
if(AM == src)
continue
AM.Crossed(src, oldloc)
+ // Call our thingy to inform everyone we moved
+ Moved(oldloc, NONE, TRUE)
+
// Break pulling if we are too far to pull now.
if(pulledby && (pulledby.z != src.z || get_dist(pulledby, src) > 1))
pulledby.stop_pulling()
- Moved(oldloc, NONE, TRUE)
- . = TRUE
+ // We moved
+ return TRUE
//If no destination, move the atom into nullspace (don't do this unless you know what you're doing)
- else
- . = TRUE
- if (loc)
- var/atom/oldloc = loc
- var/area/old_area = get_area(oldloc)
- oldloc.Exited(src, null)
- if(old_area)
- old_area.Exited(src, null)
+ else if(oldloc)
loc = null
+ // Uncross everything where we left (no multitile safety like above because we are definitely not still there)
+ for(var/i in oldloc)
+ var/atom/movable/AM = i
+ AM.Uncrossed(src)
+
+ // Exited() our loc and area
+ oldloc.Exited(src, null)
+ if(old_area)
+ old_area.Exited(src, null)
+
+ // We moved
+ return TRUE
+
/atom/movable/proc/onTransitZ(old_z,new_z)
GLOB.z_moved_event.raise_event(src, old_z, new_z)
for(var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care.
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 020ab54f0ec..0b0b8d014c7 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -138,14 +138,13 @@
. = ..() //process movement...
- if(.)//.. if did move, ram the turf we get in
- var/turf/T = get_turf(loc)
- ram_turf(T)
+/obj/effect/meteor/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ var/turf/T = get_turf(loc)
+ ram_turf(T)
- if(prob(10) && !istype(T, /turf/space))//randomly takes a 'hit' from ramming
- get_hit()
-
- return .
+ if(prob(10) && !istype(T, /turf/space)) //randomly takes a 'hit' from ramming
+ get_hit()
/obj/effect/meteor/Destroy()
walk(src,0) //this cancels the walk_towards() proc
diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm
index ea9f8ebed9b..f08a1b4079d 100644
--- a/code/game/jobs/job/captain_vr.dm
+++ b/code/game/jobs/job/captain_vr.dm
@@ -5,6 +5,8 @@
/datum/job/hop
disallow_jobhop = TRUE
pto_type = PTO_CIVILIAN
+ departments = list(DEPARTMENT_COMMAND, DEPARTMENT_CIVILIAN)
+ departments_managed = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO, DEPARTMENT_PLANET)
alt_titles = list("Crew Resources Officer" = /datum/alt_title/cro,
"Deputy Director" = /datum/alt_title/deputy_director)
diff --git a/maps/southern_cross/southern_cross_jobs_vr.dm b/code/game/jobs/job/exploration_vr.dm
similarity index 82%
rename from maps/southern_cross/southern_cross_jobs_vr.dm
rename to code/game/jobs/job/exploration_vr.dm
index ca117281896..987041de613 100644
--- a/maps/southern_cross/southern_cross_jobs_vr.dm
+++ b/code/game/jobs/job/exploration_vr.dm
@@ -39,16 +39,16 @@ var/const/SAR =(1<<14)
faction = "Station"
total_positions = 1
spawn_positions = 1
- supervisors = "the research director"
+ supervisors = "the Head of Personnel"
selection_color = "#d6d05c"
- economic_modifier = 7
+ economic_modifier = 8
minimal_player_age = 7
pto_type = PTO_EXPLORATION
- access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_research, access_gateway)
- minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_research, access_gateway)
+ access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
+ minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
outfit_type = /decl/hierarchy/outfit/job/pathfinder
- job_description = " The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions."
+ job_description = "The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions."
/datum/alt_title/pathfinder
title = "Pathfinder"
@@ -59,9 +59,9 @@ var/const/SAR =(1<<14)
departments = list(DEPARTMENT_PLANET)
department_flag = MEDSCI
faction = "Station"
- total_positions = 2
- spawn_positions = 2
- supervisors = "the pathfinder and the head of personnel"
+ total_positions = 4
+ spawn_positions = 4
+ supervisors = "the Pathfinder and the Head of Personnel"
selection_color = "#999440"
economic_modifier = 5
minimal_player_age = 3
@@ -82,12 +82,12 @@ var/const/SAR =(1<<14)
faction = "Station"
total_positions = 3
spawn_positions = 3
- supervisors = "the pathfinder and the research director"
+ supervisors = "the Pathfinder and the Head of Personnel"
selection_color = "#999440"
economic_modifier = 6
pto_type = PTO_EXPLORATION
- access = list(access_explorer, access_research)
- minimal_access = list(access_explorer, access_research)
+ access = list(access_explorer, access_external_airlocks, access_eva)
+ minimal_access = list(access_explorer, access_external_airlocks, access_eva)
outfit_type = /decl/hierarchy/outfit/job/explorer2
job_description = "An Explorer searches for interesting things, and returns them to the station."
@@ -97,12 +97,12 @@ var/const/SAR =(1<<14)
/datum/job/sar
title = "Field Medic"
flag = SAR
- departments = list(DEPARTMENT_PLANET)
+ departments = list(DEPARTMENT_PLANET, DEPARTMENT_MEDICAL)
department_flag = MEDSCI
faction = "Station"
total_positions = 2
spawn_positions = 2
- supervisors = "the pathfinder and the chief medical officer"
+ supervisors = "the Pathfinder and the Chief Medical Officer"
selection_color = "#999440"
economic_modifier = 6
minimal_player_age = 3
diff --git a/code/game/jobs/job/science_vr.dm b/code/game/jobs/job/science_vr.dm
index 007a8625fb8..367eb5dd8a0 100644
--- a/code/game/jobs/job/science_vr.dm
+++ b/code/game/jobs/job/science_vr.dm
@@ -5,11 +5,11 @@
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
- access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network)
+ access_RC_announce, access_keycard_auth, access_tcomsat, access_xenoarch, access_eva, access_network)
minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage,
- access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva, access_network)
+ access_RC_announce, access_keycard_auth, access_tcomsat, access_xenoarch, access_eva, access_network)
/datum/job/scientist
spawn_positions = 5
diff --git a/code/game/jobs/job/security_vr.dm b/code/game/jobs/job/security_vr.dm
index e969dcff564..9e55d807b0c 100644
--- a/code/game/jobs/job/security_vr.dm
+++ b/code/game/jobs/job/security_vr.dm
@@ -5,11 +5,11 @@
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_construction, access_mailsorting,
- access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)
+ access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks)
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
access_research, access_engine, access_mining, access_construction, access_mailsorting,
- access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)
+ access_heads, access_hos, access_RC_announce, access_keycard_auth, access_external_airlocks)
/datum/job/warden
pto_type = PTO_SECURITY
diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm
index aa6316033c0..c8991f79e8d 100644
--- a/code/game/machinery/CableLayer.dm
+++ b/code/game/machinery/CableLayer.dm
@@ -13,9 +13,9 @@
cable.amount = 100
..()
-/obj/machinery/cablelayer/Move(new_turf,M_Dir)
- ..()
- layCable(new_turf,M_Dir)
+/obj/machinery/cablelayer/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ layCable(loc,direction)
/obj/machinery/cablelayer/attack_hand(mob/user as mob)
if(!cable&&!on)
diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm
index ec0366547f4..453e528befe 100644
--- a/code/game/machinery/bioprinter.dm
+++ b/code/game/machinery/bioprinter.dm
@@ -4,7 +4,7 @@
/obj/machinery/organ_printer
name = "organ printer"
desc = "It's a machine that prints organs."
- icon = 'icons/obj/surgery.dmi'
+ icon = 'icons/obj/surgery_vr.dmi' //VOREStation Edit
icon_state = "bioprinter"
anchored = 1
@@ -69,11 +69,13 @@
return ..()
/obj/machinery/organ_printer/update_icon()
- overlays.Cut()
+ //VOREStation Edit
+ cut_overlays()
if(panel_open)
- overlays += "bioprinter_panel_open"
+ add_overlay("bioprinter_panel_open")
if(printing)
- overlays += "bioprinter_working"
+ add_overlay("bioprinter_working")
+ //VOREStation Edit End
/obj/machinery/organ_printer/New()
..()
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 10eb6bda85c..fe0a9c8a628 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -119,6 +119,12 @@
check_eye(user)
return 1
+/obj/machinery/computer/security/relaymove(mob/user,direct)
+ var/turf/T = get_turf(current_camera)
+ for(var/i; i < 10; i++)
+ T = get_step(T, direct)
+ jump_on_click(user, T)
+
//Camera control: moving.
/obj/machinery/computer/security/proc/jump_on_click(var/mob/user,var/A)
if(user.machine != src)
@@ -185,22 +191,15 @@
update_use_power(USE_POWER_IDLE)
//Camera control: mouse.
+/* Oh my god
/atom/DblClick()
..()
if(istype(usr.machine,/obj/machinery/computer/security))
var/obj/machinery/computer/security/console = usr.machine
console.jump_on_click(usr,src)
-//Camera control: arrow keys.
-/mob/Move(n,direct)
- if(istype(machine,/obj/machinery/computer/security))
- var/obj/machinery/computer/security/console = machine
- var/turf/T = get_turf(console.current_camera)
- for(var/i;i<10;i++)
- T = get_step(T,direct)
- console.jump_on_click(src,T)
- return
- return ..(n,direct)
+*/
+//Camera control: arrow keys.
/obj/machinery/computer/security/telescreen
name = "Telescreen"
desc = "Used for watching an empty arena."
diff --git a/code/game/machinery/computer/shutoff_monitor.dm b/code/game/machinery/computer/shutoff_monitor.dm
index aed7bd25b9b..e2413c5e211 100644
--- a/code/game/machinery/computer/shutoff_monitor.dm
+++ b/code/game/machinery/computer/shutoff_monitor.dm
@@ -5,66 +5,27 @@
icon_screen = "power:0"
light_color = "#a97faa"
circuit = /obj/item/weapon/circuitboard/shutoff_monitor
+ var/datum/nano_module/shutoff_monitor/monitor
-/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user)
+/obj/machinery/computer/shutoff_monitor/New()
+ ..()
+ monitor = new(src)
+
+/obj/machinery/computer/shutoff_monitor/Destroy()
+ qdel(monitor)
+ monitor = null
+ ..()
+
+/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user as mob)
..()
ui_interact(user)
-/obj/machinery/computer/shutoff_monitor/attack_robot(var/mob/user) // Borgs and AI will want to see this too
- ..()
- ui_interact(user)
-
-/obj/machinery/computer/shutoff_monitor/attack_ai(var/mob/user)
- ui_interact(user)
-
-/obj/machinery/computer/shutoff_monitor/ui_interact(mob/user, ui_key = "shutoff_monitor", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null)
- var/data[0]
- data["valves"] = list()
- for(var/obj/machinery/atmospherics/valve/shutoff/S in GLOB.shutoff_valves)
- data["valves"][++data["valves"].len] = list("name" = S.name, "enable" = S.close_on_leaks, "open" = S.open, "x" = S.x, "y" = S.y, "z" = S.z, "ref" = "\ref[S]")
-
- // update the ui if it exists, returns null if no ui is passed/found
- ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
- if(!ui)
- // the ui does not exist, so we'll create a new() one
- // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
- ui = new(user, src, ui_key, "shutoff_monitor.tmpl", "Automated Shutoff Valve Monitor", 625, 700, state = key_state)
- // when the ui is first opened this is the data it will use
- ui.set_initial_data(data)
- // open the new ui window
- ui.open()
- // auto update every 20 Master Controller tick
- ui.set_auto_update(20) // Longer term to reduce the rate of data collection and processing
-
-/obj/machinery/computer/shutoff_monitor/Topic(href, href_list)
- if(..())
- return 1
-
- if(href_list["toggle_enable"])
- var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_enable"])
-
- // Invalid ref
- if(!istype(S))
- return 0
-
- S.close_on_leaks = !S.close_on_leaks
-
- if(href_list["toggle_open"])
- var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_open"])
-
- // Invalid ref
- if(!istype(S))
- return 0
-
- if(S.open)
- S.close()
- else
- S.open()
-
- return
-
+/obj/machinery/computer/shutoff_monitor/ui_interact(mob/user, ui_key = "shutoff_monitor", var/datum/nanoui/ui = null, var/force_open = 1)
+ monitor.ui_interact(user, ui_key, ui, force_open)
/obj/machinery/computer/shutoff_monitor/update_icon()
..()
if(!(stat & (NOPOWER|BROKEN)))
add_overlay("ai-fixer-empty")
+ else
+ cut_overlay("ai-fixer-empty")
\ No newline at end of file
diff --git a/code/game/machinery/computer/timeclock_vr.dm b/code/game/machinery/computer/timeclock_vr.dm
index ad118c74d7f..42e78683ec5 100644
--- a/code/game/machinery/computer/timeclock_vr.dm
+++ b/code/game/machinery/computer/timeclock_vr.dm
@@ -209,8 +209,9 @@
/obj/machinery/computer/timeclock/proc/checkCardCooldown()
if(!card)
return FALSE
- if((world.time - card.last_job_switch) < 15 MINUTES)
- to_chat(usr, "You need to wait at least 15 minutes after last duty switch.")
+ var/time_left = 10 MINUTES - (world.time - card.last_job_switch)
+ if(time_left > 0)
+ to_chat(usr, "You need to wait another [round((time_left/10)/60, 1)] minute\s before you can switch.")
return FALSE
return TRUE
@@ -270,4 +271,4 @@
/obj/machinery/computer/timeclock/premade/west
dir = 4
- pixel_x = -26
\ No newline at end of file
+ pixel_x = -26
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index bf60a7dc1cf..49a1b6fc26b 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -490,8 +490,7 @@
else
source.thermal_conductivity = initial(source.thermal_conductivity)
-/obj/machinery/door/Move(new_loc, new_dir)
- //update_nearby_tiles()
+/obj/machinery/door/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
if(width > 1)
if(dir in list(EAST, WEST))
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 608e02b9a08..f05419cb6d0 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -16,7 +16,7 @@
QDEL_NULL(filler2)
return ..()
-/obj/machinery/door/airlock/multi_tile/Move()
+/obj/machinery/door/airlock/multi_tile/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
SetBounds()
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index e7f39ade5f7..2b25b445c98 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -12,8 +12,8 @@
T = new/obj/item/stack/tile/floor(src)
..()
-/obj/machinery/floorlayer/Move(new_turf,M_Dir)
- ..()
+/obj/machinery/floorlayer/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
if(on)
if(mode["dismantle"])
@@ -26,7 +26,7 @@
CollectTiles(old_turf)
- old_turf = new_turf
+ old_turf = loc
/obj/machinery/floorlayer/attack_hand(mob/user as mob)
on=!on
diff --git a/code/game/machinery/machinery_power.dm b/code/game/machinery/machinery_power.dm
index a052ee01ceb..aa3d301e530 100644
--- a/code/game/machinery/machinery_power.dm
+++ b/code/game/machinery/machinery_power.dm
@@ -88,23 +88,13 @@
// Registering moved_event observers for all machines is too expensive. Instead we do it ourselves.
// 99% of machines are always on a turf anyway, very few need recursive move handling.
-/obj/machinery/Move()
- var/old_loc = loc
- if((. = ..()))
- update_power_on_move(src, old_loc, loc)
- if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves)
- GLOB.moved_event.register(loc, src, .proc/update_power_on_move)
- if(ismovable(old_loc)) // Unregister recursive movement.
- GLOB.moved_event.unregister(old_loc, src, .proc/update_power_on_move)
-
-/obj/machinery/forceMove(atom/destination)
- var/old_loc = loc
- if((. = ..()))
- update_power_on_move(src, old_loc, loc)
- if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves)
- GLOB.moved_event.register(loc, src, .proc/update_power_on_move)
- if(ismovable(old_loc)) // Unregister recursive movement.
- GLOB.moved_event.unregister(old_loc, src, .proc/update_power_on_move)
+/obj/machinery/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ update_power_on_move(src, old_loc, loc)
+ if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves)
+ GLOB.moved_event.register(loc, src, .proc/update_power_on_move)
+ if(ismovable(old_loc)) // Unregister recursive movement.
+ GLOB.moved_event.unregister(old_loc, src, .proc/update_power_on_move)
/obj/machinery/proc/update_power_on_move(atom/movable/mover, atom/old_loc, atom/new_loc)
var/area/old_area = get_area(old_loc)
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 13b1dc1bb75..f5f25320800 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -132,12 +132,6 @@ Buildable meters
src.set_dir(turn(src.dir, 270))
fixdir()
-// If you want to disable pipe dir changing when pulled, uncomment this
-// /obj/item/pipe/Move()
-// var/old_dir = dir
-// . = ..()
-// set_dir(old_dir) //pipes changing direction when moved is just annoying and buggy
-
// Don't let pulling a pipe straighten it out.
/obj/item/pipe/binary/bendable/Move()
var/old_bent = !IS_CARDINAL(dir)
diff --git a/code/game/machinery/pipe/pipelayer.dm b/code/game/machinery/pipe/pipelayer.dm
index 366a351d6b2..fa58f6a3fc1 100644
--- a/code/game/machinery/pipe/pipelayer.dm
+++ b/code/game/machinery/pipe/pipelayer.dm
@@ -42,15 +42,15 @@
..()
// Whenever we move, if enabled try and lay pipe
-/obj/machinery/pipelayer/Move(new_turf,M_Dir)
- ..()
+/obj/machinery/pipelayer/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
if(on && a_dis)
dismantleFloor(old_turf)
- layPipe(old_turf, M_Dir, old_dir)
+ layPipe(old_turf, direction, old_dir)
- old_turf = new_turf
- old_dir = turn(M_Dir, 180)
+ old_turf = loc
+ old_dir = turn(direction, 180)
/obj/machinery/pipelayer/attack_hand(mob/user as mob)
if(..())
diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm
index 1b9d89dc00f..9977e765e9f 100644
--- a/code/game/machinery/seed_extractor.dm
+++ b/code/game/machinery/seed_extractor.dm
@@ -1,7 +1,7 @@
/obj/machinery/seed_extractor
name = "seed extractor"
desc = "Extracts and bags seeds from produce."
- icon = 'icons/obj/hydroponics_machines.dmi'
+ icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit
icon_state = "sextractor"
density = 1
anchored = 1
diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm
index 9a9ec692783..165df282987 100644
--- a/code/game/machinery/telecomms/broadcaster.dm
+++ b/code/game/machinery/telecomms/broadcaster.dm
@@ -88,7 +88,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["compression"], signal.data["level"], signal.frequency,
signal.data["verb"], forced_radios)
-
/** #### - Simple Broadcast - #### **/
if(signal.data["type"] == SIGNAL_SIMPLE)
@@ -346,7 +345,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
var/data, var/compression, var/list/level, var/freq, var/verbage = "says",
var/list/forced_radios)
-
/* ###### Prepare the radio connection ###### */
var/display_freq = freq
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index ac6e56cee34..1d765375be6 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -352,11 +352,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
circuit = /obj/item/weapon/circuitboard/telecomms/hub
long_range_link = 1
netspeed = 40
- var/list/telecomms_map
/obj/machinery/telecomms/hub/Initialize()
. = ..()
- LAZYINITLIST(telecomms_map)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
@@ -365,20 +363,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
component_parts += new /obj/item/stack/cable_coil(src, 2)
RefreshParts()
-/obj/machinery/telecomms/hub/process()
- . = ..()
- telecomms_map.Cut()
-
- if(!on)
- return
-
- for(var/M in links)
- if(istype(M,/obj/machinery/telecomms/receiver) || istype(M,/obj/machinery/telecomms/relay))
- var/obj/machinery/telecomms/R = M
- if(!R.on)
- continue
- telecomms_map |= R.listening_level
-
/obj/machinery/telecomms/hub/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(is_freq_listening(signal))
if(istype(machine_from, /obj/machinery/telecomms/receiver))
@@ -751,17 +735,10 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
return FALSE
//Items don't have a Z when inside an object or mob
- var/turf/src_turf = get_turf(A)
- var/turf/dst_turf = get_turf(B)
+ var/turf/src_z = get_z(A)
+ var/turf/dst_z = get_z(B)
//Nullspace, probably.
- if(!src_turf || !dst_turf)
- return FALSE
-
- var/src_z = src_turf.z
- var/dst_z = dst_turf.z
-
- //Mysterious!
if(!src_z || !dst_z)
return FALSE
@@ -769,11 +746,4 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
if(ad_hoc && src_z == dst_z)
return TRUE
- //Let's look at hubs and see what we got.
- var/can_comm = FALSE
- for(var/obj/machinery/telecomms/hub/H in telecomms_list)
- if((src_z in H.telecomms_map) && (dst_z in H.telecomms_map))
- can_comm = TRUE
- break
-
- return can_comm
+ return src_z in using_map.get_map_levels(dst_z)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 1e4f4dc8ae6..78b22a13e04 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -382,11 +382,9 @@
//////// Movement procs ////////
//////////////////////////////////
-/obj/mecha/Move()
+/obj/mecha/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- MoveAction()
- return
+ MoveAction()
/obj/mecha/proc/MoveAction() //Allows mech equipment to do an action once the mech moves
if(!equipment.len)
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index cc1e327478b..7d1319ab85c 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -176,19 +176,15 @@
add_fingerprint(user)
return M
-/atom/movable/proc/handle_buckled_mob_movement(newloc,direct)
- if(has_buckled_mobs())
- for(var/A in buckled_mobs)
- var/mob/living/L = A
-// if(!L.Move(newloc, direct))
- if(!L.forceMove(newloc, direct))
- loc = L.loc
- last_move = L.last_move
- L.inertia_dir = last_move
- return FALSE
- else
- L.set_dir(dir)
- return TRUE
+/atom/movable/proc/handle_buckled_mob_movement(atom/old_loc, direct)
+ for(var/A in buckled_mobs)
+ var/mob/living/L = A
+ L.forceMove(loc, direct)
+ L.last_move = last_move
+ L.inertia_dir = last_move
+
+ if(!buckle_dir)
+ L.set_dir(dir)
/atom/movable/proc/can_buckle_check(mob/living/M, forced = FALSE)
if(!buckled_mobs)
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index 00896e71073..b872f9b3d3b 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -113,12 +113,11 @@ steam.start() -- spawns the effect
T.hotspot_expose(1000,100)
return ..()
-/obj/effect/effect/sparks/Move()
- ..()
- var/turf/T = src.loc
- if (istype(T, /turf))
+/obj/effect/effect/sparks/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ if(isturf(loc))
+ var/turf/T = loc
T.hotspot_expose(1000,100)
- return
/datum/effect/effect/system/spark_spread
var/total_sparks = 0 // To stop it being spammed and lagging!
@@ -225,8 +224,8 @@ steam.start() -- spawns the effect
time_to_live = 600
//var/list/projectiles
-/obj/effect/effect/smoke/bad/Move()
- ..()
+/obj/effect/effect/smoke/bad/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
for(var/mob/living/L in get_turf(src))
affect(L)
@@ -281,8 +280,8 @@ steam.start() -- spawns the effect
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/effect/effect/smoke/elemental/Move()
- ..()
+/obj/effect/effect/smoke/elemental/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
for(var/mob/living/L in range(1, src))
affect(L)
diff --git a/code/game/objects/effects/explosion_particles.dm b/code/game/objects/effects/explosion_particles.dm
index 63b2a09c240..12a1e920201 100644
--- a/code/game/objects/effects/explosion_particles.dm
+++ b/code/game/objects/effects/explosion_particles.dm
@@ -12,10 +12,6 @@
qdel(src)
return
-/obj/effect/expl_particles/Move()
- ..()
- return
-
/datum/effect/system/expl_particles
var/number = 10
var/turf/location
diff --git a/code/game/objects/items/devices/radio/encryptionkey_vr.dm b/code/game/objects/items/devices/radio/encryptionkey_vr.dm
index 5be1effb355..1f6110d16aa 100644
--- a/code/game/objects/items/devices/radio/encryptionkey_vr.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey_vr.dm
@@ -17,10 +17,38 @@
/obj/item/device/encryptionkey/heads/rd
name = "research director's encryption key"
icon_state = "rd_cypherkey"
- channels = list("Command" = 1, "Science" = 1, "Explorer" = 1)
+ channels = list("Command" = 1, "Science" = 1)
/obj/item/device/encryptionkey/ert
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1)
/obj/item/device/encryptionkey/omni //Literally only for the admin intercoms
channels = list("Mercenary" = 1, "Raider" = 1, "Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1, "Explorer" = 1)
+
+/obj/item/device/encryptionkey/pathfinder
+ name = "pathfinder's encryption key"
+ icon_state = "com_cypherkey"
+ channels = list("Command" = 1, "Explorer" = 1)
+
+/obj/item/device/encryptionkey/qm
+ name = "quartermaster's encryption key"
+ icon_state = "qm_cypherkey"
+ channels = list("Command" = 1, "Supply" = 1)
+
+/obj/item/device/encryptionkey/pilot
+ name = "pilot's encryption key"
+ icon_state = "cypherkey"
+ channels = list("Explorer" = 1)
+
+/obj/item/device/encryptionkey/explorer
+ name = "explorer's encryption key"
+ icon_state = "rob_cypherkey"
+ channels = list("Explorer" = 1)
+
+/obj/item/device/encryptionkey/sar
+ name = "fm's encryption key"
+ icon_state = "med_cypherkey"
+ channels = list("Medical" = 1, "Explorer" = 1)
+
+/obj/item/device/encryptionkey/talon
+ channels = list("Talon" = 1)
diff --git a/code/game/objects/items/devices/radio/headset_vr.dm b/code/game/objects/items/devices/radio/headset_vr.dm
index 14398d9f59d..9204c81dd17 100644
--- a/code/game/objects/items/devices/radio/headset_vr.dm
+++ b/code/game/objects/items/devices/radio/headset_vr.dm
@@ -48,4 +48,83 @@
M.mob_radio.forceMove(M.loc)
M.mob_radio = null
return
- ..()
\ No newline at end of file
+ ..()
+
+/obj/item/device/radio/headset/headset_cargo
+ desc = "A headset used by the QM's slaves."
+
+/obj/item/device/radio/headset/headset_cargo/alt
+ desc = "A bowman headset used by the QM's slaves."
+
+/obj/item/device/radio/headset/headset_qm
+ name = "qm radio headset"
+ desc = "A headset used by the QM."
+ icon_state = "cargo_headset"
+ ks2type = /obj/item/device/encryptionkey/qm
+
+/obj/item/device/radio/headset/headset_qm/alt
+ name = "qm bowman headset"
+ desc = "A bowman headset used by the QM."
+ icon_state = "cargo_headset_alt"
+
+/obj/item/device/radio/headset/pathfinder
+ name = "pathfinder's headset"
+ desc = "Headset used by pathfinders for exploring. Access to the explorer and command channels."
+ icon_state = "exp_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/device/encryptionkey/pathfinder
+
+/obj/item/device/radio/headset/pathfinder/alt
+ name = "pathfinder's bowman headset"
+ desc = "Bowman headset used by pathfinders for exploring. Access to the explorer and command channels."
+ icon_state = "exp_headset_alt"
+
+/obj/item/device/radio/headset/pilot
+ name = "pilot's headset"
+ desc = "A headset used by pilots, has access to the explorer channel."
+ icon_state = "pilot_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/device/encryptionkey/pilot
+
+/obj/item/device/radio/headset/pilot/alt
+ name = "pilot's bowman headset"
+ desc = "A bowman headset used by pilots, has access to the explorer channel."
+ 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."
+ icon_state = "exp_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/device/encryptionkey/explorer
+
+/obj/item/device/radio/headset/explorer/alt
+ name = "explorer's bowman headset"
+ desc = "Bowman headset used by explorers for exploring. Access to the explorer channel."
+ icon_state = "exp_headset_alt"
+
+/obj/item/device/radio/headset/sar
+ name = "fm radio headset"
+ desc = "A headset for field medics."
+ icon_state = "sar_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/device/encryptionkey/sar
+
+/obj/item/device/radio/headset/sar/alt
+ name = "fm radio bowman headset"
+ desc = "A bowman headset for field medics."
+ icon_state = "sar_headset_alt"
+
+/obj/item/device/radio/headset/volunteer
+ name = "volunteer's headset"
+ desc = "A headset used by volunteers to expedition teams, has access to the exploration channel."
+ icon_state = "pilot_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/device/encryptionkey/pilot
+
+/obj/item/device/radio/headset/talon
+ name = "talon headset"
+ desc = "A headset for communication between the crew of the ITV Talon."
+ adhoc_fallback = TRUE
+ icon_state = "pilot_headset"
+ ks2type = /obj/item/device/encryptionkey/talon
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 995b659c198..b3840d313f5 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -11,10 +11,10 @@ var/global/list/default_internal_channels = list(
num2text(MED_I_FREQ)=list(access_medical_equip),
num2text(SEC_FREQ) = list(access_security),
num2text(SEC_I_FREQ)=list(access_security),
- num2text(SCI_FREQ) = list(access_tox, access_robotics, access_xenobiology, access_explorer),
+ num2text(SCI_FREQ) = list(access_tox, access_robotics, access_xenobiology),
num2text(SUP_FREQ) = list(access_cargo, access_mining_station),
num2text(SRV_FREQ) = list(access_janitor, access_library, access_hydroponics, access_bar, access_kitchen),
- num2text(EXP_FREQ) = list(access_explorer, access_pilot, access_rd)
+ num2text(EXP_FREQ) = list(access_explorer, access_pilot)
)
var/global/list/default_medbay_channels = list(
@@ -287,7 +287,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels) //BS12 EDIT
var/datum/radio_frequency/connection = null
if(channel && channels && channels.len > 0)
- if (channel == "department")
+ if(channel == "department")
channel = channels[1]
connection = secure_radio_connections[channel]
else
@@ -304,7 +304,7 @@ var/global/list/default_medbay_channels = list(
Broadcast_Message(connection, A,
0, "*garbled automated announcement*", src,
message_to_multilingual(message), from, "Automated Announcement", from, "synthesized voice",
- 4, 0, zlevels, connection.frequency, "states")
+ DATA_FAKE, 0, zlevels, connection.frequency, "states")
// Interprets the message mode when talking into a radio, possibly returning a connection datum
/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode)
@@ -363,8 +363,8 @@ var/global/list/default_medbay_channels = list(
if(!istype(message_mode, /datum/radio_frequency))
return FALSE
- var/datum/radio_frequency/connection = message_mode
var/pos_z = get_z(src)
+ var/datum/radio_frequency/connection = message_mode
//#### Tagging the signal with all appropriate identity values ####//
@@ -479,7 +479,6 @@ var/global/list/default_medbay_channels = list(
signal.transmission_method = TRANSMISSION_SUBSPACE
//#### Sending the signal to all subspace receivers ####//
-
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
R.receive_signal(signal)
@@ -494,7 +493,7 @@ var/global/list/default_medbay_channels = list(
else if(adhoc_fallback) //Less huzzah, we have to fallback
to_chat(loc, "\The [src] pings as it falls back to local radio transmission.")
subspace_transmission = FALSE
-
+
else //Oh well
return FALSE
@@ -536,8 +535,6 @@ var/global/list/default_medbay_channels = list(
if(get_dist(src, M) <= canhear_range)
talk_into(M, message_pieces, null, verb)
-
-
/obj/item/device/radio/proc/receive_range(freq, level)
// check if this radio can receive on the given frequency, and if so,
// what the range is in which mobs will hear the radio
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index c3bc83d3b9d..982236f43c3 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -18,12 +18,12 @@
break
..() // delete target
- Move()
- ..()
+ Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
// After target moves, check for nearby stakes. If associated, move to target
for(var/obj/structure/target_stake/M in view(3,src))
if(M.density == 0 && M.pinned_target == src)
- M.loc = loc
+ M.forceMove(loc)
// This may seem a little counter-intuitive but I assure you that's for a purpose.
// Stakes are the ones that carry targets, yes, but in the stake code we set
diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm
new file mode 100644
index 00000000000..d353dda8490
--- /dev/null
+++ b/code/game/objects/items/uav.dm
@@ -0,0 +1,347 @@
+#define UAV_OFF 0
+#define UAV_ON 1
+#define UAV_PAIRING 2
+#define UAV_PACKED 3
+
+/obj/item/device/uav
+ name = "recon skimmer"
+ desc = "A semi-portable reconisance drone that folds into a backpack-sized carrying case."
+ icon = 'icons/obj/uav.dmi'
+ icon_state = "uav"
+
+ var/obj/item/weapon/cell/cell
+ var/cell_type = null //Can put a starting cell here
+
+ density = 1 //Is dense, but not anchored, so you can swap with it
+ slowdown = 3 //Heevvee.
+
+ health = 100
+ var/power_per_process = 50 // About 6.5 minutes of use on a high-cell (10,000)
+ var/state = UAV_OFF
+
+ var/datum/effect/effect/system/ion_trail_follow/ion_trail
+
+ var/list/mob/living/masters
+
+ // So you know which is which
+ var/nickname = "Generic Droan"
+
+ // Radial menu
+ var/static/image/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup")
+ var/static/image/radial_wrench = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_wrench")
+ var/static/image/radial_power = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_power")
+ var/static/image/radial_pair = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pair")
+
+ // Movement cooldown
+ var/next_move = 0
+
+ // Idle shutdown time
+ var/no_masters_time = 0
+
+/obj/item/device/uav/loaded
+ cell_type = /obj/item/weapon/cell/high
+
+/obj/item/device/uav/Initialize()
+ . = ..()
+
+ if(!cell && cell_type)
+ cell = new cell_type
+
+ ion_trail = new /datum/effect/effect/system/ion_trail_follow()
+ ion_trail.set_up(src)
+ ion_trail.stop()
+
+/obj/item/device/uav/Destroy()
+ qdel_null(cell)
+ qdel_null(ion_trail)
+ LAZYCLEARLIST(masters)
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/device/uav/attack_hand(var/mob/user)
+ //Has to be on the ground to work with it properly
+ if(!isturf(loc))
+ return ..()
+
+ var/list/options = list(
+ "Pick Up" = radial_pickup,
+ "(Dis)Assemble" = radial_wrench,
+ "Toggle Power" = radial_power,
+ "Pairing Mode" = radial_pair)
+ var/choice = show_radial_menu(user, src, options, require_near = !issilicon(user))
+
+ switch(choice)
+ // Can pick up when off or packed
+ if("Pick Up")
+ if(state == UAV_OFF || state == UAV_PACKED)
+ return ..()
+ else
+ to_chat(user,"Turn [nickname] off or pack it first!")
+ return
+ // Can disasemble or reassemble from packed or off (and this one takes time)
+ if("(Dis)Assemble")
+ if(can_transition_to(state == UAV_PACKED ? UAV_OFF : UAV_PACKED, user) && do_after(user, 10 SECONDS, src))
+ return toggle_packed(user)
+ // Can toggle power from on and off
+ if("Toggle Power")
+ if(can_transition_to(state == UAV_ON ? UAV_OFF : UAV_ON, user))
+ return toggle_power(user)
+ // Can pair when off
+ if("Pairing Mode")
+ if(can_transition_to(state == UAV_PAIRING ? UAV_OFF : UAV_PAIRING, user))
+ return toggle_pairing(user)
+
+/obj/item/device/uav/attackby(var/obj/item/I, var/mob/user)
+ if(istype(I, /obj/item/modular_computer) && state == UAV_PAIRING)
+ var/obj/item/modular_computer/MC = I
+ LAZYDISTINCTADD(MC.paired_uavs, weakref(src))
+ playsound(src, 'sound/machines/buttonbeep.ogg', 50, 1)
+ visible_message("[user] pairs [I] to [nickname]")
+ toggle_pairing()
+
+ else if(I.is_screwdriver() && cell)
+ if(do_after(user, 3 SECONDS, src))
+ to_chat(user, "You remove [cell] into [nickname].")
+ playsound(src, I.usesound, 50, 1)
+ power_down()
+ cell.forceMove(get_turf(src))
+ cell = null
+
+ else if(istype(I, /obj/item/weapon/cell) && !cell)
+ if(do_after(user, 3 SECONDS, src))
+ to_chat(user, "You insert [I] into [nickname].")
+ playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
+ power_down()
+ cell.forceMove(get_turf(src))
+ cell = null
+
+ else if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen))
+ var/tmp_label = sanitizeSafe(input(user, "Enter a nickname for [src]", "Nickname", nickname), MAX_NAME_LEN)
+ if(length(tmp_label) > 50 || length(tmp_label) < 3)
+ to_chat(user, "The nickname must be between 3 and 50 characters.")
+ else
+ to_chat(user, "You scribble your new nickname on the side of [src].")
+ nickname = tmp_label
+ desc = initial(desc) + " This one has '[nickname]' scribbled on the side."
+ else
+ return ..()
+
+/obj/item/device/uav/proc/can_transition_to(var/new_state, var/mob/user)
+ switch(state) //Current one
+ if(UAV_ON)
+ if(new_state == UAV_OFF || new_state == UAV_PACKED)
+ . = TRUE
+ if(UAV_OFF)
+ if(new_state == UAV_ON || new_state == UAV_PACKED || new_state == UAV_PAIRING)
+ . = TRUE
+ if(UAV_PAIRING)
+ if(new_state == UAV_OFF)
+ . = TRUE
+ if(UAV_PACKED)
+ if(new_state == UAV_OFF)
+ . = TRUE
+
+ if(!.)
+ if(user)
+ to_chat(user, "You can't do that while [nickname] is in this state.")
+ return FALSE
+
+/obj/item/device/uav/update_icon()
+ cut_overlays()
+ switch(state)
+ if(UAV_PAIRING)
+ add_overlay("[initial(icon_state)]_pairing")
+ icon_state = "[initial(icon_state)]"
+ if(UAV_ON)
+ icon_state = "[initial(icon_state)]_on"
+ if(UAV_OFF)
+ icon_state = "[initial(icon_state)]"
+ if(UAV_PACKED)
+ icon_state = "[initial(icon_state)]_packed"
+
+/obj/item/device/uav/process()
+ if(cell?.use(power_per_process) != power_per_process)
+ visible_message("[src] sputters and thuds to the ground, inert.")
+ playsound(src, 'sound/items/drop/metalboots.ogg', 75, 1)
+ power_down()
+ health -= initial(health)*0.25 //Lose 25% of your original health
+
+ if(LAZYLEN(masters))
+ no_masters_time = 0
+ else if(no_masters_time++ > 50)
+ power_down()
+
+/obj/item/device/uav/proc/toggle_pairing()
+ switch(state)
+ if(UAV_PAIRING)
+ state = UAV_OFF
+ update_icon()
+ return TRUE
+ if(UAV_OFF)
+ state = UAV_PAIRING
+ update_icon()
+ return TRUE
+ return FALSE
+
+/obj/item/device/uav/proc/toggle_power()
+ switch(state)
+ if(UAV_OFF)
+ power_up()
+ return TRUE
+ if(UAV_ON)
+ power_down()
+ return TRUE
+ return FALSE
+
+/obj/item/device/uav/proc/toggle_packed()
+ if(UAV_ON)
+ power_down()
+ switch(state)
+ if(UAV_OFF) //Packing
+ state = UAV_PACKED
+ w_class = ITEMSIZE_LARGE
+ slowdown = 1
+ density = FALSE
+ update_icon()
+ return TRUE
+ if(UAV_PACKED) //Unpacking
+ state = UAV_OFF
+ w_class = ITEMSIZE_HUGE
+ slowdown = 3
+ density = TRUE
+ update_icon()
+ return TRUE
+ return FALSE
+
+/obj/item/device/uav/proc/power_up()
+ if(state != UAV_OFF || !isturf(loc))
+ return
+ if(cell?.use(power_per_process) != power_per_process)
+ visible_message("[src] sputters and chugs as it tries, and fails, to power up.")
+ return
+
+ state = UAV_ON
+ update_icon()
+ start_hover()
+ set_light(4, 4, "#FFFFFF")
+ START_PROCESSING(SSobj, src)
+ no_masters_time = 0
+ visible_message("[nickname] buzzes and lifts into the air.")
+
+/obj/item/device/uav/proc/power_down()
+ if(state != UAV_ON)
+ return
+
+ state = UAV_OFF
+ update_icon()
+ stop_hover()
+ set_light(0)
+ LAZYCLEARLIST(masters)
+ STOP_PROCESSING(SSobj, src)
+ visible_message("[nickname] gracefully settles onto the ground.")
+
+//////////////// Helpers
+/obj/item/device/uav/get_cell()
+ return cell
+
+/obj/item/device/uav/relaymove(var/mob/user, direction, signal = 1)
+ if(signal && state == UAV_ON && (weakref(user) in masters))
+ if(next_move <= world.time)
+ next_move = world.time + (1 SECOND/signal)
+ step(src, direction)
+ return TRUE // Even if we couldn't step, we're taking credit for absorbing the move
+ return FALSE
+
+/obj/item/device/uav/proc/get_status_string()
+ return "[nickname] - [get_x(src)],[get_y(src)],[get_z(src)] - I:[health]/[initial(health)] - C:[cell ? "[cell.charge]/[cell.maxcharge]" : "Not Installed"]"
+
+/obj/item/device/uav/proc/add_master(var/mob/living/M)
+ LAZYDISTINCTADD(masters, weakref(M))
+
+/obj/item/device/uav/proc/remove_master(var/mob/living/M)
+ LAZYREMOVE(masters, weakref(M))
+
+/obj/item/device/uav/check_eye()
+ if(state == UAV_ON)
+ return 0
+ else
+ return -1
+
+/obj/item/device/uav/proc/start_hover()
+ if(!ion_trail.on) //We'll just use this to store if we're floating or not
+ ion_trail.start()
+ var/amplitude = 2 //maximum displacement from original position
+ var/period = 36 //time taken for the mob to go up >> down >> original position, in deciseconds. Should be multiple of 4
+
+ var/top = old_y + amplitude
+ var/bottom = old_y - amplitude
+ var/half_period = period / 2
+ var/quarter_period = period / 4
+
+ animate(src, pixel_y = top, time = quarter_period, easing = SINE_EASING | EASE_OUT, loop = -1) //up
+ animate(pixel_y = bottom, time = half_period, easing = SINE_EASING, loop = -1) //down
+ animate(pixel_y = old_y, time = quarter_period, easing = SINE_EASING | EASE_IN, loop = -1) //back
+
+/obj/item/device/uav/proc/stop_hover()
+ if(ion_trail.on)
+ ion_trail.stop()
+ animate(src, pixel_y = old_y, time = 5, easing = SINE_EASING | EASE_IN) //halt animation
+
+/obj/item/device/uav/hear_talk(var/mob/M, list/message_pieces, verb)
+ var/name_used = M.GetVoice()
+ for(var/wr_master in masters)
+ var/weakref/wr = wr_master
+ var/mob/master = wr.resolve()
+ var/message = master.combine_message(message_pieces, verb, M)
+ var/rendered = "UAV received: [name_used] [message]"
+ master.show_message(rendered, 2)
+
+/obj/item/device/uav/see_emote(var/mob/living/M, text)
+ for(var/wr_master in masters)
+ var/weakref/wr = wr_master
+ var/mob/master = wr.resolve()
+ var/rendered = "UAV received, [text]"
+ master.show_message(rendered, 2)
+
+/obj/item/device/uav/show_message(msg, type, alt, alt_type)
+ for(var/wr_master in masters)
+ var/weakref/wr = wr_master
+ var/mob/master = wr.resolve()
+ var/rendered = "UAV received, [msg]"
+ master.show_message(rendered, type)
+
+/obj/item/device/uav/take_damage(var/damage)
+ health -= damage
+ CheckHealth()
+ return
+
+/obj/item/device/uav/attack_generic(var/mob/user, var/damage, var/attack_verb)
+ visible_message("[user] [attack_verb] the [src]!")
+ playsound(src, 'sound/weapons/smash.ogg', 50, 1)
+ user.do_attack_animation(src)
+ health -= damage
+ CheckHealth()
+ return
+
+/obj/item/device/uav/ex_act(severity)
+ switch(severity)
+ if(1.0)
+ die()
+ if(2.0)
+ health -= 25
+ CheckHealth()
+
+/obj/item/device/uav/proc/CheckHealth()
+ if(health <= 0)
+ die()
+
+/obj/item/device/uav/proc/die()
+ visible_message("[src] shorts out and explodes!")
+ power_down()
+ var/turf/T = get_turf(src)
+ qdel(src)
+ explosion(T, -1, 0, 1, 2) //Not very large
+
+#undef UAV_OFF
+#undef UAV_ON
+#undef UAV_PACKED
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
index 60ea0103b34..bdd81f12a09 100644
--- a/code/game/objects/items/weapons/tools/weldingtool.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -68,6 +68,11 @@
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
return ..()
+ //VOREStation Add - No welding nanoform limbs
+ if(S.robotic > ORGAN_LIFELIKE)
+ return ..()
+ //VOREStation Add End
+
if(S.organ_tag == BP_HEAD)
if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space))
to_chat(user, "You can't apply [src] through [H.head]!")
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index ff982da2570..e856dd280ed 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -122,18 +122,6 @@
if(!has_buckled_mobs())
qdel(src)
-/obj/effect/energy_net/Move()
- ..()
- if(has_buckled_mobs())
- for(var/A in buckled_mobs)
- var/mob/living/occupant = A
- occupant.buckled = null
- occupant.forceMove(src.loc)
- occupant.buckled = src
- if (occupant && (src.loc != occupant.loc))
- unbuckle_mob(occupant)
- qdel(src)
-
/obj/effect/energy_net/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
user.setClickCooldown(user.get_attack_speed())
visible_message("[user] begins to tear at \the [src]!")
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index a14a62eaa89..2a361f1d46f 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -142,6 +142,7 @@
return
/mob/proc/unset_machine()
+ machine?.remove_visual(src)
src.machine = null
/mob/proc/set_machine(var/obj/O)
diff --git a/maps/southern_cross/structures/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm
similarity index 66%
rename from maps/southern_cross/structures/closets/misc_vr.dm
rename to code/game/objects/structures/crates_lockers/closets/misc_vr.dm
index 11ebc922d41..97e27b3aeec 100644
--- a/maps/southern_cross/structures/closets/misc_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm
@@ -1,4 +1,42 @@
+//Gun Cabinets
+
+/obj/structure/closet/secure_closet/guncabinet/sidearm
+ name = "emergency weapon cabinet"
+ req_one_access = list(access_armory,access_captain)
+
+ starts_with = list(
+ /obj/item/weapon/gun/energy/gun = 4)
+
+
+/obj/structure/closet/secure_closet/guncabinet/rifle
+ name = "rifle cabinet"
+ req_one_access = list(access_explorer,access_brig)
+
+ starts_with = list(
+ /obj/item/ammo_magazine/clip/c762/hunter = 9,
+ /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2)
+
+/obj/structure/closet/secure_closet/guncabinet/rifle/Initialize()
+ if(prob(85))
+ starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle
+ else
+ starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever
+ return ..()
+
+/obj/structure/closet/secure_closet/guncabinet/phase
+ name = "explorer weapon cabinet"
+ req_one_access = list(access_explorer,access_brig)
+
+ starts_with = list(
+ /obj/item/weapon/gun/energy/phasegun = 2,
+ /obj/item/weapon/gun/energy/phasegun/pistol,
+ /obj/item/weapon/cell/device/weapon = 2,
+ /obj/item/clothing/accessory/permit/gun/planetside)
+
+//Explorer Lockers
+
/obj/structure/closet/secure_closet/explorer
+ name = "explorer locker"
icon = 'icons/obj/closet_vr.dmi'
icon_state = "secureexp1"
icon_closed = "secureexp"
@@ -6,6 +44,7 @@
icon_opened = "secureexpopen"
icon_broken = "secureexpbroken"
icon_off = "secureexpoff"
+ req_access = list(access_explorer)
starts_with = list(
/obj/item/clothing/under/explorer,
@@ -14,6 +53,7 @@
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
/obj/item/device/radio/headset/explorer,
+ /obj/item/device/radio/headset/explorer/alt,
/obj/item/device/flashlight,
/obj/item/device/gps/explorer,
/obj/item/weapon/storage/box/flare,
@@ -28,8 +68,25 @@
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
/obj/item/device/cataloguer)
+/obj/structure/closet/secure_closet/explorer/Initialize()
+ if(prob(50))
+ starts_with += /obj/item/weapon/storage/backpack
+ else
+ starts_with += /obj/item/weapon/storage/backpack/satchel/norm
+ return ..()
+
+//SAR Lockers
+
/obj/structure/closet/secure_closet/sar
name = "field medic locker"
+ desc = "Supplies for a wilderness first responder."
+ icon_state = "medical1"
+ icon_closed = "medical"
+ icon_locked = "medical1"
+ icon_opened = "medicalopen"
+ icon_broken = "medicalbroken"
+ icon_off = "medicaloff"
+ req_access = list(access_medical_equip)
starts_with = list(
/obj/item/weapon/storage/backpack/dufflebag/emt,
@@ -45,6 +102,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/device/radio/headset/sar,
+ /obj/item/device/radio/headset/sar/alt,
/obj/item/weapon/cartridge/medical,
/obj/item/device/flashlight,
/obj/item/weapon/tank/emergency/oxygen/engi,
@@ -64,7 +122,12 @@
/obj/item/bodybag/cryobag,
/obj/item/device/cataloguer/compact)
+//Pilot Locker
+
/obj/structure/closet/secure_closet/pilot
+ name = "pilot locker"
+ req_access = list(access_pilot)
+
starts_with = list(
/obj/item/weapon/storage/backpack/parachute,
/obj/item/weapon/material/knife/tacknife/survival,
@@ -76,6 +139,7 @@
/obj/item/clothing/mask/gas/half,
/obj/item/clothing/shoes/black,
/obj/item/clothing/gloves/fingerless,
+ /obj/item/device/radio/headset/pilot,
/obj/item/device/radio/headset/pilot/alt,
/obj/item/device/flashlight,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
@@ -87,6 +151,13 @@
/obj/item/device/gps/explorer,
/obj/item/device/cataloguer/compact)
+/obj/structure/closet/secure_closet/pilot/Initialize()
+ if(prob(50))
+ starts_with += /obj/item/weapon/storage/backpack
+ else
+ starts_with += /obj/item/weapon/storage/backpack/satchel/norm
+ return ..()
+
/obj/structure/closet/secure_closet/pathfinder
name = "pathfinder locker"
icon = 'icons/obj/closet_vr.dmi'
@@ -104,7 +175,8 @@
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
- /obj/item/device/radio/headset/explorer,
+ /obj/item/device/radio/headset/pathfinder,
+ /obj/item/device/radio/headset/pathfinder/alt,
/obj/item/device/flashlight,
/obj/item/device/gps/explorer,
/obj/item/weapon/storage/box/flare,
@@ -128,3 +200,17 @@
else
starts_with += /obj/item/weapon/storage/backpack/satchel/norm
return ..()
+
+//Exotic Seeds Crate
+
+/obj/structure/closet/crate/hydroponics/exotic
+ name = "exotic seeds crate"
+ desc = "All you need to destroy that pesky planet."
+
+ starts_with = list(
+ /obj/item/seeds/random = 6,
+ /obj/item/seeds/replicapod = 2,
+ /obj/item/seeds/ambrosiavulgarisseed = 2,
+ /obj/item/seeds/kudzuseed,
+ /obj/item/seeds/libertymycelium,
+ /obj/item/seeds/reishimycelium)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
index 8429b5abddb..9ab55aa86cf 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
@@ -47,8 +47,8 @@
/obj/item/clothing/under/rank/cargo/jeans,
/obj/item/clothing/under/rank/cargo/jeans/female,
/obj/item/clothing/shoes/brown,
- /obj/item/device/radio/headset/headset_cargo,
- /obj/item/device/radio/headset/headset_cargo/alt,
+ /obj/item/device/radio/headset/headset_qm, //VOREStation Edit,
+ /obj/item/device/radio/headset/headset_qm/alt, //VOREStation Edit,
/obj/item/clothing/gloves/black,
/obj/item/clothing/gloves/fingerless,
/obj/item/clothing/suit/fire/firefighter,
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index f8ea5d2f77c..e0a94e285b3 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -145,7 +145,7 @@
bound_height = width * world.icon_size
update_state()
- Move()
+ Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
if(dir in list(EAST, WEST))
bound_width = width * world.icon_size
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 93c48fe8a90..cb8fcfe02be 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -230,15 +230,6 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
to_chat(user, "You'll need the keys in one of your hands to drive this [callme].")
-/obj/structure/bed/chair/janicart/Move()
- ..()
- if(has_buckled_mobs())
- for(var/A in buckled_mobs)
- var/mob/living/L = A
- if(L.buckled == src)
- L.loc = loc
-
-
/obj/structure/bed/chair/janicart/post_buckle_mob(mob/living/M)
update_mob()
return ..()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 1a9d4e7315f..b053e33805f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -286,15 +286,10 @@
held = null
-/obj/structure/bed/roller/Move()
- ..()
+/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+
playsound(src, 'sound/effects/roll.ogg', 100, 1)
- if(has_buckled_mobs())
- for(var/A in buckled_mobs)
- var/mob/living/L = A
-
- if(L.buckled == src)
- L.loc = src.loc
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
if(M.buckled == src)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 5be1d6d1984..59ea0014d30 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -140,22 +140,24 @@
return
..()
-/obj/structure/bed/chair/office/Move()
- ..()
+/obj/structure/bed/chair/office/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+
playsound(src, 'sound/effects/roll.ogg', 100, 1)
- if(has_buckled_mobs())
- for(var/A in buckled_mobs)
- var/mob/living/occupant = A
- occupant.buckled = null
- occupant.Move(src.loc)
- occupant.buckled = src
- if (occupant && (src.loc != occupant.loc))
- if (propelled)
- for (var/mob/O in src.loc)
- if (O != occupant)
- Bump(O)
- else
- unbuckle_mob()
+
+/obj/structure/bed/chair/office/handle_buckled_mob_movement(atom/new_loc, direction)
+ for(var/A in buckled_mobs)
+ var/mob/living/occupant = A
+ occupant.buckled = null
+ occupant.Move(src.loc)
+ occupant.buckled = src
+ if (occupant && (src.loc != occupant.loc))
+ if (propelled)
+ for (var/mob/O in src.loc)
+ if (O != occupant)
+ Bump(O)
+ else
+ unbuckle_mob()
/obj/structure/bed/chair/office/Bump(atom/A)
..()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index 8a3902fa1d1..639020ba5df 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -91,8 +91,9 @@
create_track()
driving = 0
-/obj/structure/bed/chair/wheelchair/Move()
- ..()
+/obj/structure/bed/chair/wheelchair/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+
cut_overlays()
playsound(src, 'sound/effects/roll.ogg', 75, 1)
if(has_buckled_mobs())
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 55d8b37d0ff..1e9c091ccb9 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -8,11 +8,11 @@
w_class = ITEMSIZE_HUGE
var/obj/item/target/pinned_target // the current pinned target
- Move()
- ..()
+ Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
// Move the pinned target along with the stake
if(pinned_target in view(3, src))
- pinned_target.loc = loc
+ pinned_target.forceMove(loc)
else // Sanity check: if the pinned target can't be found in immediate view
pinned_target = null
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index d8542d0c96f..f3b6d1e08ed 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -413,7 +413,7 @@
/obj/structure/window/Move()
var/ini_dir = dir
update_nearby_tiles(need_rebuild=1)
- ..()
+ . = ..()
set_dir(ini_dir)
update_nearby_tiles(need_rebuild=1)
diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm
index b5272ea9963..dfd7bd87b0a 100644
--- a/code/modules/ai/ai_holder.dm
+++ b/code/modules/ai/ai_holder.dm
@@ -1,6 +1,14 @@
// This is a datum-based artificial intelligence for simple mobs (and possibly others) to use.
// The neat thing with having this here instead of on the mob is that it is independant of Life(), and that different mobs
// can use a more or less complex AI by giving it a different datum.
+#define AI_NO_PROCESS 0
+#define AI_PROCESSING (1<<0)
+#define AI_FASTPROCESSING (1<<1)
+
+#define START_AIPROCESSING(Datum) if (!(Datum.process_flags & AI_PROCESSING)) {Datum.process_flags |= AI_PROCESSING;SSai.processing += Datum}
+#define STOP_AIPROCESSING(Datum) Datum.process_flags &= ~AI_PROCESSING;SSai.processing -= Datum
+#define START_AIFASTPROCESSING(Datum) if (!(Datum.process_flags & AI_FASTPROCESSING)) {Datum.process_flags |= AI_FASTPROCESSING;SSaifast.processing += Datum}
+#define STOP_AIFASTPROCESSING(Datum) Datum.process_flags &= ~AI_FASTPROCESSING;SSaifast.processing -= Datum
/mob/living
var/datum/ai_holder/ai_holder = null
@@ -27,7 +35,20 @@
var/busy = FALSE // If true, the ticker will skip processing this mob until this is false. Good for if you need the
// mob to stay still (e.g. delayed attacking). If you need the mob to be inactive for an extended period of time,
// consider sleeping the AI instead.
-
+ var/process_flags = 0 // Where we're processing, see flag defines.
+ var/list/static/fastprocess_stances = list(
+ STANCE_ALERT,
+ STANCE_APPROACH,
+ STANCE_FIGHT,
+ STANCE_BLINDFIGHT,
+ STANCE_REPOSITION,
+ STANCE_MOVE,
+ STANCE_FOLLOW,
+ STANCE_FLEE
+ )
+ var/list/static/noprocess_stances = list(
+ STANCE_SLEEP
+ )
/datum/ai_holder/hostile
@@ -40,16 +61,34 @@
/datum/ai_holder/New(var/new_holder)
ASSERT(new_holder)
holder = new_holder
- SSai.processing += src
home_turf = get_turf(holder)
+ manage_processing(AI_PROCESSING)
+ GLOB.stat_set_event.register(holder, src, .proc/holder_stat_change)
..()
/datum/ai_holder/Destroy()
holder = null
- SSai.processing -= src // We might've already been asleep and removed, but byond won't care if we do this again and it saves a conditional.
+ manage_processing(AI_NO_PROCESS)
home_turf = null
return ..()
+/datum/ai_holder/proc/manage_processing(var/desired)
+ if(desired & AI_PROCESSING)
+ START_AIPROCESSING(src)
+ else
+ STOP_AIPROCESSING(src)
+
+ if(desired & AI_FASTPROCESSING)
+ START_AIFASTPROCESSING(src)
+ else
+ STOP_AIFASTPROCESSING(src)
+
+/datum/ai_holder/proc/holder_stat_change(var/mob, old_stat, new_stat)
+ if(old_stat >= DEAD && new_stat <= DEAD) //Revived
+ manage_processing(AI_PROCESSING)
+ else if(old_stat <= DEAD && new_stat >= DEAD) //Killed
+ manage_processing(AI_NO_PROCESS)
+
/datum/ai_holder/proc/update_stance_hud()
var/image/stanceimage = holder.grab_hud(LIFE_HUD)
stanceimage.icon_state = "ais_[stance]"
@@ -78,7 +117,6 @@
return
forget_everything() // If we ever wake up, its really unlikely that our current memory will be of use.
set_stance(STANCE_SLEEP)
- SSai.processing -= src
update_paused_hud()
// Reverses the above proc.
@@ -89,7 +127,6 @@
if(!should_wake())
return
set_stance(STANCE_IDLE)
- SSai.processing += src
update_paused_hud()
/datum/ai_holder/proc/should_wake()
@@ -122,12 +159,23 @@
// For setting the stance WITHOUT processing it
/datum/ai_holder/proc/set_stance(var/new_stance)
+ if(stance == new_stance)
+ ai_log("set_stance() : Ignoring change stance to same stance request.", AI_LOG_INFO)
+ return
+
ai_log("set_stance() : Setting stance from [stance] to [new_stance].", AI_LOG_INFO)
stance = new_stance
if(stance_coloring) // For debugging or really weird mobs.
stance_color()
update_stance_hud()
+ if(new_stance in fastprocess_stances) //Becoming fast
+ manage_processing(AI_PROCESSING|AI_FASTPROCESSING)
+ else if(new_stance in noprocess_stances)
+ manage_processing(AI_NO_PROCESS) //Becoming off
+ else
+ manage_processing(AI_PROCESSING) //Becoming slow
+
// This is called every half a second.
/datum/ai_holder/proc/handle_stance_tactical()
ai_log("========= Fast Process Beginning ==========", AI_LOG_TRACE) // This is to make it easier visually to disinguish between 'blocks' of what a tick did.
@@ -167,19 +215,6 @@
return
switch(stance)
- if(STANCE_IDLE)
- if(should_go_home())
- ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE)
- go_home()
-
- else if(should_follow_leader())
- ai_log("handle_stance_tactical() : STANCE_IDLE, going to follow leader.", AI_LOG_TRACE)
- set_stance(STANCE_FOLLOW)
-
- else if(should_wander())
- ai_log("handle_stance_tactical() : STANCE_IDLE, going to wander randomly.", AI_LOG_TRACE)
- handle_wander_movement()
-
if(STANCE_ALERT)
ai_log("handle_stance_tactical() : STANCE_ALERT, going to threaten_target().", AI_LOG_TRACE)
threaten_target()
@@ -241,9 +276,23 @@
if(STANCE_IDLE)
if(speak_chance) // In the long loop since otherwise it wont shut up.
handle_idle_speaking()
+
if(hostile)
ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE)
find_target()
+
+ if(should_go_home())
+ ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE)
+ go_home()
+
+ else if(should_follow_leader())
+ ai_log("handle_stance_tactical() : STANCE_IDLE, going to follow leader.", AI_LOG_TRACE)
+ set_stance(STANCE_FOLLOW)
+
+ else if(should_wander())
+ ai_log("handle_stance_tactical() : STANCE_IDLE, going to wander randomly.", AI_LOG_TRACE)
+ handle_wander_movement()
+
if(STANCE_APPROACH)
if(target)
ai_log("handle_stance_strategical() : STANCE_APPROACH, going to calculate_path([target]).", AI_LOG_TRACE)
@@ -291,4 +340,7 @@
// 'Taunts' the AI into attacking the taunter.
/mob/living/proc/taunt(atom/movable/taunter, force_target_switch = FALSE)
if(ai_holder)
- ai_holder.receive_taunt(taunter, force_target_switch)
\ No newline at end of file
+ ai_holder.receive_taunt(taunter, force_target_switch)
+
+#undef AI_PROCESSING
+#undef AI_FASTPROCESSING
\ No newline at end of file
diff --git a/code/modules/ai/ai_holder_disabled.dm b/code/modules/ai/ai_holder_disabled.dm
index dc3717fe181..d68e2ecf5d3 100644
--- a/code/modules/ai/ai_holder_disabled.dm
+++ b/code/modules/ai/ai_holder_disabled.dm
@@ -6,7 +6,7 @@
// If our holder is able to do anything.
/datum/ai_holder/proc/can_act()
if(!holder) // Holder missing.
- SSai.processing -= src
+ manage_processing(AI_NO_PROCESS)
return FALSE
if(holder.stat) // Dead or unconscious.
ai_log("can_act() : Stat was non-zero ([holder.stat]).", AI_LOG_TRACE)
diff --git a/code/modules/ai/ai_holder_follow.dm b/code/modules/ai/ai_holder_follow.dm
index 1e7bb0875dc..45d0d1e7a01 100644
--- a/code/modules/ai/ai_holder_follow.dm
+++ b/code/modules/ai/ai_holder_follow.dm
@@ -57,7 +57,7 @@
ai_log("lose_follow() : Exited.", AI_LOG_DEBUG)
/datum/ai_holder/proc/should_follow_leader()
- if(!leader)
+ if(!leader || target)
return FALSE
if(follow_until_time && world.time > follow_until_time)
lose_follow()
diff --git a/code/modules/ai/ai_holder_movement.dm b/code/modules/ai/ai_holder_movement.dm
index eb465dec5d2..3f9eb1b6857 100644
--- a/code/modules/ai/ai_holder_movement.dm
+++ b/code/modules/ai/ai_holder_movement.dm
@@ -43,6 +43,8 @@
ai_log("walk_to_destination() : Exiting.",AI_LOG_TRACE)
/datum/ai_holder/proc/should_go_home()
+ if(stance != STANCE_IDLE)
+ return FALSE
if(!returns_home || !home_turf)
return FALSE
if(get_dist(holder, home_turf) > max_home_distance)
@@ -139,7 +141,7 @@
return MOVEMENT_ON_COOLDOWN
/datum/ai_holder/proc/should_wander()
- return wander && !leader
+ return (stance == STANCE_IDLE) && wander && !leader
// Wanders randomly in cardinal directions.
/datum/ai_holder/proc/handle_wander_movement()
diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm
index f33906c6622..cacfcf56de3 100644
--- a/code/modules/ai/ai_holder_targeting.dm
+++ b/code/modules/ai/ai_holder_targeting.dm
@@ -25,8 +25,8 @@
// Step 1, find out what we can see.
/datum/ai_holder/proc/list_targets()
- . = hearers(vision_range, holder) - holder // Remove ourselves to prevent suicidal decisions. ~ SRC is the ai_holder.
- . -= dview_mob // Not the dview mob either, nerd.
+ . = ohearers(vision_range, holder)
+ . -= dview_mob // Not the dview mob!
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/structure/blob))
@@ -43,13 +43,8 @@
if(!has_targets_list)
possible_targets = list_targets()
for(var/possible_target in possible_targets)
- var/atom/A = possible_target
- if(found(A)) // In case people want to override this.
- . = list(A)
- break
- if(can_attack(A)) // Can we attack it?
- . += A
- continue
+ if(can_attack(possible_target)) // Can we attack it?
+ . += possible_target
var/new_target = pick_target(.)
give_target(new_target)
@@ -57,7 +52,7 @@
// Step 3, pick among the possible, attackable targets.
/datum/ai_holder/proc/pick_target(list/targets)
- if(target != null) // If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets.
+ if(target) // If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets.
targets = target_filter_distance(targets)
else
targets = target_filter_closest(targets)
@@ -88,32 +83,31 @@
// Filters return one or more 'preferred' targets.
-// This one is for closest targets.
+// This one is for targets closer than our current one.
/datum/ai_holder/proc/target_filter_distance(list/targets)
+ var/target_dist = get_dist(holder, target)
+ var/list/better_targets = list()
for(var/possible_target in targets)
var/atom/A = possible_target
- var/target_dist = get_dist(holder, target)
var/possible_target_distance = get_dist(holder, A)
- if(target_dist < possible_target_distance)
- targets -= A
- return targets
+ if(possible_target_distance < target_dist)
+ better_targets += A
+ return better_targets
+// Returns the closest target and anything tied with it for distance
/datum/ai_holder/proc/target_filter_closest(list/targets)
- var/lowest_distance = -1
- var/list/sorted_targets = list()
+ var/lowest_distance = 1e6 //fakely far
+ var/list/closest_targets = list()
for(var/possible_target in targets)
var/atom/A = possible_target
var/current_distance = get_dist(holder, A)
- if(lowest_distance == -1)
+ if(current_distance < lowest_distance)
+ closest_targets.Cut()
lowest_distance = current_distance
- sorted_targets += A
- else if(current_distance < lowest_distance)
- targets.Cut()
- lowest_distance = current_distance
- sorted_targets += A
+ closest_targets += A
else if(current_distance == lowest_distance)
- sorted_targets += A
- return sorted_targets
+ closest_targets += A
+ return closest_targets
/datum/ai_holder/proc/can_attack(atom/movable/the_target, var/vision_required = TRUE)
if(!can_see_target(the_target) && vision_required)
@@ -163,11 +157,6 @@
return TRUE
// return FALSE
-// Override this for special targeting criteria.
-// If it returns true, the mob will always select it as the target.
-/datum/ai_holder/proc/found(atom/movable/the_target)
- return FALSE
-
// 'Soft' loss of target. They may still exist, we still have some info about them maybe.
/datum/ai_holder/proc/lose_target()
ai_log("lose_target() : Entering.", AI_LOG_TRACE)
diff --git a/code/modules/ai/ai_holder_targeting_vr.dm b/code/modules/ai/ai_holder_targeting_vr.dm
new file mode 100644
index 00000000000..4c7ef854038
--- /dev/null
+++ b/code/modules/ai/ai_holder_targeting_vr.dm
@@ -0,0 +1,5 @@
+/datum/ai_holder/can_see_target(atom/movable/the_target, view_range = vision_range)
+ if(the_target && isbelly(the_target.loc))
+ return FALSE
+
+ return ..()
diff --git a/code/modules/alarm/atmosphere_alarm.dm b/code/modules/alarm/atmosphere_alarm.dm
index f19044a6b75..be97493afd4 100644
--- a/code/modules/alarm/atmosphere_alarm.dm
+++ b/code/modules/alarm/atmosphere_alarm.dm
@@ -5,7 +5,7 @@
var/list/major_alarms = new()
var/list/map_levels = using_map.get_map_levels(z)
for(var/datum/alarm/A in visible_alarms())
- if(z && (z && !(A.origin?.z in map_levels)))
+ if(z && !(A.origin?.z in map_levels))
continue
if(A.max_severity() > 1)
major_alarms.Add(A)
@@ -15,7 +15,7 @@
var/list/minor_alarms = new()
var/list/map_levels = using_map.get_map_levels(z)
for(var/datum/alarm/A in visible_alarms())
- if(z && (z && !(A.origin?.z in map_levels)))
+ if(z && !(A.origin?.z in map_levels))
continue
if(A.max_severity() == 1)
minor_alarms.Add(A)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 3806bd60ba7..75b335154e1 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -84,8 +84,8 @@
if(a_right)
a_right.on_found(finder)
-/obj/item/device/assembly_holder/Move()
- ..()
+/obj/item/device/assembly_holder/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
if(a_left && a_right)
a_left.holder_movement()
a_right.holder_movement()
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 2f10a91fdab..b34b2c0c118 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -79,8 +79,11 @@
/obj/item/device/assembly/infra/Move()
var/t = dir
- ..()
+ . = ..()
set_dir(t)
+
+/obj/item/device/assembly/infra/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
QDEL_LIST_NULL(i_beams)
/obj/item/device/assembly/infra/holder_movement()
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index a93bda48099..c439163fc22 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -88,8 +88,8 @@
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
grenade.primed(scanning)
-/obj/item/device/assembly/prox_sensor/Move()
- ..()
+/obj/item/device/assembly/prox_sensor/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
sense()
/obj/item/device/assembly/prox_sensor/interact(mob/user as mob)//TODO: Change this to the wires thingy
diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm
index 1e8b1cf17ca..efb2379fb0c 100644
--- a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm
@@ -1,5 +1,15 @@
// Collars
+/datum/gear/choker //A colorable choker
+ display_name = "choker (colorable, tagless)"
+ path = /obj/item/clothing/accessory/choker
+ slot = slot_tie
+ sort_category = "Accessories"
+
+/datum/gear/choker/New()
+ ..()
+ gear_tweaks = list(gear_tweak_free_color_choice)
+
/datum/gear/collar
display_name = "collar, silver"
path = /obj/item/clothing/accessory/collar/silver
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index 27f553827ca..eecea216a84 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -1,6 +1,7 @@
// Note for newly added fluff items: Ckeys should not contain any spaces, underscores or capitalizations,
// or else the item will not be usable.
// Example: Someone whose username is "Master Pred_Man" should be written as "masterpredman" instead
+// Note: Do not use characters such as # in the display_name. It will cause the item to be unable to be selected.
/datum/gear/fluff
path = /obj/item
@@ -804,11 +805,18 @@
/datum/gear/fluff/nthasd_modkit //Converts a Security suit's sprite
path = /obj/item/device/modkit_conversion/hasd
- display_name = "NT-HASD #556's Modkit"
+ display_name = "NT-HASD 556's Modkit"
ckeywhitelist = list("silencedmp5a5")
character_name = list("NT-HASD #556")
allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
+/datum/gear/fluff/serdykov_modkit //Also converts a Security suit's sprite
+ path = /obj/item/device/modkit_conversion/fluff/serdykit
+ display_name = "Serdykov Antoz's Modkit"
+ ckeywhitelist = list("silencedmp5a5")
+ character_name = list("Serdykov Antoz")
+ allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
+
/datum/gear/fluff/tasy_clownuniform
path = /obj/item/clothing/under/sexyclown
display_name = "Tasy's Clown Uniform"
diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm
index 6926e68f8a7..2d8086b2b33 100644
--- a/code/modules/clothing/under/accessories/accessory_vr.dm
+++ b/code/modules/clothing/under/accessories/accessory_vr.dm
@@ -2,6 +2,29 @@
// Collars and such like that
//
+/obj/item/clothing/accessory/choker //A colorable, tagless choker
+ name = "plain choker"
+ slot_flags = SLOT_TIE | SLOT_OCLOTHING
+ desc = "A simple, plain choker. Or maybe it's a collar? Use in-hand to customize it."
+ icon = 'icons/obj/clothing/ties_vr.dmi'
+ icon_override = 'icons/mob/ties_vr.dmi'
+ icon_state = "choker_cst"
+ item_state = "choker_cst"
+ overlay_state = "choker_cst"
+ var/customized = 0
+
+/obj/item/clothing/accessory/choker/attack_self(mob/user as mob)
+ if(!customized)
+ var/design = input(user,"Descriptor?","Pick descriptor","") in list("plain","simple","ornate","elegant","opulent")
+ var/material = input(user,"Material?","Pick material","") in list("leather","velvet","lace","fabric","latex","plastic","metal","chain","silver","gold","platinum","steel","bead","ruby","sapphire","emerald","diamond")
+ var/type = input(user,"Type?","Pick type","") in list("choker","collar","necklace")
+ name = "[design] [material] [type]"
+ desc = "A [type], made of [material]. It's rather [design]."
+ customized = 1
+ to_chat(usr,"[src] has now been customized.")
+ else
+ to_chat(usr,"[src] has already been customized!")
+
/obj/item/clothing/accessory/collar
slot_flags = SLOT_TIE | SLOT_OCLOTHING
icon = 'icons/obj/clothing/ties_vr.dmi'
diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm
index d215ab3dac0..61b50dca5fa 100644
--- a/code/modules/hydroponics/beekeeping/beehive.dm
+++ b/code/modules/hydroponics/beekeeping/beehive.dm
@@ -158,7 +158,7 @@
/obj/machinery/honey_extractor
name = "honey extractor"
desc = "A machine used to turn honeycombs on the frame into honey and wax."
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "centrifuge"
var/processing = 0
diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm
index affddf1168e..442fb7da2e6 100644
--- a/code/modules/hydroponics/seed_machines.dm
+++ b/code/modules/hydroponics/seed_machines.dm
@@ -33,7 +33,7 @@
new /obj/item/weapon/disk/botany(src)
/obj/machinery/botany
- icon = 'icons/obj/hydroponics_machines.dmi'
+ icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit
icon_state = "hydrotray3"
density = 1
anchored = 1
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index d5bab164827..9db72c75d81 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -1,6 +1,6 @@
/obj/machinery/portable_atmospherics/hydroponics
name = "hydroponics tray"
- icon = 'icons/obj/hydroponics_machines.dmi'
+ icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit
icon_state = "hydrotray3"
density = 1
anchored = 1
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 8700a65c6ec..39894b13947 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -65,20 +65,19 @@
T.reconsider_lights()
return ..()
-/atom/movable/Move()
- var/turf/old_loc = loc
+/atom/movable/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(loc != old_loc)
- for(var/datum/light_source/L in light_sources)
- L.source_atom.update_light()
+ for(var/datum/light_source/L in light_sources)
+ L.source_atom.update_light()
- var/turf/new_loc = loc
- if(istype(old_loc) && opacity)
- old_loc.reconsider_lights()
+ var/turf/new_turf = loc
+ var/turf/old_turf = old_loc
+ if(istype(old_turf) && opacity)
+ old_turf.reconsider_lights()
- if(istype(new_loc) && opacity)
- new_loc.reconsider_lights()
+ if(istype(new_turf) && opacity)
+ new_turf.reconsider_lights()
/atom/proc/set_opacity(new_opacity)
if(new_opacity == opacity)
diff --git a/code/modules/media/media_machinery.dm b/code/modules/media/media_machinery.dm
index 02d4d9698d9..728cffd234e 100644
--- a/code/modules/media/media_machinery.dm
+++ b/code/modules/media/media_machinery.dm
@@ -54,13 +54,14 @@
master_area = null
/obj/machinery/media/Move()
- ..()
+ disconnect_media_source()
+ . = ..()
if(anchored)
update_music()
/obj/machinery/media/forceMove(var/atom/destination)
disconnect_media_source()
- ..()
+ . = ..()
if(anchored)
update_music()
diff --git a/code/modules/mining/ore_redemption_machine/survey_vendor.dm b/code/modules/mining/ore_redemption_machine/survey_vendor.dm
index 916b1c57f3e..7003c2b832c 100644
--- a/code/modules/mining/ore_redemption_machine/survey_vendor.dm
+++ b/code/modules/mining/ore_redemption_machine/survey_vendor.dm
@@ -10,37 +10,38 @@
icon_vend = "exploration-vend" //VOREStation Add
//VOREStation Edit Start - Heavily modified list
prize_list = list(
- new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 1),
+ new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 1),
new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 10),
new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 30),
new /datum/data/mining_equipment("GPS Device", /obj/item/device/gps/explorer, 10),
- new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 10),
+ new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 10),
new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 10),
new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 15),
new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 20),
new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 90),
new /datum/data/mining_equipment("Geiger Counter", /obj/item/device/geiger, 75),
new /datum/data/mining_equipment("Plush Toy", /obj/random/plushie, 30),
- new /datum/data/mining_equipment("Extraction Equipment - Fulton Beacon", /obj/item/fulton_core, 300),
- new /datum/data/mining_equipment("Extraction Equipment - Fulton Pack", /obj/item/extraction_pack, 125),
+ new /datum/data/mining_equipment("Extraction Equipment - Fulton Beacon",/obj/item/fulton_core, 300),
+ new /datum/data/mining_equipment("Extraction Equipment - Fulton Pack",/obj/item/extraction_pack, 125),
new /datum/data/mining_equipment("Umbrella", /obj/item/weapon/melee/umbrella/random, 20),
- new /datum/data/mining_equipment("Shelter Capsule", /obj/item/device/survivalcapsule, 50),
+ new /datum/data/mining_equipment("Shelter Capsule", /obj/item/device/survivalcapsule, 50),
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card/survey, 50),
new /datum/data/mining_equipment("Trauma Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma, 25),
new /datum/data/mining_equipment("Burn Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/burn, 25),
new /datum/data/mining_equipment("Oxy Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy, 25),
new /datum/data/mining_equipment("Detox Medipen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/detox, 25),
- new /datum/data/mining_equipment("Injector (L) - Glucose",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose, 50),
- new /datum/data/mining_equipment("Injector (L) - Panacea",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity, 50),
- new /datum/data/mining_equipment("Injector (L) - Trauma",/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute, 50),
+ new /datum/data/mining_equipment("Injector (L) - Glucose", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose,50),
+ new /datum/data/mining_equipment("Injector (L) - Panacea", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity,50),
+ new /datum/data/mining_equipment("Injector (L) - Trauma", /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute,50),
new /datum/data/mining_equipment("Digital Tablet - Standard", /obj/item/modular_computer/tablet/preset/custom_loadout/standard, 50),
new /datum/data/mining_equipment("Digital Tablet - Advanced", /obj/item/modular_computer/tablet/preset/custom_loadout/advanced, 100),
new /datum/data/mining_equipment("Nanopaste Tube", /obj/item/stack/nanopaste, 100),
new /datum/data/mining_equipment("Mini-Translocator", /obj/item/device/perfect_tele/one_beacon, 120),
+ new /datum/data/mining_equipment("UAV - Recon Skimmer", /obj/item/device/uav, 400),
new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c100, 100),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 250),
new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/device/survivalcapsule/luxury, 310),
- new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/weapon/gun/magnetic/matfed, 300),
+ new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore",/obj/item/weapon/gun/magnetic/matfed, 300),
new /datum/data/mining_equipment("Survey Tools - Shovel", /obj/item/weapon/shovel, 40),
new /datum/data/mining_equipment("Survey Tools - Mechanical Trap", /obj/item/weapon/beartrap, 50),
new /datum/data/mining_equipment("Defense Equipment - Smoke Bomb",/obj/item/weapon/grenade/smokebomb, 10),
@@ -50,7 +51,7 @@
new /datum/data/mining_equipment("Fishing Net", /obj/item/weapon/material/fishing_net, 50),
new /datum/data/mining_equipment("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 100),
new /datum/data/mining_equipment("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 750),
- new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 1000)
+ new /datum/data/mining_equipment("Bar Shelter Capsule", /obj/item/device/survivalcapsule/luxurybar, 1000)
)
//VOREStation Edit End
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index fb2af265273..e20d3740c9e 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -377,10 +377,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
following = null
return ..()
-/mob/Move()
+/mob/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- update_following()
+ update_following()
/mob/Life()
// to catch teleports etc which directly set loc
diff --git a/code/modules/mob/freelook/ai/update_triggers.dm b/code/modules/mob/freelook/ai/update_triggers.dm
index 5c21c6784da..c0b4adf0f61 100644
--- a/code/modules/mob/freelook/ai/update_triggers.dm
+++ b/code/modules/mob/freelook/ai/update_triggers.dm
@@ -6,30 +6,28 @@
// This might be laggy, comment it out if there are problems.
/mob/living/silicon/var/updating = 0
-/mob/living/silicon/robot/Move()
- var/oldLoc = src.loc
+/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(provides_camera_vision())
- if(!updating)
- updating = 1
- spawn(BORG_CAMERA_BUFFER)
- if(oldLoc != src.loc)
- cameranet.updatePortableCamera(src.camera)
- updating = 0
+ if(!provides_camera_vision())
+ return
+ if(!updating)
+ updating = 1
+ spawn(BORG_CAMERA_BUFFER)
+ if(old_loc != src.loc)
+ cameranet.updatePortableCamera(src.camera)
+ updating = 0
-/mob/living/silicon/AI/Move()
- var/oldLoc = src.loc
+/mob/living/silicon/ai/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(provides_camera_vision())
- if(!updating)
- updating = 1
- spawn(BORG_CAMERA_BUFFER)
- if(oldLoc != src.loc)
- cameranet.updateVisibility(oldLoc, 0)
- cameranet.updateVisibility(loc, 0)
- updating = 0
+ if(!provides_camera_vision())
+ return
+ if(!updating)
+ updating = 1
+ spawn(BORG_CAMERA_BUFFER)
+ if(old_loc != src.loc)
+ cameranet.updateVisibility(old_loc, 0)
+ cameranet.updateVisibility(loc, 0)
+ updating = 0
#undef BORG_CAMERA_BUFFER
diff --git a/code/modules/mob/freelook/mask/update_triggers.dm b/code/modules/mob/freelook/mask/update_triggers.dm
index 1dd520e7f1d..8008916220c 100644
--- a/code/modules/mob/freelook/mask/update_triggers.dm
+++ b/code/modules/mob/freelook/mask/update_triggers.dm
@@ -4,18 +4,17 @@
/mob/living/var/updating_cult_vision = 0
-/mob/living/Move()
- var/oldLoc = src.loc
+/mob/living/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(cultnet.provides_vision(src))
- if(!updating_cult_vision)
- updating_cult_vision = 1
- spawn(CULT_UPDATE_BUFFER)
- if(oldLoc != src.loc)
- cultnet.updateVisibility(oldLoc, 0)
- cultnet.updateVisibility(loc, 0)
- updating_cult_vision = 0
+ if(!cultnet.provides_vision(src))
+ return
+ if(!updating_cult_vision)
+ updating_cult_vision = 1
+ spawn(CULT_UPDATE_BUFFER)
+ if(old_loc != src.loc)
+ cultnet.updateVisibility(old_loc, 0)
+ cultnet.updateVisibility(loc, 0)
+ updating_cult_vision = 0
#undef CULT_UPDATE_BUFFER
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index ff08be434a0..1a8c2df7358 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -81,7 +81,7 @@
return
if(sleeping || stat == UNCONSCIOUS)
- hear_sleep(message)
+ hear_sleep(multilingual_to_message(message_pieces))
return FALSE
if(italics)
@@ -168,7 +168,7 @@
var/message = combine_message(message_pieces, verb, speaker, always_stars = hard_to_hear, radio = TRUE)
if(sleeping || stat == UNCONSCIOUS) //If unconscious or sleeping
- hear_sleep(message)
+ hear_sleep(multilingual_to_message(message_pieces))
return
var/speaker_name = handle_speaker_name(speaker, vname, hard_to_hear)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index ddfca59db9f..894885fe5eb 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -33,20 +33,20 @@
touching.clear_reagents()
..()
-/mob/living/carbon/Move(NewLoc, direct)
+/* VOREStation Edit - Duplicated in our code
+/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(src.nutrition && src.stat != 2)
+ if(src.nutrition && src.stat != 2)
+ src.nutrition -= DEFAULT_HUNGER_FACTOR/10
+ if(src.m_intent == "run")
src.nutrition -= DEFAULT_HUNGER_FACTOR/10
- if(src.m_intent == "run")
- src.nutrition -= DEFAULT_HUNGER_FACTOR/10
- if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
- src.bodytemperature += 2
+ if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
+ src.bodytemperature += 2
+
+ // Moving around increases germ_level faster
+ if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
+ germ_level++
- // Moving around increases germ_level faster
- if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
- germ_level++
-/* VOREStation Removal - Needless duplicate feature
/mob/living/carbon/relaymove(var/mob/living/user, direction)
if((user in src.stomach_contents) && istype(user))
if(user.last_special <= world.time)
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 9e906f35cc1..d8b85cc12ee 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -51,7 +51,7 @@
message = "lets out a bark."
m_type = 2
playsound(loc, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if ("his")
+ if ("hiss")
message = "lets out a hiss."
m_type = 2
playsound(loc, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 642eaa2c4f8..7756829bf17 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -418,7 +418,7 @@
BITSET(hud_updateflag, WANTED_HUD)
if(istype(usr,/mob/living/carbon/human))
var/mob/living/carbon/human/U = usr
- U.handle_regular_hud_updates()
+ U.handle_hud_list()
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/U = usr
U.handle_regular_hud_updates()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 4f5b7542691..50156c808fe 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -58,8 +58,8 @@
..()
- if(life_tick%30==15)
- hud_updateflag = 1022
+ if(life_tick % 30)
+ hud_updateflag = (1 << TOTAL_HUDS) - 1
voice = GetVoice()
@@ -91,7 +91,7 @@
else if(stat == DEAD && !stasis)
handle_defib_timer()
- if(!handle_some_updates())
+ if(skip_some_updates())
return //We go ahead and process them 5 times for HUD images and other stuff though.
//Update our name based on whether our face is obscured/disfigured
@@ -99,10 +99,10 @@
pulse = handle_pulse()
-/mob/living/carbon/human/proc/handle_some_updates()
+/mob/living/carbon/human/proc/skip_some_updates()
if(life_tick > 5 && timeofdeath && (timeofdeath < 5 || world.time - timeofdeath > 6000)) //We are long dead, or we're junk mobs spawned like the clowns on the clown shuttle
- return 0
- return 1
+ return 1
+ return 0
/mob/living/carbon/human/breathe()
if(!inStasisNow())
@@ -951,7 +951,7 @@
//DO NOT CALL handle_statuses() from this proc, it's called from living/Life() as long as this returns a true value.
/mob/living/carbon/human/handle_regular_status_updates()
- if(!handle_some_updates())
+ if(skip_some_updates())
return 0
if(status_flags & GODMODE) return 0
@@ -1292,8 +1292,11 @@
else
bodytemp.icon_state = "temp0"
- if(blinded) overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
- else clear_fullscreens()
+ if(blinded)
+ overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
+
+ else if(!machine)
+ clear_fullscreens()
if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription
if(glasses) //to every /obj/item
@@ -1395,11 +1398,12 @@
if(machine)
var/viewflags = machine.check_eye(src)
- machine.apply_visual(src)
if(viewflags < 0)
reset_view(null, 0)
else if(viewflags && !looking_elsewhere)
sight |= viewflags
+ else
+ machine.apply_visual(src)
else if(eyeobj)
if(eyeobj.owner != src)
diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm
index 6c15daedf19..8120e504d91 100644
--- a/code/modules/mob/living/carbon/human/life_vr.dm
+++ b/code/modules/mob/living/carbon/human/life_vr.dm
@@ -58,22 +58,21 @@
nif.life()
//Overriding carbon move proc that forces default hunger factor
-/mob/living/carbon/Move(NewLoc, direct)
+/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(src.nutrition && src.stat != 2)
- if(ishuman(src))
- var/mob/living/carbon/human/M = src
- if(M.stat != 2 && M.nutrition > 0)
+ if(src.nutrition && src.stat != 2)
+ if(ishuman(src))
+ var/mob/living/carbon/human/M = src
+ if(M.stat != 2 && M.nutrition > 0)
+ M.nutrition -= M.species.hunger_factor/10
+ if(M.m_intent == "run")
M.nutrition -= M.species.hunger_factor/10
- if(M.m_intent == "run")
- M.nutrition -= M.species.hunger_factor/10
- if(M.nutrition < 0)
- M.nutrition = 0
- else
+ if(M.nutrition < 0)
+ M.nutrition = 0
+ else
+ src.nutrition -= DEFAULT_HUNGER_FACTOR/10
+ if(src.m_intent == "run")
src.nutrition -= DEFAULT_HUNGER_FACTOR/10
- if(src.m_intent == "run")
- src.nutrition -= DEFAULT_HUNGER_FACTOR/10
- // Moving around increases germ_level faster
- if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
- germ_level++
\ No newline at end of file
+ // Moving around increases germ_level faster
+ if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
+ germ_level++
\ No newline at end of file
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 1e66f654788..b1c90185730 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -173,13 +173,11 @@
if(ear_damage < 100)
adjustEarDamage(-0.05,-1)
-//this handles hud updates. Calls update_vision() and handle_hud_icons()
/mob/living/handle_regular_hud_updates()
if(!client)
return 0
..()
- handle_vision()
handle_darksight()
handle_hud_icons()
diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm
index 858741988e1..b83b7bfee92 100644
--- a/code/modules/mob/living/silicon/robot/robot_movement.dm
+++ b/code/modules/mob/living/silicon/robot/robot_movement.dm
@@ -33,52 +33,52 @@
if (cell_use_power(A.active_usage))
return ..()
-/mob/living/silicon/robot/Move(a, b, flag)
-
+/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(module)
- if(module.type == /obj/item/weapon/robot_module/robot/janitor)
- var/turf/tile = loc
- if(isturf(tile))
- tile.clean_blood()
- if (istype(tile, /turf/simulated))
- var/turf/simulated/S = tile
- S.dirt = 0
- for(var/A in tile)
- if(istype(A, /obj/effect))
- if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay))
- qdel(A)
- else if(istype(A, /obj/item))
- var/obj/item/cleaned_item = A
- cleaned_item.clean_blood()
- else if(istype(A, /mob/living/carbon/human))
- var/mob/living/carbon/human/cleaned_human = A
- if(cleaned_human.lying)
- if(cleaned_human.head)
- cleaned_human.head.clean_blood()
- cleaned_human.update_inv_head(0)
- if(cleaned_human.wear_suit)
- cleaned_human.wear_suit.clean_blood()
- cleaned_human.update_inv_wear_suit(0)
- else if(cleaned_human.w_uniform)
- cleaned_human.w_uniform.clean_blood()
- cleaned_human.update_inv_w_uniform(0)
- if(cleaned_human.shoes)
- cleaned_human.shoes.clean_blood()
- cleaned_human.update_inv_shoes(0)
- cleaned_human.clean_blood(1)
- cleaned_human << "[src] cleans your face!"
+ if(!module)
+ return
- if((module_state_1 && istype(module_state_1, /obj/item/weapon/storage/bag/ore)) || (module_state_2 && istype(module_state_2, /obj/item/weapon/storage/bag/ore)) || (module_state_3 && istype(module_state_3, /obj/item/weapon/storage/bag/ore))) //Borgs and drones can use their mining bags ~automagically~ if they're deployed in a slot. Only mining bags, as they're optimized for mass use.
- var/obj/item/weapon/storage/bag/ore/B = null
- if(istype(module_state_1, /obj/item/weapon/storage/bag/ore)) //First orebag has priority, if they for some reason have multiple.
- B = module_state_1
- else if(istype(module_state_2, /obj/item/weapon/storage/bag/ore))
- B = module_state_2
- else if(istype(module_state_3, /obj/item/weapon/storage/bag/ore))
- B = module_state_3
- var/turf/tile = loc
- if(isturf(tile))
- B.gather_all(tile, src, 1) //Shhh, unless the bag fills, don't spam the borg's chat with stuff that's going on every time they move!
- return
+ //Borgs and drones can use their mining bags ~automagically~ if they're deployed in a slot. Only mining bags, as they're optimized for mass use.
+ if(istype(module_state_1, /obj/item/weapon/storage/bag/ore) || istype(module_state_2, /obj/item/weapon/storage/bag/ore) || istype(module_state_3, /obj/item/weapon/storage/bag/ore))
+ var/obj/item/weapon/storage/bag/ore/B = null
+ if(istype(module_state_1, /obj/item/weapon/storage/bag/ore)) //First orebag has priority, if they for some reason have multiple.
+ B = module_state_1
+ else if(istype(module_state_2, /obj/item/weapon/storage/bag/ore))
+ B = module_state_2
+ else if(istype(module_state_3, /obj/item/weapon/storage/bag/ore))
+ B = module_state_3
+ var/turf/tile = loc
+ if(isturf(tile))
+ B.gather_all(tile, src, 1) //Shhh, unless the bag fills, don't spam the borg's chat with stuff that's going on every time they move!
+
+ if(istype(module, /obj/item/weapon/robot_module/robot/janitor) && isturf(loc))
+ var/turf/tile = loc
+ tile.clean_blood()
+ if (istype(tile, /turf/simulated))
+ var/turf/simulated/S = tile
+ S.dirt = 0
+ for(var/A in tile)
+ if(istype(A, /obj/effect))
+ if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay))
+ qdel(A)
+ else if(istype(A, /obj/item))
+ var/obj/item/cleaned_item = A
+ cleaned_item.clean_blood()
+ else if(istype(A, /mob/living/carbon/human))
+ var/mob/living/carbon/human/cleaned_human = A
+ if(cleaned_human.lying)
+ if(cleaned_human.head)
+ cleaned_human.head.clean_blood()
+ cleaned_human.update_inv_head(0)
+ if(cleaned_human.wear_suit)
+ cleaned_human.wear_suit.clean_blood()
+ cleaned_human.update_inv_wear_suit(0)
+ else if(cleaned_human.w_uniform)
+ cleaned_human.w_uniform.clean_blood()
+ cleaned_human.update_inv_w_uniform(0)
+ if(cleaned_human.shoes)
+ cleaned_human.shoes.clean_blood()
+ cleaned_human.update_inv_shoes(0)
+ cleaned_human.clean_blood(1)
+ cleaned_human << "[src] cleans your face!"
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm
index edf40411000..840026946f5 100644
--- a/code/modules/mob/living/silicon/robot/robot_vr.dm
+++ b/code/modules/mob/living/silicon/robot/robot_vr.dm
@@ -109,39 +109,35 @@
icon_state = "[module_sprites[icontype]]-wreck"
add_overlay("wreck-overlay")
-/mob/living/silicon/robot/Move(a, b, flag)
+/mob/living/silicon/robot/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(scrubbing)
- var/datum/matter_synth/water = water_res
- if(water && water.energy >= 1)
- var/turf/tile = loc
- if(isturf(tile))
- water.use_charge(1)
- tile.clean_blood()
- if(istype(tile, /turf/simulated))
- var/turf/simulated/T = tile
- T.dirt = 0
- for(var/A in tile)
- if(istype(A,/obj/effect/rune) || istype(A,/obj/effect/decal/cleanable) || istype(A,/obj/effect/overlay))
- qdel(A)
- else if(istype(A, /mob/living/carbon/human))
- var/mob/living/carbon/human/cleaned_human = A
- if(cleaned_human.lying)
- if(cleaned_human.head)
- cleaned_human.head.clean_blood()
- cleaned_human.update_inv_head(0)
- if(cleaned_human.wear_suit)
- cleaned_human.wear_suit.clean_blood()
- cleaned_human.update_inv_wear_suit(0)
- else if(cleaned_human.w_uniform)
- cleaned_human.w_uniform.clean_blood()
- cleaned_human.update_inv_w_uniform(0)
- if(cleaned_human.shoes)
- cleaned_human.shoes.clean_blood()
- cleaned_human.update_inv_shoes(0)
- cleaned_human.clean_blood(1)
- to_chat(cleaned_human, "[src] cleans your face!")
- return
+ if(scrubbing && isturf(loc) && water_res?.energy >= 1)
+ var/turf/tile = loc
+ water_res.use_charge(1)
+ tile.clean_blood()
+ if(istype(tile, /turf/simulated))
+ var/turf/simulated/T = tile
+ T.dirt = 0
+ for(var/A in tile)
+ if(istype(A,/obj/effect/rune) || istype(A,/obj/effect/decal/cleanable) || istype(A,/obj/effect/overlay))
+ qdel(A)
+ else if(istype(A, /mob/living/carbon/human))
+ var/mob/living/carbon/human/cleaned_human = A
+ if(cleaned_human.lying)
+ if(cleaned_human.head)
+ cleaned_human.head.clean_blood()
+ cleaned_human.update_inv_head(0)
+ if(cleaned_human.wear_suit)
+ cleaned_human.wear_suit.clean_blood()
+ cleaned_human.update_inv_wear_suit(0)
+ else if(cleaned_human.w_uniform)
+ cleaned_human.w_uniform.clean_blood()
+ cleaned_human.update_inv_w_uniform(0)
+ if(cleaned_human.shoes)
+ cleaned_human.shoes.clean_blood()
+ cleaned_human.update_inv_shoes(0)
+ cleaned_human.clean_blood(1)
+ to_chat(cleaned_human, "[src] cleans your face!")
/mob/living/silicon/robot/proc/vr_sprite_check()
if(wideborg == TRUE)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm
index 7ff82a81603..1e7991d6a26 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm
@@ -54,8 +54,8 @@
var/step = get_step_to(src, food, 0)
Move(step)
-/mob/living/simple_mob/animal/goat/Move()
- ..()
+/mob/living/simple_mob/animal/goat/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
if(!stat)
for(var/obj/effect/plant/SV in loc)
SV.die_off(1)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
index b2e913bfb24..2019859f3fc 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
@@ -256,14 +256,10 @@
for(var/possible_target in possible_targets)
var/atom/A = possible_target
- if(found(A))
- . = list(A)
- break
if(istype(A, /mob/living) && !can_pick_mobs)
continue
if(can_attack(A)) // Can we attack it?
. += A
- continue
for(var/obj/item/I in .)
last_search = world.time
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
index 9fbb2926bb3..b2ff320b522 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm
@@ -196,29 +196,15 @@
next = null
..()
-/mob/living/simple_mob/animal/space/space_worm/Move()
- var/attachementNextPosition = loc
+/mob/living/simple_mob/animal/space/space_worm/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(previous)
- if(previous.z != z)
- previous.z_transitioning = TRUE
- else
- previous.z_transitioning = FALSE
- previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business.
- update_icon()
-
-/mob/living/simple_mob/animal/space/space_worm/forceMove()
- var/attachementNextPosition = loc
- . = ..()
- if(.)
- if(previous)
- if(previous.z != z)
- previous.z_transitioning = TRUE
- else
- previous.z_transitioning = FALSE
- previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business. x 2
- update_icon()
+ if(previous)
+ if(previous.z != z)
+ previous.z_transitioning = TRUE
+ else
+ previous.z_transitioning = FALSE
+ previous.forceMove(old_loc) // None of this 'ripped in half by an airlock' business.
+ update_icon()
/mob/living/simple_mob/animal/space/space_worm/head/Bump(atom/obstacle)
if(open_maw && !stat && obstacle != previous)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 0e4a326cab6..d2fe2ecbd9c 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -110,8 +110,8 @@
/client/Move(n, direct)
- if(!mob)
- return // Moved here to avoid nullrefs below
+ //if(!mob) // Clients cannot have a null mob, as enforced by byond
+ // return // Moved here to avoid nullrefs below
if(mob.control_object) Move_object(direct)
@@ -166,8 +166,11 @@
if(!mob.canmove)
return
- //if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV))
- // if(!mob.Process_Spacemove(0)) return 0
+ //Relaymove could handle it
+ if(mob.machine)
+ var/result = mob.machine.relaymove(mob, direct)
+ if(result)
+ return result
if(!mob.lastarea)
mob.lastarea = get_area(mob.loc)
@@ -218,10 +221,6 @@
return
return mob.buckled.relaymove(mob,direct)
- if(istype(mob.machine, /obj/machinery))
- if(mob.machine.relaymove(mob,direct))
- return
-
if(mob.pulledby || mob.buckled) // Wheelchair driving!
if(istype(mob.loc, /turf/space))
return // No wheelchair driving in space
@@ -366,17 +365,7 @@
anim(mobloc,mob,'icons/mob/mob.dmi',,"shadow",,mob.dir)
mob.forceMove(get_step(mob, direct))
mob.dir = direct
- // Crossed is always a bit iffy
- for(var/obj/S in mob.loc)
- if(istype(S,/obj/effect/step_trigger) || istype(S,/obj/effect/beam))
- S.Crossed(mob)
- var/area/A = get_area_master(mob)
- if(A)
- A.Entered(mob)
- if(isturf(mob.loc))
- var/turf/T = mob.loc
- T.Entered(mob)
mob.Post_Incorpmove()
return 1
@@ -468,16 +457,11 @@
/mob/proc/update_gravity()
return
-/*
-// The real Move() proc is above, but touching that massive block just to put this in isn't worth it.
-/mob/Move(var/newloc, var/direct)
- . = ..(newloc, direct)
- if(.)
- post_move(newloc, direct)
-*/
+
// Called when a mob successfully moves.
// Would've been an /atom/movable proc but it caused issues.
/mob/Moved(atom/oldloc)
+ . = ..()
for(var/obj/O in contents)
O.on_loc_moved(oldloc)
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 8677e8f8804..e98522ac003 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -377,7 +377,7 @@
var/turf/T = join_props["turf"]
var/join_message = join_props["msg"]
- var/announce_channel = join_props["channel"] || "Common" // VOREStation Add
+ var/announce_channel = join_props["channel"] || "Common"
if(!T || !join_message)
return 0
diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm
index 2848468da8c..db15e841cad 100644
--- a/code/modules/modular_computers/computers/modular_computer/core.dm
+++ b/code/modules/modular_computers/computers/modular_computer/core.dm
@@ -255,6 +255,18 @@
else
return ..()
+/obj/item/modular_computer/apply_visual(var/mob/user)
+ if(active_program)
+ return active_program.apply_visual(user)
+
+/obj/item/modular_computer/remove_visual(var/mob/user)
+ if(active_program)
+ return active_program.remove_visual(user)
+
+/obj/item/modular_computer/relaymove(var/mob/user, direction)
+ if(active_program)
+ return active_program.relaymove(user, direction)
+
/obj/item/modular_computer/proc/set_autorun(program)
if(!hard_drive)
return
diff --git a/code/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm
index 5670c37522c..03e86c53380 100644
--- a/code/modules/modular_computers/computers/subtypes/preset_console.dm
+++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm
@@ -15,6 +15,7 @@
hard_drive.store_file(new/datum/computer_file/program/atmos_control())
hard_drive.store_file(new/datum/computer_file/program/rcon_console())
hard_drive.store_file(new/datum/computer_file/program/camera_monitor())
+ hard_drive.store_file(new/datum/computer_file/program/shutoff_monitor())
// Medical
/obj/item/modular_computer/console/preset/medical/install_default_programs()
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index 895b73b5fa5..ef7eece062f 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -203,8 +203,12 @@
/datum/computer_file/program/apply_visual(mob/M)
if(NM)
- NM.apply_visual(M)
+ return NM.apply_visual(M)
/datum/computer_file/program/remove_visual(mob/M)
if(NM)
- NM.remove_visual(M)
+ return NM.remove_visual(M)
+
+/datum/computer_file/program/proc/relaymove(var/mob/M, direction)
+ if(NM)
+ return NM.relaymove(M, direction)
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm
new file mode 100644
index 00000000000..c46bb9c6676
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/engineering/shutoff_monitor.dm
@@ -0,0 +1,63 @@
+/datum/computer_file/program/shutoff_monitor
+ filename = "shutoffmonitor"
+ filedesc = "Shutoff Valve Monitoring"
+ nanomodule_path = /datum/nano_module/shutoff_monitor
+ program_icon_state = "atmos_control"
+ program_key_state = "atmos_key"
+ program_menu_icon = "wrench"
+ extended_desc = "This program allows for remote monitoring and control of emergency shutoff valves."
+ required_access = access_engine
+ requires_ntnet = 1
+ network_destination = "shutoff valve control computer"
+ size = 5
+ var/has_alert = 0
+
+/datum/nano_module/shutoff_monitor
+ name = "Shutoff Valve Monitoring"
+
+/datum/nano_module/shutoff_monitor/Topic(ref, href_list)
+ if(..())
+ return 1
+
+ if(href_list["toggle_enable"])
+ var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_enable"])
+ if(!istype(S))
+ return 0
+ S.close_on_leaks = !S.close_on_leaks
+ return 1
+
+ if(href_list["toggle_open"])
+ var/obj/machinery/atmospherics/valve/shutoff/S = locate(href_list["toggle_open"])
+ if(!istype(S))
+ return 0
+ if(S.open)
+ S.close()
+ else
+ S.open()
+ return 1
+
+/datum/nano_module/shutoff_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
+ var/list/data = host.initial_data()
+ var/list/valves = list()
+
+ for(var/obj/machinery/atmospherics/valve/shutoff/S in GLOB.shutoff_valves)
+ valves.Add(list(list(
+ "name" = S.name,
+ "enabled" = S.close_on_leaks,
+ "open" = S.open,
+ "x" = S.x,
+ "y" = S.y,
+ "z" = S.z,
+ "ref" = "\ref[S]"
+ )))
+
+ data["valves"] = valves
+
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "shutoff_monitor.tmpl", "Shutoff Valve Monitoring", 627, 700, state = state)
+ if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI.
+ ui.auto_update_layout = 1
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/generic/uav.dm b/code/modules/modular_computers/file_system/programs/generic/uav.dm
new file mode 100644
index 00000000000..8e4909ab048
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/generic/uav.dm
@@ -0,0 +1,266 @@
+/obj/item/modular_computer
+ var/list/paired_uavs //Weakrefs, don't worry about it!
+
+/datum/computer_file/program/uav
+ filename = "rigger"
+ filedesc = "UAV Control"
+ nanomodule_path = /datum/nano_module/uav
+ program_icon_state = "comm_monitor"
+ program_key_state = "generic_key"
+ program_menu_icon = "link"
+ extended_desc = "This program allows remote control of certain drones, but only when paired with this device."
+ size = 12
+ available_on_ntnet = 1
+ //requires_ntnet = 1
+
+/datum/nano_module/uav
+ name = "UAV Control program"
+ var/obj/item/device/uav/current_uav = null //The UAV we're watching
+ var/signal_strength = 0 //Our last signal strength report (cached for a few seconds)
+ var/signal_test_counter = 0 //How long until next signal strength check
+ var/list/viewers //Who's viewing a UAV through us
+ var/adhoc_range = 30 //How far we can operate on a UAV without NTnet
+
+/datum/nano_module/uav/Destroy()
+ if(LAZYLEN(viewers))
+ for(var/weakref/W in viewers)
+ var/M = W.resolve()
+ if(M)
+ unlook(M)
+ . = ..()
+
+/datum/nano_module/uav/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, state = default_state)
+ var/list/data = host.initial_data()
+
+ if(current_uav)
+ if(QDELETED(current_uav))
+ set_current(null)
+ else if(signal_test_counter-- <= 0)
+ signal_strength = get_signal_to(current_uav)
+ if(!signal_strength)
+ set_current(null)
+ else // Don't reset counter until we find a UAV that's actually in range we can stay connected to
+ signal_test_counter = 20
+
+ data["current_uav"] = null
+ if(current_uav)
+ data["current_uav"] = list("status" = current_uav.get_status_string(), "power" = current_uav.state == 1 ? 1 : null)
+ data["signal_strength"] = signal_strength ? signal_strength >= 2 ? "High" : "Low" : "None"
+ data["in_use"] = LAZYLEN(viewers)
+
+ var/list/paired_map = list()
+ var/obj/item/modular_computer/mc_host = nano_host()
+ if(istype(mc_host))
+ for(var/puav in mc_host.paired_uavs)
+ var/weakref/wr = puav
+ var/obj/item/device/uav/U = wr.resolve()
+ paired_map[++paired_map.len] = list("name" = "[U ? U.nickname : "!!Missing!!"]", "uavref" = "\ref[U]")
+
+ data["paired_uavs"] = paired_map
+
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "mod_uav.tmpl", "UAV Control", 600, 500, state = state)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/datum/nano_module/uav/Topic(var/href, var/href_list = list(), var/datum/topic_state/state)
+ if((. = ..()))
+ return
+ state = state || DefaultTopicState() || global.default_state
+ if(CanUseTopic(usr, state, href_list) == STATUS_INTERACTIVE)
+ CouldUseTopic(usr)
+ return OnTopic(usr, href_list, state)
+ CouldNotUseTopic(usr)
+ return TRUE
+
+/datum/nano_module/uav/proc/OnTopic(var/mob/user, var/list/href_list)
+ if(href_list["switch_uav"])
+ var/obj/item/device/uav/U = locate(href_list["switch_uav"]) //This is a \ref to the UAV itself
+ if(!istype(U))
+ to_chat(usr,"Something is blocking the connection to that UAV. In-person investigation is required.")
+ return TOPIC_NOACTION
+
+ if(!get_signal_to(U))
+ to_chat(usr,"The screen freezes for a moment, before returning to the UAV selection menu. It's not able to connect to that UAV.")
+ return TOPIC_NOACTION
+
+ set_current(U)
+ return TOPIC_REFRESH
+
+ if(href_list["del_uav"])
+ var/refstring = href_list["del_uav"] //This is a \ref to the UAV itself
+ var/obj/item/modular_computer/mc_host = nano_host()
+ //This is so we can really scrape up any weakrefs that can't resolve
+ for(var/weakref/wr in mc_host.paired_uavs)
+ if(wr.ref == refstring)
+ if(current_uav?.weakref == wr)
+ set_current(null)
+ LAZYREMOVE(mc_host.paired_uavs, wr)
+
+ else if(href_list["view_uav"])
+ if(!current_uav)
+ return TOPIC_NOACTION
+
+ if(current_uav.check_eye(user) < 0)
+ to_chat(usr,"The screen freezes for a moment, before returning to the UAV selection menu. It's not able to connect to that UAV.")
+ else
+ viewing_uav(user) ? unlook(user) : look(user)
+ return TOPIC_NOACTION
+
+ else if(href_list["power_uav"])
+ if(!current_uav)
+ return TOPIC_NOACTION
+ else if(current_uav.toggle_power())
+ //Clean up viewers faster
+ if(LAZYLEN(viewers))
+ for(var/weakref/W in viewers)
+ var/M = W.resolve()
+ if(M)
+ unlook(M)
+ return TOPIC_REFRESH
+
+/datum/nano_module/uav/proc/DefaultTopicState()
+ return global.default_state
+
+/datum/nano_module/uav/proc/CouldNotUseTopic(mob/user)
+ . = ..()
+ unlook(user)
+
+/datum/nano_module/uav/proc/CouldUseTopic(mob/user)
+ . = ..()
+ if(viewing_uav(user))
+ look(user)
+
+/datum/nano_module/uav/proc/set_current(var/obj/item/device/uav/U)
+ if(current_uav == U)
+ return
+
+ signal_strength = 0
+ current_uav = U
+
+ if(LAZYLEN(viewers))
+ for(var/weakref/W in viewers)
+ var/M = W.resolve()
+ if(M)
+ if(current_uav)
+ to_chat(M, "You're disconnected from the UAV's camera!")
+ unlook(M)
+ else
+ look(M)
+
+////
+//// Finding signal strength between us and the UAV
+////
+/datum/nano_module/uav/proc/get_signal_to(var/atom/movable/AM)
+ // Following roughly the ntnet signal levels
+ // 0 is none
+ // 1 is weak
+ // 2 is strong
+ var/obj/item/modular_computer/host = nano_host() //Better not add this to anything other than modular computers.
+ if(!istype(host))
+ return
+ var/our_signal = host.get_ntnet_status() //1 low, 2 good, 3 wired, 0 none
+ var/their_z = get_z(AM)
+
+ //If we have no NTnet connection don't bother getting theirs
+ if(!our_signal)
+ if(get_z(host) == their_z && (get_dist(host, AM) < adhoc_range))
+ return 1 //We can connect (with weak signal) in same z without ntnet, within 30 turfs
+ else
+ return 0
+
+ var/list/zlevels_in_range = using_map.get_map_levels(their_z, FALSE)
+ var/list/zlevels_in_long_range = using_map.get_map_levels(their_z, TRUE) - zlevels_in_range
+ var/their_signal = 0
+ for(var/relay in ntnet_global.relays)
+ var/obj/machinery/ntnet_relay/R = relay
+ if(!R.operable())
+ continue
+ if(R.z == their_z)
+ their_signal = 2
+ break
+ if(R.z in zlevels_in_range)
+ their_signal = 2
+ break
+ if(R.z in zlevels_in_long_range)
+ their_signal = 1
+ break
+
+ if(!their_signal) //They have no NTnet at all
+ if(get_z(host) == their_z && (get_dist(host, AM) < adhoc_range))
+ return 1 //We can connect (with weak signal) in same z without ntnet, within 30 turfs
+ else
+ return 0
+ else
+ return max(our_signal, their_signal)
+
+////
+//// UAV viewer handling
+////
+/datum/nano_module/uav/proc/viewing_uav(mob/user)
+ return (weakref(user) in viewers)
+
+/datum/nano_module/uav/proc/look(var/mob/user)
+ if(issilicon(user)) //Too complicated for me to want to mess with at the moment
+ to_chat(user, "Regulations prevent you from controlling several corporeal forms at the same time!")
+ return
+
+ if(!current_uav)
+ return
+
+ user.set_machine(nano_host())
+ user.reset_view(current_uav)
+ current_uav.add_master(user)
+ LAZYDISTINCTADD(viewers, weakref(user))
+
+/datum/nano_module/uav/proc/unlook(var/mob/user)
+ user.unset_machine()
+ user.reset_view()
+ if(current_uav)
+ current_uav.remove_master(user)
+ LAZYREMOVE(viewers, weakref(user))
+
+/datum/nano_module/uav/check_eye(var/mob/user)
+ if(get_dist(user, nano_host()) > 1 || user.blinded || !current_uav)
+ unlook(user)
+ return -1
+
+ var/viewflag = current_uav.check_eye(user)
+ if (viewflag < 0) //camera doesn't work
+ unlook(user)
+ return -1
+
+ return viewflag
+
+////
+//// Relaying movements to the UAV
+////
+/datum/nano_module/uav/relaymove(var/mob/user, direction)
+ if(current_uav)
+ return current_uav.relaymove(user, direction, signal_strength)
+
+////
+//// The effects when looking through a UAV
+////
+/datum/nano_module/uav/apply_visual(var/mob/M)
+ if(!M.client)
+ return
+ if(weakref(M) in viewers)
+ M.overlay_fullscreen("fishbed",/obj/screen/fullscreen/fishbed)
+ M.overlay_fullscreen("scanlines",/obj/screen/fullscreen/scanline)
+
+ if(signal_strength <= 1)
+ M.overlay_fullscreen("whitenoise",/obj/screen/fullscreen/noise)
+ else
+ M.clear_fullscreen("whitenoise", 0)
+ else
+ remove_visual(M)
+
+/datum/nano_module/uav/remove_visual(mob/M)
+ if(!M.client)
+ return
+ M.clear_fullscreen("fishbed",0)
+ M.clear_fullscreen("scanlines",0)
+ M.clear_fullscreen("whitenoise",0)
diff --git a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm
index 2b259519265..894173ec724 100644
--- a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm
+++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm
@@ -46,7 +46,7 @@
to_chat(user, "The crew monitor doesn't seem like it'll work here.")
if(program)
program.kill_program()
- else if(ui)
+ if(ui)
ui.close()
return
diff --git a/code/modules/modular_computers/file_system/programs/ships/navigation.dm b/code/modules/modular_computers/file_system/programs/ships/navigation.dm
index dbe7aed5def..88db90598bc 100644
--- a/code/modules/modular_computers/file_system/programs/ships/navigation.dm
+++ b/code/modules/modular_computers/file_system/programs/ships/navigation.dm
@@ -4,7 +4,7 @@
nanomodule_path = /datum/nano_module/program/ship/nav
program_icon_state = "helm"
program_key_state = "generic_key"
- program_menu_icon = "search"
+ program_menu_icon = "pin-s"
extended_desc = "Displays a ship's location in the sector."
required_access = null
requires_ntnet = 1
diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm
index 2f382e0f4d8..1447c5008e4 100644
--- a/code/modules/modular_computers/hardware/network_card.dm
+++ b/code/modules/modular_computers/hardware/network_card.dm
@@ -39,6 +39,27 @@ var/global/ntnet_card_uid = 1
icon_state = "netcard_advanced"
hardware_size = 1
+/obj/item/weapon/computer_hardware/network_card/quantum
+ name = "quantum NTNet network card"
+ desc = "A network card that can connect to NTnet from anywhere, using quantum entanglement."
+ long_range = 1
+ origin_tech = list(TECH_DATA = 6, TECH_ENGINEERING = 7)
+ power_usage = 200 // Infinite range but higher power usage.
+ icon_state = "netcard_advanced"
+ hardware_size = 1
+
+/obj/item/weapon/computer_hardware/network_card/quantum/get_signal(var/specific_action = 0)
+ if(!holder2)
+ return 0
+
+ if(!enabled)
+ return 0
+
+ if(!check_functionality() || !ntnet_global || is_banned())
+ return 0
+
+ return 2
+
/obj/item/weapon/computer_hardware/network_card/wired
name = "wired NTNet network card"
desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection."
@@ -82,7 +103,8 @@ var/global/ntnet_card_uid = 1
var/holderz = get_z(holder2)
if(!holderz) //no reception in nullspace
return 0
- var/list/zlevels_in_range = using_map.get_map_levels(holderz, long_range)
+ var/list/zlevels_in_range = using_map.get_map_levels(holderz, FALSE)
+ var/list/zlevels_in_long_range = using_map.get_map_levels(holderz, TRUE) - zlevels_in_range
var/best = 0
for(var/relay in ntnet_global.relays)
var/obj/machinery/ntnet_relay/R = relay
@@ -91,11 +113,16 @@ var/global/ntnet_card_uid = 1
continue
//We're on the same z
if(R.z == holderz)
- best = 2
+ best = 2 //Every network card gets high signal on the same z as the relay
break // No point in going further
//Not on the same z but within range anyway
if(R.z in zlevels_in_range)
- best = 1
+ best = long_range ? 2 : 1 //High-power network cards get good signal further away
+ break
+ //Only in long range
+ if(long_range && (R.z in zlevels_in_long_range))
+ best = 1 //High-power network cards can get low signal even at long range
+ break
return best
return 0 // No computer!
diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm
index 540dfddada6..949f9a7a943 100644
--- a/code/modules/multiz/zshadow.dm
+++ b/code/modules/multiz/zshadow.dm
@@ -61,7 +61,7 @@
if(shadow)
shadow.sync_icon(src)
-/mob/living/Move()
+/mob/living/Moved()
. = ..()
check_shadow()
diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm
index 90c213da1c5..75c38c9ed36 100644
--- a/code/modules/nano/modules/nano_module.dm
+++ b/code/modules/nano/modules/nano_module.dm
@@ -62,3 +62,6 @@
/datum/proc/update_layout()
return FALSE
+
+/datum/nano_module/proc/relaymove(var/mob/user, direction)
+ return FALSE
diff --git a/code/modules/overmap/disperser/disperser_charge.dm b/code/modules/overmap/disperser/disperser_charge.dm
index 22026086d5e..b09557ebd1a 100644
--- a/code/modules/overmap/disperser/disperser_charge.dm
+++ b/code/modules/overmap/disperser/disperser_charge.dm
@@ -15,13 +15,13 @@
)
// make a screeching noise to drive people mad
-/obj/structure/ship_munition/disperser_charge/Move(atom/newloc, direct = 0)
- if((. = ..()) && prob(50))
+/obj/structure/ship_munition/disperser_charge/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ if(prob(50))
var/turf/T = get_turf(src)
if(!isspace(T) && !istype(T, /turf/simulated/floor/carpet))
playsound(T, pick(move_sounds), 50, 1)
-
/obj/structure/ship_munition/disperser_charge/fire
name = "FR1-ENFER charge"
color = "#b95a00"
diff --git a/code/modules/overmap/events/overmap_event.dm b/code/modules/overmap/events/overmap_event.dm
index 9add25a5c1b..ff1b4ae105f 100644
--- a/code/modules/overmap/events/overmap_event.dm
+++ b/code/modules/overmap/events/overmap_event.dm
@@ -19,19 +19,10 @@
icon_state = pick(event_icon_states)
GLOB.overmap_event_handler.update_hazards(loc)
-/obj/effect/overmap/event/Move()
- var/turf/old_loc = loc
+/obj/effect/overmap/event/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- GLOB.overmap_event_handler.update_hazards(old_loc)
- GLOB.overmap_event_handler.update_hazards(loc)
-
-/obj/effect/overmap/event/forceMove(atom/destination)
- var/old_loc = loc
- . = ..()
- if(.)
- GLOB.overmap_event_handler.update_hazards(old_loc)
- GLOB.overmap_event_handler.update_hazards(loc)
+ GLOB.overmap_event_handler.update_hazards(old_loc)
+ GLOB.overmap_event_handler.update_hazards(loc)
/obj/effect/overmap/event/Destroy()//takes a look at this one as well, make sure everything is A-OK
var/turf/T = loc
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index ab535081b63..fbb632e0401 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -556,6 +556,11 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
return ..()
+ //VOREStation Add - No welding nanoform limbs
+ if(S.robotic > ORGAN_LIFELIKE)
+ return ..()
+ //VOREStation Add End
+
if(S.organ_tag == BP_HEAD)
if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space))
to_chat(user, "You can't apply [src] through [H.head]!")
diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm
index 5cf222c24ad..9f5dd799f46 100644
--- a/code/modules/power/gravitygenerator_vr.dm
+++ b/code/modules/power/gravitygenerator_vr.dm
@@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(gravity_generators)
return "off"
// You aren't allowed to move.
-/obj/machinery/gravity_generator/Move()
+/obj/machinery/gravity_generator/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
qdel(src)
@@ -88,13 +88,14 @@ GLOBAL_LIST_EMPTY(gravity_generators)
//
// Generator which spawns with the station.
//
+/obj/machinery/gravity_generator/main/station
+ use_power = USE_POWER_ACTIVE
+ current_overlay = "activated"
/obj/machinery/gravity_generator/main/station/Initialize()
. = ..()
setup_parts()
- middle.add_overlay("activated")
- current_overlay = "activated"
- update_use_power(USE_POWER_ACTIVE)
+ middle.add_overlay("activated")
//
// Generator an admin can spawn
@@ -122,7 +123,6 @@ GLOBAL_LIST_EMPTY(gravity_generators)
var/charge_count = 100
var/current_overlay = null
var/broken_state = 0
- var/setting = 1 //Gravity value when on
var/list/levels = list()
var/list/areas = list()
@@ -290,19 +290,32 @@ GLOBAL_LIST_EMPTY(gravity_generators)
else if(breaker)
new_state = TRUE
- charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation.
+ // Charging state FSM
+ switch(charging_state)
+ if(POWER_UP)
+ if(!new_state) // Can start spin down during spin up
+ charging_state = POWER_DOWN
+ if(POWER_DOWN)
+ if(new_state) // Can start spin up during spin down
+ charging_state = POWER_UP
+ if(POWER_IDLE)
+ if(!new_state && use_power == USE_POWER_ACTIVE) // Can start spin down during running
+ charging_state = POWER_DOWN
+ else if(new_state && use_power == USE_POWER_IDLE) // Can start spin up during stopped
+ charging_state = POWER_UP
+
investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", "gravity")
update_icon()
// Set the state of the gravity.
/obj/machinery/gravity_generator/main/proc/set_state(new_state)
charging_state = POWER_IDLE
- on = new_state
- update_use_power(on ? USE_POWER_ACTIVE : USE_POWER_IDLE)
+ update_use_power(new_state ? USE_POWER_ACTIVE : USE_POWER_IDLE)
+
// Sound the alert if gravity was just enabled or disabled.
var/alert = FALSE
if(SSticker.IsRoundInProgress())
- if(on) // If we turned on and the game is live.
+ if(new_state) // If we turned on and the game is live.
if(gravity_in_level() == FALSE)
alert = TRUE
investigate_log("was brought online and is now producing gravity for this level.", "gravity")
@@ -314,9 +327,10 @@ GLOBAL_LIST_EMPTY(gravity_generators)
message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_JMP(src)]")
update_list()
- update_gravity(on)
+ update_gravity(new_state)
update_icon()
src.updateUsrDialog()
+
if(alert)
shake_everyone()
@@ -408,7 +422,7 @@ GLOBAL_LIST_EMPTY(gravity_generators)
for(var/z in levels)
if(!GLOB.gravity_generators["[z]"])
GLOB.gravity_generators["[z]"] = list()
- if(on)
+ if(use_power == USE_POWER_ACTIVE)
GLOB.gravity_generators["[z]"] |= src
else
GLOB.gravity_generators["[z]"] -= src
@@ -416,6 +430,8 @@ GLOBAL_LIST_EMPTY(gravity_generators)
/obj/machinery/gravity_generator/main/proc/update_areas()
areas.Cut()
for(var/area/A)
+ if(istype(A, /area/shuttle))
+ continue //Skip shuttle areas
if(A.z in levels)
areas += A
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index f5481afd4cc..7b36dd7347a 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -135,9 +135,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
return
-/obj/structure/particle_accelerator/Move()
- ..()
- if(master && master.active)
+/obj/structure/particle_accelerator/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
+ if(master?.active)
master.toggle_power()
log_game("PACCEL([x],[y],[z]) Was moved while active and turned off.")
investigate_log("was moved whilst active; it powered down.","singulo")
diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm
index 6ac366b58ad..b7aab78f0df 100644
--- a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm
+++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m.dm
@@ -20,14 +20,6 @@
icon_state = "ml3m_cmo"
-/obj/item/weapon/gun/projectile/cell_loaded/medical/staff
- name = "cell-loaded staff"
- desc = "A modified version of the ML-3 Medigun that takes advantage of internal micro-reactor technology to recharge its cells on the field, allowing for prolonged use without needing to stop and charge or replace the cells."
- description_fluff = "The 'healrod' allows one to customize their loadout in the field, or before deploying, to allow emergency response personnel to deliver a variety of ranged healing options over an extended period of time, thanks to its internal minireactor."
- description_antag = ""
- origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_BIO = 5)
- allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/medical)
- icon_state = "healrod"
// The Magazine //
diff --git a/code/modules/projectiles/guns/energy/gunsword_vr.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm
index f6bb1a30263..b6d5f054f9d 100644
--- a/code/modules/projectiles/guns/energy/gunsword_vr.dm
+++ b/code/modules/projectiles/guns/energy/gunsword_vr.dm
@@ -7,13 +7,13 @@
icon_override = 'icons/vore/custom_guns_vr.dmi'
item_state = null
- item_icons = null
+ item_icons = list(slot_r_hand_str = 'icons/vore/custom_guns_vr.dmi', slot_l_hand_str = 'icons/vore/custom_guns_vr.dmi')
+ item_state_slots = list(slot_r_hand_str = "gbuster_r", slot_l_hand_str = "gbuster_l")
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 4)
- slot_flags = null
projectile_type = /obj/item/projectile/beam/stun
- fire_sound = 'sound/weapons/gauss_shoot.ogg'
+ fire_sound = 'sound/weapons/mandalorian.ogg'
charge_meter = 1
cell_type = /obj/item/weapon/cell/device/weapon/gunsword
@@ -22,7 +22,7 @@
firemodes = list(
list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="gbuster", fire_sound='sound/weapons/Taser.ogg'),
- list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam, modifystate="gbuster", fire_sound='sound/weapons/gauss_shoot.ogg'),
+ list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam/imperial, modifystate="gbuster", fire_sound='sound/weapons/gauss_shoot.ogg'),
)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 3ed65642296..47e9c5f6d63 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -338,14 +338,13 @@
START_PROCESSING(SSprojectiles, src)
pixel_move(1, FALSE) //move it now!
-/obj/item/projectile/Move(atom/newloc, dir = NONE)
+/obj/item/projectile/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
- if(.)
- if(temporary_unstoppable_movement)
- temporary_unstoppable_movement = FALSE
- DISABLE_BITFIELD(movement_type, UNSTOPPABLE)
- if(fired && can_hit_target(original, permutated, TRUE))
- Bump(original)
+ if(temporary_unstoppable_movement)
+ temporary_unstoppable_movement = FALSE
+ DISABLE_BITFIELD(movement_type, UNSTOPPABLE)
+ if(fired && can_hit_target(original, permutated, TRUE))
+ Bump(original)
/obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm
index 125de3db6c5..7316c42179a 100644
--- a/code/modules/research/mechfab_designs.dm
+++ b/code/modules/research/mechfab_designs.dm
@@ -1030,3 +1030,12 @@
req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 6, TECH_ILLEGAL = 3, TECH_BLUESPACE = 4, TECH_ARCANE = 2, TECH_PRECURSOR = 3)
materials = list(MAT_DURASTEEL = 5000, MAT_GRAPHITE = 3000, MAT_MORPHIUM = 1500, MAT_OSMIUM = 1500, MAT_PHORON = 1750, MAT_VERDANTIUM = 3000, MAT_SUPERMATTER = 2000)
build_path = /obj/item/rig_module/teleporter
+
+/datum/design/item/mechfab/uav/basic
+ name = "UAV - Recon Skimmer"
+ id = "recon_skimmer"
+ build_path = /obj/item/device/uav
+ time = 20
+ req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6)
+ materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, "silver" = 4000)
+
\ No newline at end of file
diff --git a/code/modules/vchat/vchat_db.dm b/code/modules/vchat/vchat_db.dm
index 0dc7e7982de..3fc0833aca0 100644
--- a/code/modules/vchat/vchat_db.dm
+++ b/code/modules/vchat/vchat_db.dm
@@ -103,7 +103,7 @@ GLOBAL_DATUM(vchatdb, /database)
var/list/messagedef = list(
"INSERT INTO messages (ckey,worldtime,message) VALUES (?, ?, ?)",
ckey,
- world.time,
+ world.time || 0,
message)
return vchat_exec_update(messagedef)
diff --git a/code/modules/vehicles/quad.dm b/code/modules/vehicles/quad.dm
index 99adccf4597..657d4976f42 100644
--- a/code/modules/vehicles/quad.dm
+++ b/code/modules/vehicles/quad.dm
@@ -45,19 +45,18 @@
icon_state = "quad_keys"
w_class = ITEMSIZE_TINY
-/obj/vehicle/train/engine/quadbike/Move(var/turf/destination)
- var/turf/T = get_turf(src)
- ..() //Move it move it, so we can test it test it.
- if(T != get_turf(src) && !istype(destination, T.type)) //Did we move at all, and are we changing turf types?
- if(istype(destination, /turf/simulated/floor/water))
+/obj/vehicle/train/engine/quadbike/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..() //Move it move it, so we can test it test it.
+ if(!istype(loc, old_loc.type) && !istype(old_loc, loc.type)) //Did we move at all, and are we changing turf types?
+ if(istype(loc, /turf/simulated/floor/water))
speed_mod = outdoors_speed_mod * 4 //It kind of floats due to its tires, but it is slow.
- else if(istype(destination, /turf/simulated/floor/outdoors/rocks))
+ else if(istype(loc, /turf/simulated/floor/outdoors/rocks))
speed_mod = initial(speed_mod) //Rocks are good, rocks are solid.
- else if(istype(destination, /turf/simulated/floor/outdoors/dirt) || istype(destination, /turf/simulated/floor/outdoors/grass))
+ else if(istype(loc, /turf/simulated/floor/outdoors/dirt) || istype(loc, /turf/simulated/floor/outdoors/grass))
speed_mod = outdoors_speed_mod //Dirt and grass are the outdoors bench mark.
- else if(istype(destination, /turf/simulated/floor/outdoors/mud))
+ else if(istype(loc, /turf/simulated/floor/outdoors/mud))
speed_mod = outdoors_speed_mod * 1.5 //Gets us roughly 1. Mud may be fun, but it's not the best.
- else if(istype(destination, /turf/simulated/floor/outdoors/snow))
+ else if(istype(loc, /turf/simulated/floor/outdoors/snow))
speed_mod = outdoors_speed_mod * 1.7 //Roughly a 1.25. Snow is coarse and wet and gets everywhere, especially your electric motors.
else
speed_mod = initial(speed_mod)
@@ -193,8 +192,8 @@
..()
update_icon()
-/obj/vehicle/train/trolley/trailer/Move()
- ..()
+/obj/vehicle/train/trolley/trailer/Moved(atom/old_loc, direction, forced = FALSE)
+ . = ..()
if(lead)
switch(dir) //Due to being a Big Boy sprite, it has to have special pixel shifting to look 'normal'.
if(1)
diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm
index 24d24b11798..67fc0735a3b 100644
--- a/code/modules/vehicles/train.dm
+++ b/code/modules/vehicles/train.dm
@@ -29,14 +29,11 @@
/obj/vehicle/train/Move()
var/old_loc = get_turf(src)
- if(..())
+ if((. = ..()))
if(tow)
tow.Move(old_loc)
- return 1
- else
- if(lead)
- unattach()
- return 0
+ else if(lead)
+ unattach()
/obj/vehicle/train/Bump(atom/Obstacle)
if(!istype(Obstacle, /atom/movable))
diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm
index e7f5dd64e33..b45dba31ed0 100644
--- a/code/modules/virus2/analyser.dm
+++ b/code/modules/virus2/analyser.dm
@@ -1,7 +1,7 @@
/obj/machinery/disease2/diseaseanalyser
name = "disease analyser"
desc = "Analyzes diseases to find out information about them!"
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "analyser"
anchored = 1
density = 1
diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm
index 433a26977bd..fddfb044412 100644
--- a/code/modules/virus2/centrifuge.dm
+++ b/code/modules/virus2/centrifuge.dm
@@ -1,7 +1,7 @@
/obj/machinery/computer/centrifuge
name = "isolation centrifuge"
desc = "Used to separate things with different weight. Spin 'em round, round, right round."
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "centrifuge"
var/curing
var/isolating
diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm
index 3ebe688c781..15638718a4d 100644
--- a/code/modules/virus2/dishincubator.dm
+++ b/code/modules/virus2/dishincubator.dm
@@ -3,7 +3,7 @@
desc = "Encourages the growth of diseases. This model comes with a dispenser system and a small radiation generator."
density = 1
anchored = 1
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "incubator"
var/obj/item/weapon/virusdish/dish
var/obj/item/weapon/reagent_containers/glass/beaker = null
diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm
index d22b379ee14..2a6d39d230c 100644
--- a/code/modules/virus2/isolator.dm
+++ b/code/modules/virus2/isolator.dm
@@ -8,7 +8,7 @@
desc = "Used to isolate and identify diseases, allowing for comparison with a remote database."
density = 1
anchored = 1
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "isolator"
var/isolating = 0
var/state = HOME
diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
index 9503eaa1e5f..3efdcbd8a80 100644
--- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
@@ -276,6 +276,7 @@
name = "Deer dual-color (Taur)"
icon_state = "deer_s"
extra_overlay = "deer_markings"
+ suit_sprites = 'icons/mob/taursuits_deer_vr.dmi'
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -387,6 +388,7 @@
/datum/sprite_accessory/tail/taur/slug
name = "Slug (Taur)"
icon_state = "slug_s"
+ suit_sprites = 'icons/mob/taursuits_slug_vr.dmi'
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
@@ -429,6 +431,7 @@
name = "Otie (Taur)"
icon_state = "otie_s"
extra_overlay = "otie_markings"
+ suit_sprites = 'icons/mob/taursuits_otie_vr.dmi'
/datum/sprite_accessory/tail/taur/alraune/alraune_2c
name = "Alraune (dual color)"
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 5c48e5ea22b..11ce8988f0f 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -201,6 +201,17 @@
var/taste
if(can_taste && (taste = M.get_taste_message(FALSE)))
to_chat(owner, "[M] tastes of [taste].")
+ //Stop AI processing in bellies
+ if(M.ai_holder)
+ M.ai_holder.go_sleep()
+
+// Called whenever an atom leaves this belly
+/obj/belly/Exited(atom/movable/thing, atom/OldLoc)
+ . = ..()
+ if(isliving(thing) && !isbelly(thing.loc))
+ var/mob/living/L = thing
+ if((L.stat != DEAD) && L.ai_holder)
+ L.ai_holder.go_wake()
// Release all contents of this belly into the owning mob's location.
// If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in.
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 69dd7e6ceca..6c2c2596ceb 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -36,27 +36,27 @@
var/from_suit = /obj/item/clothing/suit/space/void
var/to_helmet = /obj/item/clothing/head/cardborg
var/to_suit = /obj/item/clothing/suit/cardborg
-
+
//conversion costs. refunds all parts by default, but can be tweaked per-kit
var/from_helmet_cost = 1
var/from_suit_cost = 2
var/to_helmet_cost = -1
var/to_suit_cost = -2
-
+
var/owner_ckey = null //ckey of the kit owner as a string
var/skip_content_check = FALSE //can we skip the contents check? we generally shouldn't, but this is necessary for rigs/coats with hoods/etc.
var/transfer_contents = FALSE //should we transfer the contents across before deleting? we generally shouldn't, esp. in the case of rigs/coats with hoods/etc. note this does nothing if skip is FALSE.
var/can_repair = FALSE //can we be used to repair damaged voidsuits when converting them?
var/can_revert = TRUE //can we revert items, or is it a one-way trip?
var/delete_on_empty = FALSE //do we self-delete when emptied?
-
+
//Conversion proc
/obj/item/device/modkit_conversion/afterattack(obj/O, mob/user as mob)
var/cost
var/to_type
var/keycheck
-
- if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes.
+
+ if(isturf(O)) //silently fail if you click on a turf. shouldn't work anyway because turfs aren't objects but if I don't do this it spits runtimes.
return
if(istype(O,/obj/item/clothing/suit/space/void/) && !can_repair) //check if we're a voidsuit and if we're allowed to repair
var/obj/item/clothing/suit/space/void/SS = O
@@ -104,13 +104,13 @@
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
var/obj/N = new to_type(O.loc)
user.visible_message("[user] opens \the [src] and modifies \the [O] into \the [N].","You open \the [src] and modify \the [O] into \the [N].")
-
+
//crude, but transfer prints and fibers to avoid forensics abuse, same as the bloody/gooey check above
N.fingerprints = O.fingerprints
N.fingerprintshidden = O.fingerprintshidden
N.fingerprintslast = O.fingerprintslast
N.suit_fibers = O.suit_fibers
-
+
//transfer logic could technically be made more thorough and handle stuff like helmet/boots/tank vars for suits, but in those cases you should be removing the items first anyway
if(skip_content_check && transfer_contents)
N.contents = O.contents
@@ -133,7 +133,7 @@
var/obj/item/weapon/gun/energy/NO = N
NO.contents = list()
NO.cell_type = null
-
+
qdel(O)
parts -= cost
if(!parts && delete_on_empty)
@@ -439,8 +439,8 @@
//SilencedMP5A5:Serdykov Antoz
/obj/item/clothing/suit/armor/vest/wolftaur/serdy //SilencedMP5A5's specialty armor suit.
- name = "KSS-8 security armor"
- desc = "A set of armor made from pieces of many other armors. There are two orange holobadges on it, one on the chestplate, one on the steel flank plates. The holobadges appear to be russian in origin. 'Kosmicheskaya Stantsiya-8' is printed in faded white letters on one side, along the spine. It smells strongly of dog."
+ name = "custom security cuirass"
+ desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates."
species_restricted = null //Species restricted since all it cares about is a taur half
icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "serdy_armor"
@@ -454,16 +454,27 @@
to_chat(H, "You need to have a wolf-taur half to wear this.")
return 0
-/obj/item/clothing/head/helmet/serdy //SilencedMP5A5's specialty helmet. Uncomment if/when they make their custom item app and are accepted.
- name = "KSS-8 security helmet"
- desc = "desc = An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog. It's been heavily modified, and fitted with a metal mask to protect the jaw."
+/obj/item/clothing/head/serdyhelmet //SilencedMP5A5's specialty helmet.
+ name = "custom security helmet"
+ desc = "An old production model steel-ceramic lined helmet with a white stripe and a custom orange holographic visor. It has ear holes, and smells of dog."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "serdyhelm"
-
+ valid_accessory_slots = (ACCESSORY_SLOT_HELM_C)
+ restricted_accessory_slots = (ACCESSORY_SLOT_HELM_C)
+ flags = THICKMATERIAL
+ armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "serdyhelm_mob"
+ cold_protection = HEAD
+ min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
+ heat_protection = HEAD
+ max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
+ siemens_coefficient = 0.7
+ w_class = ITEMSIZE_NORMAL
+ ear_protection = 1
+ drop_sound = 'sound/items/drop/helm.ogg'
+
-/*
//SilencedMP5A5:Serdykov Antoz
/obj/item/device/modkit_conversion/fluff/serdykit
name = "Serdykov's armor modification kit"
@@ -474,9 +485,9 @@
from_helmet = /obj/item/clothing/head/helmet
from_suit = /obj/item/clothing/suit/armor/vest/wolftaur
- to_helmet = /obj/item/clothing/head/helmet/serdy
+ to_helmet = /obj/item/clothing/head/serdyhelmet
to_suit = /obj/item/clothing/suit/armor/vest/wolftaur/serdy
-*/
+
//Cameron653: Diana Kuznetsova
/obj/item/clothing/suit/fluff/purp_robes
diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm
index 840c2096c50..7ecf912cfb1 100644
--- a/code/modules/xenoarcheaology/artifacts/artifact.dm
+++ b/code/modules/xenoarcheaology/artifacts/artifact.dm
@@ -336,8 +336,8 @@
secondary_effect.ToggleActivate(0)
return
-/obj/machinery/artifact/Move()
- ..()
+/obj/machinery/artifact/Moved()
+ . = ..()
if(my_effect)
my_effect.UpdateMove()
if(secondary_effect)
diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm
index a3e69c4e7ec..500b1a9970c 100644
--- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm
+++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm
@@ -1,7 +1,7 @@
/obj/machinery/artifact_analyser
name = "Anomaly Analyser"
desc = "Studies the emissions of anomalous materials to discover their uses."
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "isolator"
anchored = 1
density = 1
diff --git a/code/modules/xenoarcheaology/tools/artifact_harvester.dm b/code/modules/xenoarcheaology/tools/artifact_harvester.dm
index 8222eaa1f09..d4c843bbb7e 100644
--- a/code/modules/xenoarcheaology/tools/artifact_harvester.dm
+++ b/code/modules/xenoarcheaology/tools/artifact_harvester.dm
@@ -1,6 +1,6 @@
/obj/machinery/artifact_harvester
name = "Exotic Particle Harvester"
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "incubator" //incubator_on
anchored = 1
density = 1
diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
index 5cb5d32479e..c5e5c029fd7 100644
--- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm
+++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
@@ -3,7 +3,7 @@
desc = "A specialised, complex scanner for gleaning information on all manner of small things."
anchored = 1
density = 1
- icon = 'icons/obj/virology.dmi'
+ icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit
icon_state = "analyser"
use_power = USE_POWER_IDLE
diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm
index d0b368335dc..761a2a98d41 100644
--- a/code/modules/xenobio2/machinery/gene_manipulators.dm
+++ b/code/modules/xenobio2/machinery/gene_manipulators.dm
@@ -115,7 +115,7 @@
/obj/machinery/xenobio/extractor
name = "biological product destructive analyzer"
- icon = 'icons/obj/hydroponics_machines.dmi'
+ icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit
icon_state = "traitcopier"
circuit = /obj/item/weapon/circuitboard/bioproddestanalyzer
diff --git a/html/changelogs/atlantiscze-valveprogram.yml b/html/changelogs/atlantiscze-valveprogram.yml
new file mode 100644
index 00000000000..3d288c05be3
--- /dev/null
+++ b/html/changelogs/atlantiscze-valveprogram.yml
@@ -0,0 +1,5 @@
+author: atlantiscze
+delete-after: True
+
+changes:
+ - rscadd: "Shutoff valve monitoring is now also available as a modular computer program. Its UI has also been cleaned up a little."
\ No newline at end of file
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index 99f3f4fd4c9..5555d0e1ade 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/radial.dmi b/icons/mob/radial.dmi
index da1f69840c6..883ea38caeb 100644
Binary files a/icons/mob/radial.dmi and b/icons/mob/radial.dmi differ
diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi
index fb3361dafd8..d10902a6ffb 100644
Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ
diff --git a/icons/mob/taursuits_cow_vr.dmi b/icons/mob/taursuits_cow_vr.dmi
index eef5bd698c4..ce592d5edb9 100644
Binary files a/icons/mob/taursuits_cow_vr.dmi and b/icons/mob/taursuits_cow_vr.dmi differ
diff --git a/icons/mob/taursuits_deer_vr.dmi b/icons/mob/taursuits_deer_vr.dmi
new file mode 100644
index 00000000000..6c53a6f4d09
Binary files /dev/null and b/icons/mob/taursuits_deer_vr.dmi differ
diff --git a/icons/mob/taursuits_drake_vr.dmi b/icons/mob/taursuits_drake_vr.dmi
index c8be86ed976..ca0db57532f 100644
Binary files a/icons/mob/taursuits_drake_vr.dmi and b/icons/mob/taursuits_drake_vr.dmi differ
diff --git a/icons/mob/taursuits_feline_vr.dmi b/icons/mob/taursuits_feline_vr.dmi
index e180d1dad27..1d4c597e02d 100644
Binary files a/icons/mob/taursuits_feline_vr.dmi and b/icons/mob/taursuits_feline_vr.dmi differ
diff --git a/icons/mob/taursuits_horse_vr.dmi b/icons/mob/taursuits_horse_vr.dmi
index 8dc33f31184..4162463c69b 100644
Binary files a/icons/mob/taursuits_horse_vr.dmi and b/icons/mob/taursuits_horse_vr.dmi differ
diff --git a/icons/mob/taursuits_lizard_vr.dmi b/icons/mob/taursuits_lizard_vr.dmi
index 2971beb8635..a6b9858f177 100644
Binary files a/icons/mob/taursuits_lizard_vr.dmi and b/icons/mob/taursuits_lizard_vr.dmi differ
diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi
index ef00466c27b..375081158f8 100644
Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ
diff --git a/icons/mob/taursuits_otie_vr.dmi b/icons/mob/taursuits_otie_vr.dmi
new file mode 100644
index 00000000000..06e083854ea
Binary files /dev/null and b/icons/mob/taursuits_otie_vr.dmi differ
diff --git a/icons/mob/taursuits_slug_vr.dmi b/icons/mob/taursuits_slug_vr.dmi
new file mode 100644
index 00000000000..98692375f3f
Binary files /dev/null and b/icons/mob/taursuits_slug_vr.dmi differ
diff --git a/icons/mob/taursuits_wolf_vr.dmi b/icons/mob/taursuits_wolf_vr.dmi
index 94422849f84..0f638ea6d38 100644
Binary files a/icons/mob/taursuits_wolf_vr.dmi and b/icons/mob/taursuits_wolf_vr.dmi differ
diff --git a/icons/mob/ties_vr.dmi b/icons/mob/ties_vr.dmi
index e9651101126..7e06a43e112 100644
Binary files a/icons/mob/ties_vr.dmi and b/icons/mob/ties_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index d3b06e056b7..fd203ada3fc 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/icons/obj/clothing/ties_vr.dmi b/icons/obj/clothing/ties_vr.dmi
index fc13c4f683f..9df871aedc4 100644
Binary files a/icons/obj/clothing/ties_vr.dmi and b/icons/obj/clothing/ties_vr.dmi differ
diff --git a/icons/obj/hydroponics_machines_vr.dmi b/icons/obj/hydroponics_machines_vr.dmi
new file mode 100644
index 00000000000..2a7ba26031e
Binary files /dev/null and b/icons/obj/hydroponics_machines_vr.dmi differ
diff --git a/icons/obj/objects_vr.dmi b/icons/obj/objects_vr.dmi
index e8485b3638a..1160e025ded 100644
Binary files a/icons/obj/objects_vr.dmi and b/icons/obj/objects_vr.dmi differ
diff --git a/icons/obj/surgery_vr.dmi b/icons/obj/surgery_vr.dmi
index 9b0f9b8aed8..7984e374c8d 100644
Binary files a/icons/obj/surgery_vr.dmi and b/icons/obj/surgery_vr.dmi differ
diff --git a/icons/obj/uav.dmi b/icons/obj/uav.dmi
new file mode 100644
index 00000000000..daae9a03da8
Binary files /dev/null and b/icons/obj/uav.dmi differ
diff --git a/icons/obj/virology_vr.dmi b/icons/obj/virology_vr.dmi
new file mode 100644
index 00000000000..224c4c90148
Binary files /dev/null and b/icons/obj/virology_vr.dmi differ
diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi
index c1a3bf53832..0a20d366ccf 100644
Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ
diff --git a/icons/vore/custom_guns_vr.dmi b/icons/vore/custom_guns_vr.dmi
index 2bf97bc70e6..4e1a4cc79f0 100644
Binary files a/icons/vore/custom_guns_vr.dmi and b/icons/vore/custom_guns_vr.dmi differ
diff --git a/icons/vore/custom_items_left_hand_vr.dmi b/icons/vore/custom_items_left_hand_vr.dmi
index 02f783cd8de..1ee6c0a336c 100644
Binary files a/icons/vore/custom_items_left_hand_vr.dmi and b/icons/vore/custom_items_left_hand_vr.dmi differ
diff --git a/icons/vore/custom_items_right_hand_vr.dmi b/icons/vore/custom_items_right_hand_vr.dmi
index 27264584abe..a6e419e2ede 100644
Binary files a/icons/vore/custom_items_right_hand_vr.dmi and b/icons/vore/custom_items_right_hand_vr.dmi differ
diff --git a/icons/vore/custom_onmob_vr.dmi b/icons/vore/custom_onmob_vr.dmi
index 81c3efd0480..1dbfb6d011b 100644
Binary files a/icons/vore/custom_onmob_vr.dmi and b/icons/vore/custom_onmob_vr.dmi differ
diff --git a/maps/southern_cross/items/encryptionkey_vr.dm b/maps/southern_cross/items/encryptionkey_vr.dm
deleted file mode 100644
index fe1032c09b6..00000000000
--- a/maps/southern_cross/items/encryptionkey_vr.dm
+++ /dev/null
@@ -1,9 +0,0 @@
-/obj/item/device/encryptionkey/pilot
- icon_state = "cypherkey"
- channels = list("Explorer" = 1)
-
-/obj/item/device/encryptionkey/explorer
- channels = list("Science" = 1, "Explorer" = 1)
-
-/obj/item/device/encryptionkey/talon
- channels = list("Talon" = 1)
diff --git a/maps/southern_cross/items/headset_vr.dm b/maps/southern_cross/items/headset_vr.dm
deleted file mode 100644
index 8b6f7b1e97d..00000000000
--- a/maps/southern_cross/items/headset_vr.dm
+++ /dev/null
@@ -1,33 +0,0 @@
-/obj/item/device/radio/headset/pilot
- desc = "A headset used by pilots, has access to the explorer channel."
-
-/obj/item/device/radio/headset/pilot/alt
- desc = "A bowman headset used by pilots, has access to the explorer channel."
-
-/obj/item/device/radio/headset/explorer
- desc = "Headset used by explorers for exploring. Access to explorer and science channels."
-
-/obj/item/device/radio/headset/explorer/alt
- desc = "Bowman headset used by explorers for exploring. Access to explorer and science channels."
-
-/obj/item/device/radio/headset/sar
- name = "fm radio headset"
- desc = "A headset for field medics."
-
-/obj/item/device/radio/headset/sar/alt
- name = "fm radio bowman headset"
- desc = "A bowman headset for field medics."
-
-/obj/item/device/radio/headset/volunteer
- name = "volunteer's headset"
- desc = "A headset used by volunteers to expedition teams, has access to the exploration channel."
- icon_state = "pilot_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/device/encryptionkey/pilot
-
-/obj/item/device/radio/headset/talon
- name = "talon headset"
- desc = "A headset for communication between the crew of the ITV Talon."
- adhoc_fallback = TRUE
- icon_state = "pilot_headset"
- ks2type = /obj/item/device/encryptionkey/talon
diff --git a/maps/southern_cross/job/outfits_vr.dm b/maps/southern_cross/job/outfits_vr.dm
deleted file mode 100644
index e2976fb10cf..00000000000
--- a/maps/southern_cross/job/outfits_vr.dm
+++ /dev/null
@@ -1,21 +0,0 @@
-/decl/hierarchy/outfit/job/pathfinder
- name = OUTFIT_JOB_NAME("Pathfinder")
- shoes = /obj/item/clothing/shoes/boots/winter/explorer
- uniform = /obj/item/clothing/under/explorer //TODO: Uniforms.
- l_ear = /obj/item/device/radio/headset/explorer
- id_slot = slot_wear_id
- pda_slot = slot_l_store
- pda_type = /obj/item/device/pda/pathfinder
- id_type = /obj/item/weapon/card/id/explorer/head
- id_pda_assignment = "Pathfinder"
- flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
- backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1)
-
-/decl/hierarchy/outfit/job/pathfinder/post_equip(mob/living/carbon/human/H)
- ..()
- for(var/obj/item/clothing/accessory/permit/gun/planetside/permit in H.back.contents)
- permit.set_name(H.real_name)
-
-/decl/hierarchy/outfit/job/assistant/explorer
- id_type = /obj/item/weapon/card/id/explorer
- flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
diff --git a/maps/tether/submaps/om_ships/aro.dmm b/maps/tether/submaps/om_ships/aro.dmm
index 65903eee224..5322661bb8c 100644
--- a/maps/tether/submaps/om_ships/aro.dmm
+++ b/maps/tether/submaps/om_ships/aro.dmm
@@ -2937,7 +2937,7 @@
dir = 1
},
/obj/structure/table/rack/shelf/steel,
-/obj/item/mecha_parts/mecha_equipment/omni_shield/fighter64,
+/obj/item/mecha_parts/mecha_equipment/omni_shield,
/turf/simulated/floor/tiled/techfloor,
/area/ship/aro/midshipshangars)
"fU" = (
diff --git a/maps/tether/submaps/om_ships/shelter_6.dm b/maps/tether/submaps/om_ships/shelter_6.dm
index d11afa04d34..f65d2491dd0 100644
--- a/maps/tether/submaps/om_ships/shelter_6.dm
+++ b/maps/tether/submaps/om_ships/shelter_6.dm
@@ -20,7 +20,7 @@
// The shuttle's 'shuttle' computer
/obj/machinery/computer/shuttle_control/explore/tabiranth
name = "short jump console"
- shuttle_tag = "XN-29 Prototype Shuttle"
+ shuttle_tag = "NDV Tabiranth"
req_one_access = list(access_cent_general)
// A shuttle lateloader landmark
diff --git a/maps/tether/submaps/om_ships/shelter_6.dmm b/maps/tether/submaps/om_ships/shelter_6.dmm
index f43e4e6724a..e8f951444f0 100644
--- a/maps/tether/submaps/om_ships/shelter_6.dmm
+++ b/maps/tether/submaps/om_ships/shelter_6.dmm
@@ -1450,6 +1450,8 @@
dir = 5
},
/obj/structure/closet/secure_closet/wall{
+ anchored = 1;
+ density = 0;
pixel_x = 32;
req_access = list(101)
},
diff --git a/maps/tether/submaps/space/pois/ship_med_crashed.dmm b/maps/tether/submaps/space/pois/ship_med_crashed.dmm
index 203f3b63e5f..b0ae668a84e 100644
--- a/maps/tether/submaps/space/pois/ship_med_crashed.dmm
+++ b/maps/tether/submaps/space/pois/ship_med_crashed.dmm
@@ -47,6 +47,9 @@
/area/tether_away/debrisfield/explored)
"l" = (
/obj/effect/decal/cleanable/dirt,
+/mob/living/bot/medbot{
+ name = "Dr. Crusty"
+ },
/turf/simulated/shuttle/plating/airless,
/area/tether_away/debrisfield/explored)
"m" = (
@@ -124,12 +127,6 @@
/obj/machinery/suit_cycler/medical,
/turf/simulated/shuttle/floor/airless,
/area/tether_away/debrisfield/explored)
-"B" = (
-/mob/living/bot/medbot{
- name = "Dr. Crusty"
- },
-/turf/simulated/shuttle/floor/airless,
-/area/tether_away/debrisfield/explored)
"C" = (
/obj/effect/decal/cleanable/dirt,
/obj/random/firstaid,
@@ -178,6 +175,10 @@
"M" = (
/turf/simulated/shuttle/wall/hard_corner,
/area/tether_away/debrisfield/explored)
+"Q" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/shuttle/wall,
+/area/tether_away/debrisfield/explored)
(1,1,1) = {"
a
@@ -496,7 +497,7 @@ c
h
l
C
-H
+Q
s
n
I
@@ -581,7 +582,7 @@ a
a
a
e
-B
+f
f
f
c
diff --git a/maps/tether/submaps/tether_misc.dmm b/maps/tether/submaps/tether_misc.dmm
index d8cd179f852..3eb493c3e50 100644
--- a/maps/tether/submaps/tether_misc.dmm
+++ b/maps/tether/submaps/tether_misc.dmm
@@ -729,20 +729,6 @@
},
/turf/simulated/floor/holofloor/carpet,
/area/holodeck/source_courtroom)
-"cd" = (
-/obj/effect/step_trigger/teleporter/random{
- affect_ghosts = 1;
- name = "escapeshuttle_leave";
- teleport_x = 25;
- teleport_x_offset = 245;
- teleport_y = 25;
- teleport_y_offset = 245;
- teleport_z = 4;
- teleport_z_offset = 4
- },
-/turf/space,
-/turf/space/transit/north,
-/area/space)
"ce" = (
/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b,
/turf/space/transit/south,
@@ -2205,6 +2191,20 @@
"Az" = (
/turf/unsimulated/beach/coastline,
/area/beach)
+"Bd" = (
+/obj/effect/step_trigger/teleporter/random{
+ affect_ghosts = 1;
+ name = "escapeshuttle_leave";
+ teleport_x = 25;
+ teleport_x_offset = 245;
+ teleport_y = 25;
+ teleport_y_offset = 245;
+ teleport_z = 4;
+ teleport_z_offset = 4
+ },
+/turf/space,
+/turf/space/transit/north,
+/area/space)
"Bw" = (
/turf/unsimulated/beach/water,
/area/beach)
@@ -5014,47 +5014,47 @@ Gq
Gq
Gq
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -5156,47 +5156,47 @@ Ax
JW
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -5298,47 +5298,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -5440,47 +5440,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -5582,47 +5582,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -5724,47 +5724,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Uw
+Ux
+Uw
+Ux
+Ux
+Ux
+Ux
+Ux
+Ux
+Uw
+Ux
+Ux
+Uw
+ae
+ae
+ae
+ae
+ae
+SX
+SY
+SX
+SY
+SY
+SY
+SY
+SY
+SY
+SX
+SY
+SY
+SX
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -5866,47 +5866,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Ux
+Uz
+Uw
+UG
+UK
+UM
+UQ
+US
+US
+Uw
+UH
+UW
+Ux
+ae
+ae
+ae
+ae
+ae
+SY
+SZ
+SX
+Tk
+Tp
+Tq
+Tu
+Ty
+Ty
+SX
+Tl
+TC
+SY
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6008,47 +6008,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Ux
+UA
+UF
+UH
+UA
+UN
+UA
+UA
+UH
+UF
+UH
+UX
+Ux
+ae
+ae
+ae
+ae
+ae
+SY
+Ta
+Td
+Tl
+Ta
+Tr
+Ta
+Ta
+Tl
+Td
+Tl
+TD
+SY
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6150,47 +6150,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Ux
+UC
+Uw
+UI
+UA
+UA
+UA
+UA
+UU
+Uw
+UH
+UY
+Ux
+ae
+ae
+ae
+ae
+ae
+SY
+Tb
+SX
+Tm
+Ta
+Ta
+Ta
+Ta
+TA
+SX
+Tl
+TE
+SY
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6292,47 +6292,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Ux
+UD
+Ux
+UJ
+UH
+UP
+UR
+UT
+UV
+Ux
+UH
+UZ
+Ux
+ae
+ae
+ae
+ae
+ae
+SY
+Tc
+SY
+To
+Tl
+Tt
+Tx
+Tz
+TB
+SY
+Tl
+TH
+SY
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6434,47 +6434,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+Uw
+Ux
+Uw
+Ux
+Ux
+Ux
+Ux
+Ux
+Ux
+Uw
+Ux
+Ux
+Uw
+ae
+ae
+ae
+ae
+ae
+SX
+SY
+SX
+SY
+SY
+SY
+SY
+SY
+SY
+SX
+SY
+SY
+SX
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6576,47 +6576,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -6718,47 +6718,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -6860,47 +6860,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -7002,47 +7002,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7144,47 +7144,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7286,47 +7286,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7428,47 +7428,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TK
+TM
+TK
+TM
+TM
+TM
+TM
+TM
+TM
+TK
+TM
+TM
+TK
+ae
+ae
+ae
+ae
+ae
+Sm
+Sn
+Sm
+Sn
+Sn
+Sn
+Sn
+Sn
+Sn
+Sm
+Sn
+Sn
+Sm
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7570,47 +7570,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TM
+TN
+TK
+TT
+TX
+Ua
+Ud
+Ug
+Ug
+TK
+TU
+Uk
+TM
+ae
+ae
+ae
+ae
+ae
+Sn
+So
+Sm
+Su
+SA
+SB
+SE
+SK
+SK
+Sm
+Sw
+SQ
+Sn
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7712,47 +7712,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TM
+TP
+TS
+TU
+TP
+Ub
+TP
+TP
+TU
+TS
+TU
+Ul
+TM
+ae
+ae
+ae
+ae
+ae
+Sn
+Sp
+Ss
+Sw
+Sp
+SC
+Sp
+Sp
+Sw
+Ss
+Sw
+SR
+Sn
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7854,47 +7854,47 @@ Az
Bw
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TM
+TQ
+TK
+TV
+TP
+TP
+TP
+TP
+Ui
+TK
+TU
+Um
+TM
+ae
+ae
+ae
+ae
+ae
+Sn
+Sq
+Sm
+Sx
+Sp
+Sp
+Sp
+Sp
+SO
+Sm
+Sw
+SS
+Sn
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -7996,47 +7996,47 @@ Ax
JW
JW
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TM
+TR
+TM
+TW
+TU
+Uc
+Uf
+Uh
+Uj
+TM
+TU
+Uo
+TM
+ae
+ae
+ae
+ae
+ae
+Sn
+Sr
+Sn
+Sz
+Sw
+SD
+SF
+SN
+SP
+Sn
+Sw
+ST
+Sn
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -8138,47 +8138,47 @@ Gq
Gq
Gq
Gq
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+TK
+TM
+TK
+TM
+TM
+TM
+TM
+TM
+TM
+TK
+TM
+TM
+TK
+ae
+ae
+ae
+ae
+ae
+Sm
+Sn
+Sm
+Sn
+Sn
+Sn
+Sn
+Sn
+Sn
+Sm
+Sn
+Sn
+Sm
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -8280,47 +8280,47 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -8422,47 +8422,47 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
Xl
@@ -8564,47 +8564,47 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -8706,47 +8706,47 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -8848,47 +8848,47 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -9305,30 +9305,30 @@ ap
ap
ap
ap
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-Jz
-cd
-cd
-cd
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
Xl
OY
@@ -9447,30 +9447,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
Xl
OY
@@ -9589,30 +9589,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
Xl
OY
@@ -9731,30 +9731,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
Xl
Xl
@@ -9842,19 +9842,6 @@ ap
ap
ap
ap
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
ap
ap
ap
@@ -9873,30 +9860,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -9984,19 +9984,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-xM
-Ru
-Ru
-Ru
-Ru
-xM
-Ru
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10015,30 +10002,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10126,19 +10126,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10157,30 +10144,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-Hf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10268,19 +10268,6 @@ ap
ap
ap
ap
-Vu
-YE
-Ru
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Ru
-Zi
-Vu
ap
ap
ap
@@ -10299,30 +10286,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10410,19 +10410,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Vu
-VW
-wj
-wj
-wj
-BK
-Vu
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10441,30 +10428,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10552,19 +10552,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Vu
-sl
-cj
-Dk
-Dk
-Dk
-yK
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10583,30 +10570,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10694,19 +10694,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Vu
-sl
-Lg
-tC
-tC
-tC
-ym
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10725,30 +10712,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10836,19 +10836,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Vu
-DF
-JZ
-JZ
-JZ
-qz
-Vu
-Ru
-Ru
-Vu
ap
ap
ap
@@ -10867,30 +10854,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -10978,19 +10978,6 @@ ap
ap
ap
ap
-Vu
-YE
-Ru
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Ru
-Zi
-Vu
ap
ap
ap
@@ -11009,30 +10996,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11120,19 +11120,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Ru
-Vu
ap
ap
ap
@@ -11151,30 +11138,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-JL
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11262,19 +11262,6 @@ ap
ap
ap
ap
-Vu
-Ru
-Ru
-MK
-Ru
-Ru
-Ru
-Ru
-MK
-Ru
-Ru
-Ru
-Vu
ap
ap
ap
@@ -11293,30 +11280,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11404,19 +11404,6 @@ ap
ap
ap
ap
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
ap
ap
ap
@@ -11435,30 +11422,43 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11577,30 +11577,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-JL
-JL
-JL
-JL
-JL
-JL
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11719,30 +11719,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -11861,30 +11861,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -12003,30 +12003,30 @@ ap
ap
ap
ap
-Jz
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-jf
-Gs
-Gs
-Gs
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -12145,30 +12145,30 @@ ap
ap
ap
ap
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
-cd
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
ap
ap
@@ -12429,29 +12429,29 @@ ap
ap
ap
ap
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
iO
@@ -12571,29 +12571,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -12713,29 +12713,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -12855,29 +12855,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -12997,29 +12997,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13139,29 +13139,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13281,29 +13281,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13423,29 +13423,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13565,29 +13565,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cf
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13707,29 +13707,29 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cg
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13802,44 +13802,6 @@ ap
ap
ap
ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -13849,29 +13811,67 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -13944,44 +13944,6 @@ ap
ap
ap
ap
-ae
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -13991,29 +13953,67 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ch
-cg
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -14086,44 +14086,6 @@ ap
ap
ap
ap
-ae
-Vu
-Ru
-wn
-Cy
-eS
-Vu
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14133,29 +14095,67 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -14228,44 +14228,6 @@ ap
ap
ap
ap
-ae
-Vu
-Vu
-Vu
-Cy
-gU
-Vu
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14275,29 +14237,67 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cg
-cf
-cf
-cf
-ce
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
ap
iO
El
@@ -14370,44 +14370,6 @@ ap
ap
ap
ap
-ae
-Vu
-Vu
-Vu
-Cy
-eS
-Vu
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14417,30 +14379,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cg
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Jz
+Bd
+Bd
+Bd
+Bd
iO
El
El
@@ -14512,44 +14512,6 @@ ap
ap
ap
ap
-ae
-Vu
-kn
-Ru
-Cy
-eS
-Vu
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14559,30 +14521,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -14654,44 +14654,6 @@ ap
ap
ap
ap
-ae
-Vu
-Vu
-Vu
-Vu
-Vu
-Vu
-ae
-ae
-ae
-ae
-af
-dZ
-dZ
-dZ
-dZ
-dZ
-Rh
-dZ
-dZ
-dZ
-dZ
-dZ
-dZ
-Rh
-dZ
-dZ
-dZ
-dZ
-dZ
-af
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14701,30 +14663,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -14796,44 +14796,6 @@ ap
ap
ap
ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ai
-Al
-Al
-XE
-Sl
-Al
-Al
-XE
-Al
-Al
-Al
-Al
-XE
-Al
-Al
-Sl
-XE
-Al
-Al
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14843,30 +14805,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -14938,44 +14938,6 @@ ap
ap
ap
ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ai
-ET
-ET
-OR
-Pe
-Pe
-Ri
-OR
-Pe
-Rs
-Rt
-Pe
-OR
-Ri
-RA
-RA
-OR
-ET
-ET
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -14985,30 +14947,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15080,44 +15080,6 @@ ap
ap
ap
ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-zK
-Fp
-OR
-Pg
-Rd
-Rg
-QW
-Rk
-Re
-Rg
-QX
-Rw
-Ry
-QW
-Rg
-RD
-Pg
-OR
-Fp
-zK
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -15127,30 +15089,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15222,44 +15222,6 @@ ap
ap
ap
ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ai
-ET
-Pe
-Qa
-Re
-Rg
-QW
-QX
-Rm
-Rg
-QX
-Re
-Rg
-QW
-QW
-QW
-RF
-Pe
-ET
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -15269,30 +15231,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+Hf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15364,44 +15364,6 @@ ap
ap
ap
ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ai
-ET
-Pe
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QX
-QX
-Rg
-Pe
-ET
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -15411,30 +15373,68 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+JL
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15496,47 +15496,47 @@ dG
eT
dG
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ai
-ET
-Pe
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QW
-QX
-QX
-RG
-Pe
-ET
-SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ae
ae
ae
@@ -15553,30 +15553,30 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
-ap
+Jz
+jf
+jf
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15638,47 +15638,47 @@ dG
dG
dG
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ai
-ET
-Pe
-QX
-Re
-Rg
-QW
-QX
-Re
-Rg
-QX
-Re
-Rg
-QW
-QW
-QW
-QW
-Pe
-ET
-SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ae
ae
ae
@@ -15695,30 +15695,30 @@ ap
ap
ap
ap
-ce
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-cf
-ce
-ap
+Jz
+jf
+jf
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
iO
El
El
@@ -15780,6 +15780,1616 @@ dG
eJ
dG
fZ
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(79,1,1) = {"
+as
+aM
+be
+bq
+an
+bS
+bS
+an
+cQ
+be
+aM
+dA
+dG
+dG
+dG
+ep
+dG
+dG
+ed
+dG
+dG
+fG
+fZ
+ae
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(80,1,1) = {"
+as
+aM
+bf
+bp
+an
+bS
+bS
+an
+cP
+bf
+aM
+dA
+dG
+dG
+dG
+dG
+dG
+dG
+dG
+fG
+dG
+dG
+fZ
+ae
+Vu
+Ru
+wn
+Cy
+eS
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(81,1,1) = {"
+as
+aN
+be
+ag
+bB
+bB
+bB
+bB
+at
+be
+aN
+dA
+dG
+ed
+dG
+dG
+dG
+dG
+eJ
+dG
+eT
+dG
+fZ
+ae
+Vu
+Vu
+Vu
+Cy
+gU
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+JL
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(82,1,1) = {"
+as
+aM
+bf
+bB
+bB
+ao
+aA
+bB
+bB
+bf
+aM
+dA
+dG
+dG
+dG
+dG
+dG
+dG
+dG
+dG
+dG
+dG
+fZ
+ae
+Vu
+Vu
+Vu
+Cy
+eS
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+af
+dZ
+dZ
+dZ
+dZ
+dZ
+Rh
+dZ
+dZ
+dZ
+dZ
+dZ
+dZ
+Rh
+dZ
+dZ
+dZ
+dZ
+dZ
+af
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(83,1,1) = {"
+as
+aN
+be
+bB
+ao
+ax
+aB
+aA
+bB
+bf
+aN
+dA
+dG
+dG
+ep
+dG
+eT
+dG
+dG
+dG
+eJ
+dG
+fZ
+ae
+Vu
+kn
+Ru
+Cy
+eS
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+Al
+Al
+XE
+Sl
+Al
+Al
+XE
+Al
+Al
+Al
+Al
+XE
+Al
+Al
+Sl
+XE
+Al
+Al
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(84,1,1) = {"
+as
+aM
+bf
+bB
+at
+bU
+bU
+ag
+bB
+be
+aM
+dA
+dG
+dG
+dG
+dG
+dG
+dG
+ed
+dG
+dG
+fG
+fZ
+ae
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+ET
+OR
+Pe
+Pe
+Ri
+OR
+Pe
+Rs
+Rt
+Pe
+OR
+Ri
+RA
+RA
+OR
+ET
+ET
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+JL
+JL
+JL
+JL
+JL
+JL
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+El
+jQ
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(85,1,1) = {"
+ar
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+ar
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+aL
+ar
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+zK
+Fp
+OR
+Pg
+Rd
+Rg
+QW
+Rk
+Re
+Rg
+QX
+Rw
+Ry
+QW
+Rg
+RD
+Pg
+OR
+Fp
+zK
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(86,1,1) = {"
+as
+aO
+bg
+bg
+bG
+bV
+bV
+bV
+bV
+bV
+dq
+dA
+dI
+dH
+dH
+eL
+eL
+eL
+eL
+eL
+eL
+eL
+fZ
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+Pe
+Qa
+Re
+Rg
+QW
+QX
+Rm
+Rg
+QX
+Re
+Rg
+QW
+QW
+QW
+RF
+Pe
+ET
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(87,1,1) = {"
+as
+aP
+bg
+bg
+bG
+bV
+bV
+bV
+bV
+bV
+bV
+dA
+dH
+dH
+dH
+eK
+eK
+eK
+eK
+eK
+eK
+eK
+fZ
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+Pe
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QX
+QX
+Rg
+Pe
+ET
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Jz
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+jf
+Gs
+Gs
+Gs
+Bd
+iO
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+Pi
+El
+El
+El
+El
+El
+El
+iO
+"}
+(88,1,1) = {"
+as
+aP
+bg
+bg
+bG
+bW
+ct
+ct
+ct
+dj
+bV
+dA
+dH
+dH
+dH
+eK
+eV
+fn
+fn
+fn
+fO
+eK
+fZ
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+Pe
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QW
+QX
+QX
+RG
+Pe
+ET
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+Bd
+iO
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(89,1,1) = {"
+as
+aP
+bg
+bg
+bG
+bX
+cu
+cu
+cu
+dk
+bV
+dA
+dH
+ee
+eq
+eK
+eW
+fo
+fo
+fo
+fP
+eK
+fZ
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+Pe
+QX
+Re
+Rg
+QW
+QX
+Re
+Rg
+QX
+Re
+Rg
+QW
+QW
+QW
+QW
+Pe
+ET
+SG
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ap
ap
ap
@@ -15790,6 +17400,100 @@ ap
ap
ap
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+iO
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+El
+Pi
+El
+El
+El
+El
+El
+El
+El
+iO
+"}
+(90,1,1) = {"
+as
+aP
+bg
+bg
+bG
+bX
+cu
+cu
+cu
+dk
+bV
+dA
+dH
+ef
+eq
+eK
+eW
+fo
+fo
+fo
+fP
+eK
+fZ
+ae
+ap
+ap
+ap
+ap
+ap
+ap
+ae
+ae
+ae
ae
ae
ae
@@ -15868,1710 +17572,6 @@ El
El
El
El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(79,1,1) = {"
-as
-aM
-be
-bq
-an
-bS
-bS
-an
-cQ
-be
-aM
-dA
-dG
-dG
-dG
-ep
-dG
-dG
-ed
-dG
-dG
-fG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ai
-ET
-ET
-OR
-Pe
-Pe
-Rj
-OR
-Pe
-Rt
-Rt
-Pe
-OR
-Rj
-RA
-RA
-OR
-ET
-ET
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-iO
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(80,1,1) = {"
-as
-aM
-bf
-bp
-an
-bS
-bS
-an
-cP
-bf
-aM
-dA
-dG
-dG
-dG
-dG
-dG
-dG
-dG
-fG
-dG
-dG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ai
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-Rc
-SG
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(81,1,1) = {"
-as
-aN
-be
-ag
-bB
-bB
-bB
-bB
-at
-be
-aN
-dA
-dG
-ed
-dG
-dG
-dG
-dG
-eJ
-dG
-eT
-dG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-Vg
-Vg
-Vl
-Vh
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Jx
-Zt
-aj
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(82,1,1) = {"
-as
-aM
-bf
-bB
-bB
-ao
-aA
-bB
-bB
-bf
-aM
-dA
-dG
-dG
-dG
-dG
-dG
-dG
-dG
-dG
-dG
-dG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-Nr
-Th
-JR
-Nq
-Nq
-Nq
-Nq
-Nq
-Nq
-Yx
-Nq
-Nq
-Nq
-Nq
-Yx
-Nq
-Nq
-Nq
-Nq
-Nq
-Nq
-dZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(83,1,1) = {"
-as
-aN
-be
-bB
-ao
-ax
-aB
-aA
-bB
-bf
-aN
-dA
-dG
-dG
-ep
-dG
-eT
-dG
-dG
-dG
-eJ
-dG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-SW
-Ti
-Rq
-Nq
-Nq
-Nq
-Nq
-Nq
-Nq
-wd
-dZ
-TY
-Vv
-dZ
-dZ
-Nq
-Nq
-Nq
-Nq
-Nq
-Nq
-dZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(84,1,1) = {"
-as
-aM
-bf
-bB
-at
-bU
-bU
-ag
-bB
-be
-aM
-dA
-dG
-dG
-dG
-dG
-dG
-dG
-ed
-dG
-dG
-fG
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-Tf
-Tj
-Rv
-QY
-Pf
-XH
-SH
-SH
-QY
-TI
-Rr
-SV
-SV
-Rr
-TI
-QY
-SH
-SH
-XH
-Pf
-QY
-dZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-El
-jQ
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(85,1,1) = {"
-ar
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-ar
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-aL
-ar
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-wy
-Vg
-Vg
-Vg
-Vg
-TI
-TI
-TI
-TI
-TI
-TI
-dZ
-Ru
-Ru
-Ru
-Ru
-dZ
-dZ
-dZ
-dZ
-dZ
-dZ
-dZ
-dZ
-VI
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-ML
-ML
-ML
-ML
-ML
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(86,1,1) = {"
-as
-aO
-bg
-bg
-bG
-bV
-bV
-bV
-bV
-bV
-dq
-dA
-dI
-dH
-dH
-eL
-eL
-eL
-eL
-eL
-eL
-eL
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-yA
-Ga
-xe
-wl
-TZ
-Vi
-Vi
-Vi
-VJ
-Vi
-VS
-Vu
-YE
-Ru
-Ru
-Wt
-WE
-Xs
-XC
-Zp
-VI
-Yr
-Zw
-YI
-VI
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(87,1,1) = {"
-as
-aP
-bg
-bg
-bG
-bV
-bV
-bV
-bV
-bV
-bV
-dA
-dH
-dH
-dH
-eK
-eK
-eK
-eK
-eK
-eK
-eK
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-rE
-Ga
-Iq
-wl
-Up
-Vj
-Vj
-Vj
-Vj
-Vj
-VU
-Vu
-Ru
-Ru
-Ru
-Wv
-WJ
-Xv
-XD
-XD
-VI
-Ys
-XD
-YJ
-VI
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-Pi
-El
-El
-El
-El
-El
-El
-iO
-"}
-(88,1,1) = {"
-as
-aP
-bg
-bg
-bG
-bW
-ct
-ct
-ct
-dj
-bV
-dA
-dH
-dH
-dH
-eK
-eV
-fn
-fn
-fn
-fO
-eK
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-HQ
-Ga
-Ga
-wl
-Up
-Vj
-Vj
-Vj
-Vj
-Vj
-VU
-Vu
-Ru
-Ru
-Ru
-Wv
-WK
-Xw
-XD
-XD
-VI
-Yu
-XD
-YJ
-VI
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(89,1,1) = {"
-as
-aP
-bg
-bg
-bG
-bX
-cu
-cu
-cu
-dk
-bV
-dA
-dH
-ee
-eq
-eK
-eW
-fo
-fo
-fo
-fP
-eK
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-pb
-Ga
-ME
-wl
-Uu
-Vj
-Vj
-Vm
-Vj
-Vj
-XU
-Vu
-Ru
-Ru
-Ru
-Wt
-WE
-Xx
-Zk
-XV
-Yl
-Zs
-Yy
-XD
-VI
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-El
-Pi
-El
-El
-El
-El
-El
-El
-El
-iO
-"}
-(90,1,1) = {"
-as
-aP
-bg
-bg
-bG
-bX
-cu
-cu
-cu
-dk
-bV
-dA
-dH
-ef
-eq
-eK
-eW
-fo
-fo
-fo
-fP
-eK
-fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-wy
-kr
-Ga
-Cw
-wl
-Up
-Vj
-Vj
-Vm
-Vj
-Vj
-VU
-Vu
-Ru
-Ru
-Zi
-VI
-VI
-VI
-VI
-VI
-VI
-VI
-VI
-Yl
-VI
-Xi
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
-ap
-iO
-El
-El
-El
-El
-El
-El
Pi
Pi
El
@@ -17626,10 +17626,7 @@ fo
fP
eK
fZ
-ap
-ap
-ap
-ap
+ae
ap
ap
ap
@@ -17642,33 +17639,36 @@ ae
ae
ae
ae
-wy
-Ct
-Ga
-kh
-wl
-Ur
-Vm
-Vj
-Vj
-Vj
-Vj
-VU
-Vu
-Ru
-Ru
-Ru
-VM
-VQ
-WN
-VZ
-VQ
-VQ
-WH
-ZD
-WW
-Xe
-Xi
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+ET
+ET
+OR
+Pe
+Pe
+Rj
+OR
+Pe
+Rt
+Rt
+Pe
+OR
+Rj
+RA
+RA
+OR
+ET
+ET
+SG
+ae
+ae
ae
ae
ae
@@ -17683,29 +17683,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -17768,49 +17768,49 @@ fo
fP
eK
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
ae
ae
ae
ae
ae
ae
-wy
-wy
-wy
-wy
-wl
-Up
-Vj
-Vj
-Vj
-Vj
-Vj
-VU
-TJ
-Ru
-Ru
-Ru
-WB
-VR
-Wb
-Wl
-Wz
-VQ
-WH
-WO
-WW
-Xf
-Xi
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ai
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+Rc
+SG
+ae
+ae
ae
ae
ae
@@ -17825,29 +17825,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -17910,16 +17910,47 @@ fo
fP
eK
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+ae
+ae
+ae
+ae
+ae
+Vg
+Vg
+Vg
+Vl
+Vh
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Jx
+Zt
+aj
ae
ae
ae
@@ -17927,37 +17958,6 @@ ae
ae
ae
ae
-ae
-ae
-ae
-wl
-Up
-Vj
-Vj
-Vj
-Vj
-Vj
-VU
-Vw
-Ru
-Ru
-Ru
-VK
-VR
-Wc
-Wm
-Wz
-VQ
-WH
-WP
-WW
-Xg
-Xi
-ae
-ae
-ae
-ae
-ae
ap
ap
ap
@@ -17967,29 +17967,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18052,49 +18052,49 @@ fH
fQ
eK
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Up
-Vj
-Vj
-Vj
-Vj
-Vj
-VU
Vu
-YE
Ru
Ru
-VL
-VQ
-Wd
-Wd
-VQ
-VQ
-WH
-WQ
-WW
-Xh
-Xi
+xM
+Ru
+Ru
+Ru
+Ru
+xM
+Ru
+Ru
+Ru
+Vu
+ae
+ae
+ae
+ae
+ae
+Vg
+Nr
+Th
+JR
+Nq
+Nq
+Nq
+Nq
+Nq
+Nq
+Yx
+Nq
+Nq
+Nq
+Nq
+Yx
+Nq
+Nq
+Nq
+Nq
+Nq
+Nq
+dZ
+ae
+ae
ae
ae
ae
@@ -18109,29 +18109,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18194,49 +18194,49 @@ eK
eK
eK
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Up
-Vj
-Vm
-Vj
-VN
-Vj
-VU
Vu
Ru
Ru
Ru
-WB
-VQ
-VQ
-VQ
-VQ
-VQ
-WH
-WR
-WW
-Zh
-Xi
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Vu
+ae
+ae
+ae
+ae
+ae
+Vg
+SW
+Ti
+Rq
+Nq
+Nq
+Nq
+Nq
+Nq
+Nq
+wd
+dZ
+TY
+Vv
+dZ
+dZ
+Nq
+Nq
+Nq
+Nq
+Nq
+Nq
+dZ
+ae
+ae
ae
ae
ae
@@ -18251,29 +18251,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18336,49 +18336,49 @@ aL
aL
aL
ar
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Uu
-Vj
-Vj
-Vj
-Vj
-Vj
-Yt
+Vu
+YE
+Ru
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
Vu
Ru
-Ru
-Ru
-WB
-VQ
-VZ
-VZ
-VQ
-VQ
-WH
-WV
-WW
-WW
-Xi
+Zi
+Vu
+ae
+ae
+ae
+ae
+ae
+Vg
+Tf
+Tj
+Rv
+QY
+Pf
+XH
+SH
+SH
+QY
+TI
+Rr
+SV
+SV
+Rr
+TI
+QY
+SH
+SH
+XH
+Pf
+QY
+dZ
+ae
+ae
ae
ae
ae
@@ -18393,29 +18393,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18478,49 +18478,49 @@ fz
fz
fS
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Up
-Vj
-Vj
-Vj
-Vm
-Vj
-VU
Vu
Ru
Ru
+Vu
+VW
+wj
+wj
+wj
+BK
+Vu
Ru
-WB
-VR
-We
-Wo
-Wz
-VQ
-VQ
-VQ
-ZE
-VM
-Xi
+Ru
+Vu
+ae
+ae
+ae
+wy
+wy
+Vg
+Vg
+Vg
+Vg
+TI
+TI
+TI
+TI
+TI
+TI
+dZ
+Ru
+Ru
+Ru
+Ru
+dZ
+dZ
+dZ
+dZ
+dZ
+dZ
+dZ
+dZ
+VI
+ae
ae
ae
ae
@@ -18535,29 +18535,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-zb
-qn
-pF
-qn
-tD
-ML
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18620,48 +18620,48 @@ ei
ei
fJ
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Us
-Vn
-Vj
-Vj
-Vm
-VO
-VP
Vu
Ru
Ru
-Zi
-WB
-VR
-Wk
-Wu
-Wz
-VQ
-VQ
-VQ
-WZ
-VM
+Vu
+sl
+cj
+Dk
+Dk
+Dk
+yK
+Ru
+Ru
+Vu
+ae
+ae
+ae
+wy
+yA
+Ga
+xe
+wl
+TZ
+Vi
+Vi
+Vi
+VJ
+Vi
+VS
+Vu
+YE
+Ru
+Ru
+Wt
+WE
+Xs
+XC
+Zp
+VI
+Yr
+Zw
+YI
+VI
ae
ae
ae
@@ -18677,29 +18677,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-ML
-zb
-zb
-tD
-tD
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cf
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18762,48 +18762,48 @@ fJ
fz
fS
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vu
+Ru
+Ru
+Vu
+sl
+Lg
+tC
+tC
+tC
+ym
+Ru
+Ru
+Vu
ae
ae
ae
+wy
+rE
+Ga
+Iq
wl
-Ut
-Us
-Vs
-VB
-Vs
-VP
-Ut
+Up
+Vj
+Vj
+Vj
+Vj
+Vj
+VU
Vu
Ru
Ru
Ru
-VK
-VQ
-Wd
-Wd
-VQ
-VZ
-VZ
-VQ
-Xa
-VM
+Wv
+WJ
+Xv
+XD
+XD
+VI
+Ys
+XD
+YJ
+VI
ae
ae
ae
@@ -18819,29 +18819,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cg
+cf
+cf
+cf
+ce
ap
iO
El
@@ -18904,48 +18904,48 @@ fJ
ei
fT
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vu
+Ru
+Ru
+Vu
+DF
+JZ
+JZ
+JZ
+qz
+Vu
+Ru
+Ru
+Vu
ae
ae
ae
+wy
+HQ
+Ga
+Ga
wl
-wl
-Vo
-Vo
-Vo
-Vo
-Vo
-wl
+Up
+Vj
+Vj
+Vj
+Vj
+Vj
+VU
Vu
Ru
Ru
Ru
-VL
-VQ
-VQ
-VQ
-VR
-WA
-WI
-Wz
-Xb
-VM
+Wv
+WK
+Xw
+XD
+XD
+VI
+Yu
+XD
+YJ
+VI
ae
ae
ae
@@ -18961,29 +18961,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+ce
ap
iO
iO
@@ -19046,48 +19046,48 @@ fJ
fA
fU
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vu
+YE
+Ru
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Ru
+Zi
+Vu
ae
ae
ae
+wy
+pb
+Ga
+ME
wl
-TZ
-Vi
-Vi
-Vi
-Vi
-Vi
-VX
+Uu
+Vj
+Vj
+Vm
+Vj
+Vj
+XU
Vu
Ru
Ru
Ru
-WB
-VQ
-VQ
-VQ
-VR
-WF
-WL
-Wz
-Xc
-VM
+Wt
+WE
+Xx
+Zk
+XV
+Yl
+Zs
+Yy
+XD
+VI
ae
ae
ae
@@ -19103,29 +19103,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ch
+cg
+cf
+cf
+cf
+ce
ap
ap
ap
@@ -19188,49 +19188,49 @@ ei
ei
fJ
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vu
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Ru
+Vu
ae
ae
ae
+wy
+kr
+Ga
+Cw
wl
-Va
-Vp
-Ut
-Ut
-Ut
-Ut
+Up
+Vj
+Vj
+Vm
+Vj
+Vj
VU
Vu
-YE
Ru
Ru
-VM
-VY
-ZC
-VQ
-VQ
-Wd
-Wd
-ZC
-Xd
-VM
-ae
+Zi
+VI
+VI
+VI
+VI
+VI
+VI
+VI
+VI
+Yl
+VI
+Xi
ae
ae
ae
@@ -19245,29 +19245,29 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+ce
ap
Jz
Jz
@@ -19330,53 +19330,49 @@ fA
fA
fU
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vu
+Ru
+Ru
+MK
+Ru
+Ru
+Ru
+Ru
+MK
+Ru
+Ru
+Ru
+Vu
ae
ae
ae
+wy
+Ct
+Ga
+kh
wl
-Up
-Vq
-Ut
-Vr
-Vr
-Ut
+Ur
+Vm
+Vj
+Vj
+Vj
+Vj
VU
Vu
Ru
Ru
Ru
VM
-VM
-VM
-VM
-VM
-VM
-VM
-VM
-VM
-VM
-VM
-ae
-ae
-ae
-ae
+VQ
+WN
+VZ
+VQ
+VQ
+WH
+ZD
+WW
+Xe
+Xi
ae
ae
ae
@@ -19387,29 +19383,33 @@ ap
ap
ap
ap
-oI
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-qn
-oI
+ap
+ap
+ap
+ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cg
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -19472,53 +19472,49 @@ bh
aG
aG
fZ
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-wl
-Uu
-Ut
-Vt
-Ut
-Ut
-Ut
-XU
Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+Vu
+ae
+ae
+ae
+wy
+wy
+wy
+wy
+wl
+Up
+Vj
+Vj
+Vj
+Vj
+Vj
+VU
+TJ
Ru
Ru
Ru
-Vd
-WS
-WS
-Zl
-XX
-Ym
-Vd
-YB
-YK
-YP
-Vd
-ae
-ae
-ae
-ae
+WB
+VR
+Wb
+Wl
+Wz
+VQ
+WH
+WO
+WW
+Xf
+Xi
ae
ae
ae
@@ -19529,29 +19525,33 @@ ap
ap
ap
ap
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
-oI
+ap
+ap
+ap
+ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cg
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -19636,31 +19636,27 @@ ae
ae
wl
Up
-Ut
-Ut
-Ut
-Ut
-VD
+Vj
+Vj
+Vj
+Vj
+Vj
VU
-Vu
+Vw
Ru
Ru
Ru
-WC
-WT
-WS
-XJ
-XZ
-WS
-Vd
-YC
-YL
-YP
-Vd
-ae
-ae
-ae
-ae
+VK
+VR
+Wc
+Wm
+Wz
+VQ
+WH
+WP
+WW
+Xg
+Xi
ae
ae
ae
@@ -19675,25 +19671,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -19778,31 +19778,27 @@ ae
ae
wl
Up
-Ut
-Vr
-Ut
-Ut
-Ut
-Wh
+Vj
+Vj
+Vj
+Vj
+Vj
+VU
Vu
+YE
Ru
Ru
-Zi
-Ve
-WS
-WS
-XK
-Ya
-WS
-Vd
-YD
-YM
-XN
-Vd
-ae
-ae
-ae
-ae
+VL
+VQ
+Wd
+Wd
+VQ
+VQ
+WH
+WQ
+WW
+Xh
+Xi
ae
ae
ae
@@ -19817,25 +19813,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -19920,31 +19920,27 @@ ae
ae
wl
Up
-Ut
-Ut
-Ut
-Ut
-Ut
+Vj
+Vm
+Vj
+VN
+Vj
VU
-TJ
+Vu
Ru
Ru
Ru
-Xk
-WS
-WS
-XM
-XZ
-WS
-Vd
-YC
-YN
-YQ
-Vd
-ae
-ae
-ae
-ae
+WB
+VQ
+VQ
+VQ
+VQ
+VQ
+WH
+WR
+WW
+Zh
+Xi
ae
ae
ae
@@ -19959,25 +19955,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20061,32 +20061,28 @@ ae
ae
ae
wl
-Up
-Vr
-Ut
-Ut
-Ut
-Ut
-VU
-Vw
+Uu
+Vj
+Vj
+Vj
+Vj
+Vj
+Yt
+Vu
Ru
Ru
Ru
-Xm
-WS
-WS
-XN
-Yb
-Zq
-Vd
-Zx
-XZ
-YT
-Vd
-ae
-ae
-ae
-ae
+WB
+VQ
+VZ
+VZ
+VQ
+VQ
+WH
+WV
+WW
+WW
+Xi
ae
ae
ae
@@ -20101,25 +20097,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20204,47 +20204,27 @@ ae
ae
wl
Up
-Ut
-Ut
-VD
-Ut
-Vr
-VV
+Vj
+Vj
+Vj
+Vm
+Vj
+VU
Vu
Ru
Ru
Ru
-Xn
-WS
-WS
-WS
-WS
-WS
-Vd
-XN
-WS
-YU
-Vd
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+WB
+VR
+We
+Wo
+Wz
+VQ
+VQ
+VQ
+ZE
+VM
+Xi
ae
ae
ae
@@ -20259,9 +20239,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20345,47 +20345,27 @@ ae
ae
ae
wl
-Up
-Ut
-Ut
-Ut
-Ut
-Ut
-VU
+Us
+Vn
+Vj
+Vj
+Vm
+VO
+VP
Vu
-YE
Ru
Ru
-WC
-WT
-WS
-WS
-WS
-WS
-Vd
-Vd
-Yw
-Vd
-Vd
-Vd
-Vd
-Vd
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Zi
+WB
+VR
+Wk
+Wu
+Wz
+VQ
+VQ
+VQ
+WZ
+VM
ae
ae
ae
@@ -20401,9 +20381,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20487,47 +20487,27 @@ ae
ae
ae
wl
-Uu
Ut
-Vr
+Us
+Vs
+VB
+Vs
+VP
Ut
-Ut
-Ut
-XU
Vu
Ru
Ru
Ru
-WC
-WT
-WS
-WS
-WS
-WS
-Vd
-Ym
-WS
-WS
-WS
-WS
-Zf
-Vd
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+VK
+VQ
+Wd
+Wd
+VQ
+VZ
+VZ
+VQ
+Xa
+VM
ae
ae
ae
@@ -20543,9 +20523,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20629,47 +20629,27 @@ ae
ae
ae
wl
-Up
-Ut
-Ut
-Ut
-Ut
-VD
-VU
+wl
+Vo
+Vo
+Vo
+Vo
+Vo
+wl
Vu
Ru
Ru
Ru
-WC
-WT
-WS
-WS
-WS
-WS
-Yv
-WS
-WS
-WS
-YY
-WS
-WS
-Vd
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+VL
+VQ
+VQ
+VQ
+VR
+WA
+WI
+Wz
+Xb
+VM
ae
ae
ae
@@ -20685,9 +20665,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20771,47 +20771,27 @@ ae
ae
ae
wl
-Us
-Vn
-Ut
-VE
-Ut
-VO
-VP
+TZ
+Vi
+Vi
+Vi
+Vi
+Vi
+VX
Vu
Ru
Ru
Ru
-Vd
-WS
-WS
-Zn
-WS
-WS
-WS
-WS
-WS
-WS
-YZ
-WS
-Zq
-Vd
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+WB
+VQ
+VQ
+VQ
+VR
+WF
+WL
+Wz
+Xc
+VM
ae
ae
ae
@@ -20827,9 +20807,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
+ce
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+cf
+ce
ap
Jz
jf
@@ -20913,56 +20913,33 @@ ae
ae
ae
wl
+Va
+Vp
Ut
-Us
-Vs
-VF
-Vs
-VP
Ut
+Ut
+Ut
+VU
Vu
+YE
Ru
Ru
-Zi
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
-YF
-WS
-WS
-WS
-WS
-WS
-Vd
+VM
+VY
+ZC
+VQ
+VQ
+Wd
+Wd
+ZC
+Xd
+VM
ae
ae
ae
ae
ae
ae
-TK
-TM
-TK
-TM
-TM
-TM
-TM
-TM
-TM
-TK
-TM
-TM
-TK
-ae
-ae
-ae
-ap
-ap
-ap
ap
ap
ap
@@ -20972,6 +20949,29 @@ ap
ap
ap
ap
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
+ce
ap
Jz
jf
@@ -21055,52 +21055,34 @@ ae
ae
ae
wl
-wl
-Vo
-Vo
-Vo
-Vo
-Vo
-wl
+Up
+Vq
+Ut
+Vr
+Vr
+Ut
+VU
Vu
Ru
Ru
Ru
-Vd
-WU
-Xy
-XP
-Yc
-Yc
-Vd
-Zy
-WS
-WS
-WS
-WS
-WS
-Vd
+VM
+VM
+VM
+VM
+VM
+VM
+VM
+VM
+VM
+VM
+VM
ae
ae
ae
ae
ae
ae
-TM
-TN
-TK
-TT
-TX
-Ua
-Ud
-Ug
-Ug
-TK
-TU
-Uk
-TM
-ae
-ae
ae
ap
ap
@@ -21115,6 +21097,24 @@ ap
ap
ap
ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
+ap
Jz
jf
jf
@@ -21196,31 +21196,28 @@ ae
ae
ae
ae
-Vk
-Vk
-Vk
-Vk
-Vk
-Vk
-Vk
-Vk
-Uv
+wl
+Uu
+Ut
+Vt
+Ut
+Ut
+Ut
+XU
+Vu
Ru
Ru
Ru
Vd
-Xj
-Xz
-XQ
-Yh
-Yc
+WS
+WS
+Zl
+XX
+Ym
Vd
-YH
-WS
-WS
-Zb
-WS
-WS
+YB
+YK
+YP
Vd
ae
ae
@@ -21228,21 +21225,6 @@ ae
ae
ae
ae
-TM
-TP
-TS
-TU
-TP
-Ub
-TP
-TP
-TU
-TS
-TU
-Ul
-TM
-ae
-ae
ae
ap
ap
@@ -21251,11 +21233,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
ap
Jz
jf
@@ -21338,31 +21338,28 @@ ae
ae
ae
ae
-Vk
-Vc
-Vz
-Vc
-Vc
-Vz
-Vc
-Wi
-YR
+wl
+Up
+Ut
+Ut
+Ut
+Ut
+VD
+VU
+Vu
Ru
Ru
Ru
+WC
+WT
+WS
+XJ
+XZ
+WS
Vd
-Zj
-XA
-XR
-Yj
-Zr
-Yg
-WS
-WS
-WS
-Zc
-WS
-WS
+YC
+YL
+YP
Vd
ae
ae
@@ -21370,21 +21367,6 @@ ae
ae
ae
ae
-TM
-TQ
-TK
-TV
-TP
-TP
-TP
-TP
-Ui
-TK
-TU
-Um
-TM
-ae
-ae
ae
ap
ap
@@ -21393,11 +21375,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -21480,31 +21480,28 @@ ae
ae
ae
ae
-Vk
-Vc
-Vc
-Vc
-Vc
-Vc
-Vc
-Vk
-UE
-Ru
+wl
+Up
+Ut
+Vr
+Ut
+Ut
+Ut
+Wh
+Vu
Ru
Ru
+Zi
+Ve
+WS
+WS
+XK
+Ya
+WS
Vd
-Xr
-XB
-YW
-YW
-YW
-Yw
-WS
-WS
-WS
-WS
-WS
-Zq
+YD
+YM
+XN
Vd
ae
ae
@@ -21512,21 +21509,6 @@ ae
ae
ae
ae
-TM
-TR
-TM
-TW
-TU
-Uc
-Uf
-Uh
-Uj
-TM
-TU
-Uo
-TM
-ae
-ae
ae
ap
ap
@@ -21535,11 +21517,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -21622,31 +21622,28 @@ ae
ae
ae
ae
-Vk
-Vf
-Vk
-Vy
-Vk
-Vy
-Vg
-Vg
-Vg
-Wq
-Ws
-Ws
-Vg
-Vg
-Vg
+wl
+Up
+Ut
+Ut
+Ut
+Ut
+Ut
+VU
+TJ
+Ru
+Ru
+Ru
+Xk
WS
WS
+XM
+XZ
WS
Vd
-WS
-WS
-WS
-WS
-WS
-WS
+YC
+YN
+YQ
Vd
ae
ae
@@ -21654,21 +21651,6 @@ ae
ae
ae
ae
-TK
-TM
-TK
-TM
-TM
-TM
-TM
-TM
-TM
-TK
-TM
-TM
-TK
-ae
-ae
ae
ap
ap
@@ -21677,11 +21659,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -21764,31 +21764,28 @@ ae
ae
ae
ae
-Vk
-Vb
-Vk
-Xp
-Vk
-Xp
-Vg
-Wj
-Wp
-Ti
-YG
-Ti
-Wp
-Wj
-Vg
-XS
-Yk
-Yo
+wl
+Up
+Vr
+Ut
+Ut
+Ut
+Ut
+VU
+Vw
+Ru
+Ru
+Ru
+Xm
+WS
+WS
+XN
+Yb
+Zq
Vd
-Zz
-YO
-YV
-Zd
-Ze
-Zg
+Zx
+XZ
+YT
Vd
ae
ae
@@ -21797,26 +21794,6 @@ ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
ap
ap
ap
@@ -21824,6 +21801,29 @@ ap
ap
ap
ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -21906,31 +21906,28 @@ ae
ae
ae
ae
-Vk
-Vk
-Vk
-Vk
-Vk
-Vk
-Vg
-Vg
-Vg
-Wp
-Vg
-Wp
-Vg
-Vg
-Vg
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
-Vd
+wl
+Up
+Ut
+Ut
+VD
+Ut
+Vr
+VV
+Vu
+Ru
+Ru
+Ru
+Xn
+WS
+WS
+WS
+WS
+WS
Vd
+XN
+WS
+YU
Vd
ae
ae
@@ -21939,26 +21936,6 @@ ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ap
-ap
-ap
-ap
-ap
ap
ap
ap
@@ -21966,6 +21943,29 @@ ap
ap
ap
ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+ML
+ML
+ML
+ML
+ML
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22048,50 +22048,32 @@ ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-Wj
-Vg
-Wj
-Vg
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+Up
+Ut
+Ut
+Ut
+Ut
+Ut
+VU
+Vu
+YE
+Ru
+Ru
+WC
+WT
+WS
+WS
+WS
+WS
+Vd
+Vd
+Yw
+Vd
+Vd
+Vd
+Vd
+Vd
ae
ae
ae
@@ -22103,11 +22085,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22182,58 +22182,40 @@ hz
hK
hP
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-Vg
-Vg
-Vg
-Vg
-Vg
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+Uu
+Ut
+Vr
+Ut
+Ut
+Ut
+XU
+Vu
+Ru
+Ru
+Ru
+WC
+WT
+WS
+WS
+WS
+WS
+Vd
+Ym
+WS
+WS
+WS
+WS
+Zf
+Vd
ae
ae
ae
@@ -22245,11 +22227,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22324,58 +22324,40 @@ hA
hL
hQ
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+Up
+Ut
+Ut
+Ut
+Ut
+VD
+VU
+Vu
+Ru
+Ru
+Ru
+WC
+WT
+WS
+WS
+WS
+WS
+Yv
+WS
+WS
+WS
+YY
+WS
+WS
+Vd
ae
ae
ae
@@ -22387,11 +22369,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22466,58 +22466,40 @@ hx
hx
hx
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+Us
+Vn
+Ut
+VE
+Ut
+VO
+VP
+Vu
+Ru
+Ru
+Ru
+Vd
+WS
+WS
+Zn
+WS
+WS
+WS
+WS
+WS
+WS
+YZ
+WS
+Zq
+Vd
ae
ae
ae
@@ -22529,11 +22511,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22608,58 +22608,40 @@ aL
aL
aL
ar
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+Ut
+Us
+Vs
+VF
+Vs
+VP
+Ut
+Vu
+Ru
+Ru
+Zi
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+YF
+WS
+WS
+WS
+WS
+WS
+Vd
ae
ae
ae
@@ -22671,11 +22653,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22750,58 +22750,40 @@ hB
hD
hD
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+wl
+wl
+Vo
+Vo
+Vo
+Vo
+Vo
+wl
+Vu
+Ru
+Ru
+Ru
+Vd
+WU
+Xy
+XP
+Yc
+Yc
+Vd
+Zy
+WS
+WS
+WS
+WS
+WS
+Vd
ae
ae
ae
@@ -22813,11 +22795,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -22892,58 +22892,40 @@ hC
hC
hC
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vk
+Vk
+Vk
+Vk
+Vk
+Vk
+Vk
+Vk
+Uv
+Ru
+Ru
+Ru
+Vd
+Xj
+Xz
+XQ
+Yh
+Yc
+Vd
+YH
+WS
+WS
+Zb
+WS
+WS
+Vd
ae
ae
ae
@@ -22955,11 +22937,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23034,58 +23034,40 @@ hD
hD
hD
fZ
+ap
+ap
ae
ae
ae
ae
ae
ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+Vk
+Vc
+Vz
+Vc
+Vc
+Vz
+Vc
+Wi
+YR
+Ru
+Ru
+Ru
+Vd
+Zj
+XA
+XR
+Yj
+Zr
+Yg
+WS
+WS
+WS
+Zc
+WS
+WS
+Vd
ae
ae
ae
@@ -23097,11 +23079,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23176,59 +23176,41 @@ hD
hD
hD
fZ
-ae
-ae
-ae
-Uw
-Ux
-Uw
-Ux
-Ux
-Ux
-Ux
-Ux
-Ux
-Uw
-Ux
-Ux
-Uw
-ae
-ae
-ae
-ae
-ae
-Sm
-Sn
-Sm
-Sn
-Sn
-Sn
-Sn
-Sn
-Sn
-Sm
-Sn
-Sn
-Sm
+ap
+ap
ae
ae
ae
ae
ae
ae
-SX
-SY
-SX
-SY
-SY
-SY
-SY
-SY
-SY
-SX
-SY
-SY
-SX
+Vk
+Vc
+Vc
+Vc
+Vc
+Vc
+Vc
+Vk
+UE
+Ru
+Ru
+Ru
+Vd
+Xr
+XB
+YW
+YW
+YW
+Yw
+WS
+WS
+WS
+WS
+WS
+Zq
+Vd
+ae
ae
ae
ae
@@ -23239,11 +23221,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23318,59 +23318,41 @@ hE
hE
hE
fZ
-ae
-ae
-ae
-Ux
-Uz
-Uw
-UG
-UK
-UM
-UQ
-US
-US
-Uw
-UH
-UW
-Ux
-ae
-ae
-ae
-ae
-ae
-Sn
-So
-Sm
-Su
-SA
-SB
-SE
-SK
-SK
-Sm
-Sw
-SQ
-Sn
+ap
+ap
ae
ae
ae
ae
ae
ae
-SY
-SZ
-SX
-Tk
-Tp
-Tq
-Tu
-Ty
-Ty
-SX
-Tl
-TC
-SY
+Vk
+Vf
+Vk
+Vy
+Vk
+Vy
+Vg
+Vg
+Vg
+Wq
+Ws
+Ws
+Vg
+Vg
+Vg
+WS
+WS
+WS
+Vd
+WS
+WS
+WS
+WS
+WS
+WS
+Vd
+ae
ae
ae
ae
@@ -23381,11 +23363,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23460,59 +23460,41 @@ hD
hD
hR
fZ
-ae
-ae
-ae
-Ux
-UA
-UF
-UH
-UA
-UN
-UA
-UA
-UH
-UF
-UH
-UX
-Ux
-ae
-ae
-ae
-ae
-ae
-Sn
-Sp
-Ss
-Sw
-Sp
-SC
-Sp
-Sp
-Sw
-Ss
-Sw
-SR
-Sn
+ap
+ap
ae
ae
ae
ae
ae
ae
-SY
-Ta
-Td
-Tl
-Ta
-Tr
-Ta
-Ta
-Tl
-Td
-Tl
-TD
-SY
+Vk
+Vb
+Vk
+Xp
+Vk
+Xp
+Vg
+Wj
+Wp
+Ti
+YG
+Ti
+Wp
+Wj
+Vg
+XS
+Yk
+Yo
+Vd
+Zz
+YO
+YV
+Zd
+Ze
+Zg
+Vd
+ae
ae
ae
ae
@@ -23523,11 +23505,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23602,59 +23602,41 @@ aL
aL
aL
ar
-ae
-ae
-ae
-Ux
-UC
-Uw
-UI
-UA
-UA
-UA
-UA
-UU
-Uw
-UH
-UY
-Ux
-ae
-ae
-ae
-ae
-ae
-Sn
-Sq
-Sm
-Sx
-Sp
-Sp
-Sp
-Sp
-SO
-Sm
-Sw
-SS
-Sn
+ap
+ap
ae
ae
ae
ae
ae
ae
-SY
-Tb
-SX
-Tm
-Ta
-Ta
-Ta
-Ta
-TA
-SX
-Tl
-TE
-SY
+Vk
+Vk
+Vk
+Vk
+Vk
+Vk
+Vg
+Vg
+Vg
+Wp
+Vg
+Wp
+Vg
+Vg
+Vg
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+Vd
+ae
ae
ae
ae
@@ -23665,11 +23647,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+zb
+qn
+pF
+qn
+tD
+ML
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23744,59 +23744,41 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-Ux
-UD
-Ux
-UJ
-UH
-UP
-UR
-UT
-UV
-Ux
-UH
-UZ
-Ux
-ae
-ae
-ae
-ae
-ae
-Sn
-Sr
-Sn
-Sz
-Sw
-SD
-SF
-SN
-SP
-Sn
-Sw
-ST
-Sn
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+Vg
+Wj
+Vg
+Wj
+Vg
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ae
ae
ae
ae
ae
ae
-SY
-Tc
-SY
-To
-Tl
-Tt
-Tx
-Tz
-TB
-SY
-Tl
-TH
-SY
ae
ae
ae
@@ -23807,11 +23789,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+ML
+zb
+zb
+tD
+tD
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -23886,59 +23886,41 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-Uw
-Ux
-Uw
-Ux
-Ux
-Ux
-Ux
-Ux
-Ux
-Uw
-Ux
-Ux
-Uw
-ae
-ae
-ae
-ae
-ae
-Sm
-Sn
-Sm
-Sn
-Sn
-Sn
-Sn
-Sn
-Sn
-Sm
-Sn
-Sn
-Sm
+ap
+ap
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+Vg
+Vg
+Vg
+Vg
+Vg
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ae
ae
ae
ae
ae
ae
-SX
-SY
-SX
-SY
-SY
-SY
-SY
-SY
-SY
-SX
-SY
-SY
-SX
ae
ae
ae
@@ -23949,11 +23931,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -24028,26 +24028,8 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ap
+ap
ae
ae
ae
@@ -24091,11 +24073,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -24170,26 +24170,8 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ap
+ap
ae
ae
ae
@@ -24233,11 +24215,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -24312,26 +24312,8 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ap
+ap
ae
ae
ae
@@ -24375,11 +24357,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -24454,26 +24454,8 @@ hF
hF
hF
fZ
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ap
+ap
ae
ae
ae
@@ -24517,11 +24499,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+qn
+oI
ap
Jz
jf
@@ -24596,26 +24596,8 @@ bb
bb
bb
ar
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+ap
+ap
ae
ae
ae
@@ -24659,11 +24641,29 @@ ap
ap
ap
ap
-ap
-ap
-ap
-ap
-ap
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
+oI
ap
Jz
Jz
diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm
index f9bfc7dd653..ba1c1625cef 100644
--- a/maps/tether/tether-01-surface1.dmm
+++ b/maps/tether/tether-01-surface1.dmm
@@ -4270,9 +4270,6 @@
/turf/simulated/floor/tiled,
/area/hallway/lower/first_west)
"ahH" = (
-/obj/machinery/chemical_analyzer{
- dir = 4
- },
/obj/effect/floor_decal/borderfloor{
dir = 8
},
diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm
index e2d00d1157e..85e01af8050 100644
--- a/maps/tether/tether-02-surface2.dmm
+++ b/maps/tether/tether-02-surface2.dmm
@@ -243,7 +243,7 @@
/obj/machinery/alarm{
pixel_y = 22
},
-/turf/simulated/floor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aaC" = (
/obj/machinery/oxygen_pump/anesthetic,
@@ -416,7 +416,7 @@
icon_state = "1-2"
},
/obj/structure/catwalk,
-/turf/simulated/floor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aaQ" = (
/obj/effect/floor_decal/borderfloorwhite{
@@ -844,7 +844,7 @@
/obj/structure/cable{
icon_state = "0-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"abH" = (
/obj/effect/decal/cleanable/dirt,
@@ -996,7 +996,7 @@
/area/maintenance/lower/north)
"acc" = (
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"acd" = (
/obj/machinery/computer/prisoner{
@@ -1164,7 +1164,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"act" = (
/obj/effect/decal/cleanable/dirt,
@@ -1210,16 +1210,16 @@
"acx" = (
/obj/structure/catwalk,
/obj/random/junk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"acy" = (
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"acz" = (
/obj/structure/catwalk,
/obj/machinery/light/small,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"acA" = (
/obj/machinery/door/airlock/maintenance/common,
@@ -1261,7 +1261,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"acH" = (
/obj/effect/decal/cleanable/dirt,
@@ -1335,7 +1335,7 @@
/obj/machinery/status_display{
pixel_y = 30
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"acT" = (
/obj/machinery/camera/network/medbay,
@@ -1390,7 +1390,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"ada" = (
/obj/structure/catwalk,
@@ -1403,7 +1403,7 @@
/obj/machinery/atmospherics/pipe/manifold/visible/supply{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adb" = (
/obj/effect/decal/cleanable/dirt,
@@ -1472,7 +1472,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adg" = (
/obj/structure/catwalk,
@@ -1488,7 +1488,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 10
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adh" = (
/obj/structure/catwalk,
@@ -1501,7 +1501,7 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adi" = (
/obj/structure/catwalk,
@@ -1580,7 +1580,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adr" = (
/obj/structure/railing{
@@ -1607,7 +1607,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adu" = (
/turf/simulated/wall,
@@ -1697,7 +1697,7 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adF" = (
/obj/structure/catwalk,
@@ -1715,7 +1715,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adG" = (
/obj/structure/railing{
@@ -1730,7 +1730,7 @@
dir = 4;
icon_state = "pipe-c"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adI" = (
/obj/structure/catwalk,
@@ -1743,14 +1743,14 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adJ" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adK" = (
/obj/structure/catwalk,
@@ -1760,14 +1760,14 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"adL" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"adM" = (
/obj/structure/catwalk,
@@ -1775,7 +1775,7 @@
dir = 4
},
/obj/random/junk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"adN" = (
/obj/structure/catwalk,
@@ -1788,7 +1788,7 @@
/obj/random/maintenance/clean,
/obj/random/maintenance/cargo,
/obj/random/drinkbottle,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"adO" = (
/obj/structure/catwalk,
@@ -1832,19 +1832,19 @@
/obj/structure/catwalk,
/obj/effect/floor_decal/rust,
/obj/random/junk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adV" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/rust,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adW" = (
/obj/structure/catwalk,
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adX" = (
/obj/structure/catwalk,
@@ -1862,7 +1862,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"adY" = (
/turf/simulated/wall,
@@ -1878,7 +1878,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 5
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aea" = (
/obj/structure/catwalk,
@@ -1891,7 +1891,7 @@
/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{
dir = 1
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aeb" = (
/obj/structure/catwalk,
@@ -1905,7 +1905,7 @@
dir = 4
},
/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aec" = (
/obj/structure/catwalk,
@@ -1918,7 +1918,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aed" = (
/obj/structure/catwalk,
@@ -1931,16 +1931,16 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 10
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aee" = (
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aef" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aeg" = (
/obj/structure/disposalpipe/segment{
@@ -1991,7 +1991,7 @@
dir = 4;
icon_state = "pipe-c"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aek" = (
/obj/structure/catwalk,
@@ -1999,14 +1999,14 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"ael" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aem" = (
/obj/structure/catwalk,
@@ -2014,7 +2014,7 @@
dir = 2;
icon_state = "pipe-c"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aen" = (
/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{
@@ -2051,12 +2051,12 @@
/obj/structure/catwalk,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aes" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aet" = (
/obj/structure/railing{
@@ -2092,7 +2092,7 @@
"aew" = (
/obj/effect/floor_decal/rust,
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aex" = (
/obj/structure/catwalk,
@@ -2102,12 +2102,12 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aey" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/rust,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aez" = (
/obj/structure/railing{
@@ -2244,7 +2244,7 @@
dir = 1
},
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aeQ" = (
/obj/structure/catwalk,
@@ -2256,14 +2256,14 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aeR" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/techfloor/orange{
dir = 1
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"aeS" = (
/obj/structure/railing{
@@ -2649,10 +2649,6 @@
},
/turf/simulated/floor/tiled/techfloor,
/area/maintenance/lower/bar)
-"afw" = (
-/obj/structure/catwalk,
-/turf/simulated/open,
-/area/maintenance/lower/bar)
"afx" = (
/obj/structure/catwalk,
/obj/structure/cable{
@@ -2660,7 +2656,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/open,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"afy" = (
/obj/structure/railing{
@@ -2785,7 +2781,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/structure/disposalpipe/down,
-/turf/simulated/open,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"afO" = (
/obj/structure/railing{
@@ -2961,7 +2957,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/structure/disposalpipe/segment,
-/turf/simulated/open,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"agd" = (
/obj/effect/floor_decal/techfloor{
@@ -3056,7 +3052,7 @@
"ago" = (
/obj/effect/floor_decal/techfloor/orange,
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"agp" = (
/obj/structure/catwalk,
@@ -3067,12 +3063,12 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"agq" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/techfloor/orange,
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"agr" = (
/obj/structure/railing{
@@ -3156,17 +3152,7 @@
/obj/structure/catwalk,
/obj/structure/ladder/up,
/obj/effect/floor_decal/industrial/outline/yellow,
-/turf/simulated/floor/tiled/techmaint,
-/area/maintenance/lower/bar)
-"agD" = (
-/obj/structure/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"agE" = (
/obj/structure/railing{
@@ -3312,10 +3298,6 @@
/obj/structure/catwalk,
/turf/simulated/floor/tiled/techfloor/grid,
/area/maintenance/lower/bar)
-"agX" = (
-/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techmaint,
-/area/maintenance/lower/bar)
"agY" = (
/obj/structure/sign/department/chapel,
/turf/simulated/wall,
@@ -3394,15 +3376,6 @@
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/storage)
-"ahj" = (
-/obj/structure/catwalk,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/lower/bar)
"ahk" = (
/obj/structure/catwalk,
/obj/structure/disposalpipe/segment{
@@ -3410,7 +3383,7 @@
icon_state = "pipe-c"
},
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"ahl" = (
/obj/structure/catwalk,
@@ -3424,7 +3397,7 @@
/obj/random/maintenance/clean,
/obj/random/maintenance/clean,
/obj/random/tool,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"ahm" = (
/obj/effect/floor_decal/rust,
@@ -5718,7 +5691,7 @@
dir = 8;
icon_state = "pipe-c"
},
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"alM" = (
/obj/effect/floor_decal/industrial/warning{
@@ -5953,7 +5926,7 @@
"amc" = (
/obj/structure/catwalk,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techmaint,
+/turf/simulated/floor/plating,
/area/maintenance/lower/bar)
"amd" = (
/obj/machinery/door/firedoor/glass,
@@ -10706,14 +10679,14 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"auQ" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/corner_techfloor_grid{
dir = 5
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"auR" = (
/obj/structure/railing{
@@ -10943,7 +10916,7 @@
/obj/machinery/light/small{
dir = 1
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"avj" = (
/obj/machinery/light_switch{
@@ -11015,11 +10988,7 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/lower/south)
-"avp" = (
-/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"avq" = (
/obj/structure/disposalpipe/segment,
@@ -11446,7 +11415,7 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"avZ" = (
/obj/structure/railing{
@@ -11533,7 +11502,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"awg" = (
/obj/effect/decal/cleanable/dirt,
@@ -11550,7 +11519,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"awh" = (
/obj/effect/decal/cleanable/dirt,
@@ -11566,7 +11535,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"awi" = (
/obj/machinery/door/firedoor/glass,
@@ -11911,12 +11880,12 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"awO" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/rust,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"awP" = (
/obj/structure/railing{
@@ -11943,7 +11912,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"awR" = (
/obj/effect/decal/cleanable/dirt,
@@ -12387,11 +12356,6 @@
"axB" = (
/turf/simulated/wall,
/area/janitor)
-"axC" = (
-/obj/structure/catwalk,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/lower/south)
"axD" = (
/obj/structure/railing{
dir = 8
@@ -12445,7 +12409,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"axJ" = (
/obj/effect/decal/cleanable/dirt,
@@ -12892,7 +12856,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply{
dir = 6
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"ayp" = (
/obj/structure/catwalk,
@@ -12903,7 +12867,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"ayq" = (
/obj/structure/catwalk,
@@ -12919,7 +12883,7 @@
d2 = 2;
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"ayr" = (
/obj/structure/railing{
@@ -13265,7 +13229,7 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"ayY" = (
/obj/structure/catwalk,
@@ -13275,7 +13239,7 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"ayZ" = (
/obj/structure/catwalk,
@@ -13286,14 +13250,14 @@
icon_state = "4-8";
pixel_x = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aza" = (
/obj/structure/catwalk,
/obj/structure/cable{
icon_state = "1-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"azb" = (
/obj/effect/floor_decal/techfloor/corner{
@@ -14049,7 +14013,7 @@
icon_state = "1-2";
pixel_y = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"azR" = (
/obj/structure/railing{
@@ -15699,7 +15663,7 @@
},
/obj/random/junk,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aCQ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15710,7 +15674,7 @@
},
/obj/structure/catwalk,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aCR" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15723,7 +15687,7 @@
/obj/effect/floor_decal/techfloor,
/obj/effect/floor_decal/rust,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aCS" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15735,7 +15699,7 @@
/obj/structure/catwalk,
/obj/effect/floor_decal/techfloor,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aCT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15756,17 +15720,7 @@
},
/obj/structure/catwalk,
/obj/effect/floor_decal/techfloor,
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/asmaint2)
-"aCV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aCW" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15969,7 +15923,7 @@
dir = 4
},
/obj/machinery/door/airlock/maintenance/common,
-/turf/simulated/floor/tiled,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aDo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -15984,7 +15938,7 @@
icon_state = "4-8"
},
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aDp" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
@@ -16003,7 +15957,7 @@
/obj/effect/floor_decal/techfloor{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"aDq" = (
/obj/structure/railing{
@@ -16208,7 +16162,7 @@
pixel_x = 0;
pixel_y = 26
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aDR" = (
/obj/machinery/door/airlock/maintenance/common,
@@ -16345,11 +16299,11 @@
pixel_y = 0
},
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aEh" = (
/obj/random/trash_pile,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aEi" = (
/obj/machinery/door/firedoor/glass,
@@ -16568,7 +16522,7 @@
pixel_y = 0
},
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aEL" = (
/obj/structure/cable/green{
@@ -16771,7 +16725,7 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aFk" = (
/obj/structure/catwalk,
@@ -16786,7 +16740,7 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aFl" = (
/obj/effect/floor_decal/rust,
@@ -17023,14 +16977,14 @@
"aFQ" = (
/obj/structure/catwalk,
/obj/effect/decal/cleanable/cobweb,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aFR" = (
/obj/structure/catwalk,
/obj/machinery/alarm{
pixel_y = 22
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aFS" = (
/obj/effect/floor_decal/rust,
@@ -17071,32 +17025,23 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
-"aFY" = (
-/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/lower/atmos)
"aFZ" = (
/obj/effect/floor_decal/techfloor,
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
-/area/maintenance/lower/atmos)
-"aGa" = (
-/obj/structure/catwalk,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
"aGb" = (
/obj/effect/floor_decal/techfloor,
/obj/structure/catwalk,
/obj/effect/floor_decal/rust,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
"aGc" = (
/obj/effect/floor_decal/techfloor,
/obj/structure/catwalk,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
"aGd" = (
/obj/effect/floor_decal/techfloor{
@@ -17104,7 +17049,7 @@
},
/obj/structure/catwalk,
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
"aGe" = (
/obj/structure/railing{
@@ -17212,7 +17157,7 @@
/obj/structure/catwalk,
/obj/random/junk,
/obj/effect/floor_decal/rust,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/atmos)
"aGr" = (
/obj/effect/floor_decal/techfloor{
@@ -17234,7 +17179,7 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGt" = (
/obj/structure/railing{
@@ -17279,7 +17224,7 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGx" = (
/obj/machinery/light/small{
@@ -17324,7 +17269,7 @@
/obj/structure/railing{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGC" = (
/obj/machinery/atmospherics/pipe/simple/visible/supply{
@@ -17337,7 +17282,7 @@
dir = 1
},
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGD" = (
/obj/structure/railing,
@@ -17353,7 +17298,7 @@
/obj/structure/railing{
dir = 8
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGE" = (
/obj/structure/railing,
@@ -17366,7 +17311,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGF" = (
/obj/structure/railing,
@@ -17382,7 +17327,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGG" = (
/obj/structure/railing,
@@ -17401,7 +17346,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply{
dir = 4
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGH" = (
/obj/structure/railing,
@@ -17417,7 +17362,7 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGI" = (
/obj/structure/railing,
@@ -17436,7 +17381,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGJ" = (
/obj/structure/railing{
@@ -17457,7 +17402,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGK" = (
/obj/structure/catwalk,
@@ -17475,7 +17420,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGL" = (
/obj/structure/catwalk,
@@ -17490,7 +17435,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGM" = (
/obj/structure/catwalk,
@@ -17506,7 +17451,7 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGN" = (
/obj/machinery/door/morgue{
@@ -17555,7 +17500,7 @@
d2 = 4;
icon_state = "1-4"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGR" = (
/obj/structure/catwalk,
@@ -17570,7 +17515,7 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aGS" = (
/obj/machinery/light_switch{
@@ -17662,14 +17607,14 @@
/obj/structure/catwalk,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aHb" = (
/obj/structure/catwalk,
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aHc" = (
/turf/simulated/wall/r_wall,
@@ -17760,7 +17705,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aHo" = (
/obj/structure/sign/department/telecoms,
@@ -17966,7 +17911,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/effect/floor_decal/rust,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aHL" = (
/obj/structure/cable{
@@ -18126,7 +18071,7 @@
mat_efficiency = 0.9;
name = "Legitimate Prosthetics Fabricator";
res_max_amount = 150000;
- speed = 0.2
+ speed = 0.2;
req_access = list()
},
/turf/simulated/floor/plating,
@@ -18174,7 +18119,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/random/junk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aIm" = (
/obj/machinery/power/breakerbox/activated{
@@ -18419,7 +18364,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/supply,
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aIM" = (
/turf/simulated/wall,
@@ -18636,7 +18581,7 @@
/obj/random/maintenance/clean,
/obj/random/maintenance/clean,
/obj/random/maintenance/clean,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aJj" = (
/obj/structure/sign/department/telecoms,
@@ -18919,7 +18864,7 @@
"aJM" = (
/obj/structure/catwalk,
/obj/effect/floor_decal/techfloor/corner,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aJN" = (
/obj/structure/catwalk,
@@ -18932,7 +18877,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
dir = 5
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aJO" = (
/obj/machinery/door/airlock/highsecurity{
@@ -19442,7 +19387,7 @@
/obj/effect/floor_decal/techfloor{
dir = 10
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aKE" = (
/obj/structure/railing{
@@ -19451,7 +19396,7 @@
/obj/effect/floor_decal/techfloor{
dir = 6
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aKF" = (
/obj/structure/sign/securearea,
@@ -21754,7 +21699,7 @@
dir = 8;
pixel_y = 0
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"aOV" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -23368,7 +23313,7 @@
/obj/structure/sign/warning/high_voltage{
pixel_y = 32
},
-/turf/simulated/floor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRn" = (
/obj/structure/catwalk,
@@ -23380,7 +23325,7 @@
d2 = 4;
icon_state = "2-4"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRo" = (
/obj/structure/cable/green{
@@ -23410,7 +23355,7 @@
icon_state = "4-8"
},
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRq" = (
/obj/machinery/light/small,
@@ -23420,7 +23365,7 @@
icon_state = "4-8"
},
/obj/structure/catwalk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRr" = (
/obj/structure/cable/green{
@@ -23890,7 +23835,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRX" = (
/obj/structure/cable{
@@ -23902,7 +23847,7 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aRY" = (
/obj/structure/railing{
@@ -24590,9 +24535,9 @@
/area/tether/surfacebase/medical/lowerhall)
"aTd" = (
/obj/structure/catwalk,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/tiled/techfloor,
+/obj/machinery/atmospherics/pipe/simple/visible/supply,
+/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aTe" = (
/obj/structure/catwalk,
@@ -24600,16 +24545,16 @@
icon_state = "bulb1";
dir = 1
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aTf" = (
/obj/structure/catwalk,
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/obj/machinery/atmospherics/pipe/manifold/visible/supply,
+/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aTg" = (
/obj/structure/catwalk,
@@ -24619,7 +24564,7 @@
/obj/machinery/alarm{
pixel_y = 22
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/mining)
"aTh" = (
/obj/effect/floor_decal/rust,
@@ -26264,7 +26209,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aVu" = (
/obj/machinery/power/sensor{
@@ -26350,7 +26295,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aVB" = (
/obj/structure/catwalk,
@@ -26366,7 +26311,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/north)
"aVC" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -28918,7 +28863,7 @@
/obj/structure/extinguisher_cabinet{
pixel_y = 30
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"baa" = (
/obj/structure/catwalk,
@@ -28937,7 +28882,7 @@
/obj/machinery/alarm{
pixel_y = 22
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bac" = (
/obj/structure/catwalk,
@@ -28956,7 +28901,7 @@
/obj/machinery/status_display{
pixel_y = 30
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bad" = (
/obj/structure/catwalk,
@@ -28972,7 +28917,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bae" = (
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
@@ -29010,7 +28955,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bag" = (
/obj/item/device/radio/intercom{
@@ -29054,7 +28999,7 @@
},
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,
/obj/machinery/atmospherics/pipe/simple/visible/supply,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"baj" = (
/obj/effect/floor_decal/corner_techfloor_grid{
@@ -29084,7 +29029,7 @@
/obj/random/maintenance/clean,
/obj/random/maintenance/clean,
/obj/random/maintenance/cargo,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bam" = (
/obj/effect/floor_decal/corner_techfloor_grid{
@@ -29097,7 +29042,7 @@
"ban" = (
/obj/structure/catwalk,
/obj/random/junk,
-/turf/simulated/floor/tiled/techfloor,
+/turf/simulated/floor/plating,
/area/maintenance/lower/south)
"bao" = (
/obj/machinery/door/airlock/maintenance/common,
@@ -29399,6 +29344,20 @@
/obj/random/cutout,
/turf/simulated/floor/tiled/techfloor,
/area/maintenance/lower/north)
+"fYA" = (
+/obj/structure/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/supply{
+ dir = 4;
+ pixel_y = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/lower/mining)
"kaa" = (
/obj/random/cutout,
/turf/simulated/floor,
@@ -38010,7 +37969,7 @@ axK
axK
axK
aCv
-aCV
+aCT
aBV
aDH
aDS
@@ -40009,7 +39968,7 @@ aES
aFb
azl
aEn
-aFY
+aEp
aEQ
aEQ
aGX
@@ -40435,7 +40394,7 @@ aES
aFb
azl
aFK
-aGa
+aEQ
aGo
aDS
boO
@@ -40719,7 +40678,7 @@ aES
aFb
azl
aFM
-aGa
+aEQ
aGq
aDS
aGY
@@ -40861,7 +40820,7 @@ aES
aFb
azl
aFM
-aGa
+aEQ
aFZ
aGj
aEo
@@ -41003,7 +40962,7 @@ aES
aFb
azl
aFN
-aGa
+aEQ
aGr
aDS
aGZ
@@ -41290,12 +41249,12 @@ aFO
aGc
aDS
aGB
-avp
-avp
-avp
-avp
-avp
-avp
+aDN
+aDN
+aDN
+aDN
+aDN
+aDN
aJM
aKD
arZ
@@ -41574,7 +41533,7 @@ aDS
aDS
aDS
aGD
-avp
+aDN
arZ
arZ
arZ
@@ -41716,7 +41675,7 @@ aac
aac
arZ
aGE
-avp
+aDN
arZ
aac
aac
@@ -41858,7 +41817,7 @@ aac
aac
arZ
aGE
-avp
+aDN
arZ
aac
aac
@@ -42000,7 +41959,7 @@ aac
aac
arZ
aGF
-avp
+aDN
arZ
aac
aac
@@ -42142,7 +42101,7 @@ aac
aac
arZ
aGG
-avp
+aDN
aHo
aHr
aHr
@@ -42426,7 +42385,7 @@ aac
aac
arZ
aGI
-avp
+aDN
aHq
aHM
aIn
@@ -42503,7 +42462,7 @@ aSR
aSr
aSr
acy
-adf
+fYA
adr
aaG
aaG
@@ -42568,7 +42527,7 @@ aac
aac
arZ
aGJ
-avp
+aDN
aHr
aHN
aIo
@@ -42710,7 +42669,7 @@ aac
aac
arZ
aGK
-avp
+aDN
aHr
aHV
aIp
@@ -43133,7 +43092,7 @@ arZ
arZ
arZ
aFQ
-avp
+aDN
aGs
aGM
arZ
@@ -43274,7 +43233,7 @@ aDM
aDM
aDN
aEs
-avp
+aDN
aGe
aGt
aZC
@@ -43558,7 +43517,7 @@ arZ
arZ
arZ
arZ
-avp
+aDN
aGf
aGu
aGO
@@ -43700,7 +43659,7 @@ aac
aac
aac
arZ
-avp
+aDN
aGg
aGv
aGP
@@ -43842,8 +43801,8 @@ aac
aac
aac
arZ
-avp
-avp
+aDN
+aDN
aGw
aGQ
arZ
@@ -44099,10 +44058,10 @@ aYd
avi
arZ
aFR
-avp
-avp
-axC
-axC
+aDN
+aDN
+aDM
+aDM
arZ
avk
avW
@@ -44240,16 +44199,16 @@ aRa
aYd
bac
arZ
-avp
+aDN
ban
-avp
-avp
-axC
+aDN
+aDN
+aDM
arZ
avl
avW
avW
-axC
+aDM
ayo
ayX
aOT
@@ -44383,9 +44342,9 @@ aYd
bad
arZ
bal
-avp
-avp
-avp
+aDN
+aDN
+aDN
arZ
arZ
avm
@@ -44394,19 +44353,19 @@ awM
axD
ayp
ayY
-avp
-avp
+aDN
+aDN
aug
-avp
+aDN
arZ
arZ
arZ
arZ
aDQ
aEh
-axC
+aDM
aEK
-avp
+aDN
aFk
azQ
azQ
@@ -44497,9 +44456,9 @@ adL
aec
aew
aeP
-afw
-afw
-afw
+aee
+aee
+aee
ago
agC
adu
@@ -44643,10 +44602,10 @@ afx
afN
agc
agp
-agD
-agD
+agc
+agc
alL
-ahj
+afx
ahA
ahS
aic
@@ -44781,12 +44740,12 @@ adL
aee
aey
aeR
-afw
-afw
-afw
+aee
+aee
+aee
agq
-agX
-agX
+aee
+aee
amc
ahk
ahB
@@ -44806,20 +44765,20 @@ aZG
aro
aro
aYd
-avp
-avp
-avp
-avp
-avp
-avp
+aDN
+aDN
+aDN
+aDN
+aDN
+aDN
aug
auQ
-avp
-avp
+aDN
+aDN
awO
-avp
-avp
-avp
+aDN
+aDN
+aDN
azT
aAJ
arZ
diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm
index 938995c9b24..a6148c79379 100644
--- a/maps/tether/tether-03-surface3.dmm
+++ b/maps/tether/tether-03-surface3.dmm
@@ -23111,7 +23111,7 @@
/obj/machinery/door/airlock/research{
name = "Xenobiology Equipment Storage";
req_access = list();
- req_one_access = list(47,55)
+ req_one_access = list(55)
},
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -25270,7 +25270,7 @@
/obj/machinery/door/airlock/research{
name = "Xenobiology Office";
req_access = list();
- req_one_access = list(47,55)
+ req_one_access = list(55)
},
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -25641,7 +25641,7 @@
/obj/machinery/door/airlock/research{
name = "Xenobiology Office";
req_access = list();
- req_one_access = list(47,55)
+ req_one_access = list(55)
},
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled/steel,
@@ -25872,7 +25872,7 @@
/obj/machinery/door/airlock/research{
name = "Xenobiology Autopsy Room";
req_access = list();
- req_one_access = list(47,55)
+ req_one_access = list(55)
},
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -26070,7 +26070,7 @@
/obj/machinery/door/airlock/research{
name = "Xenobiology Autopsy Room";
req_access = list();
- req_one_access = list(47,55)
+ req_one_access = list(55)
},
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled/steel,
diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm
index be5e661e85f..82e8d15d441 100644
--- a/maps/tether/tether-06-station2.dmm
+++ b/maps/tether/tether-06-station2.dmm
@@ -19644,7 +19644,7 @@
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 5
},
-/obj/machinery/mineral/equipment_vendor/survey,
+/obj/machinery/chemical_analyzer,
/turf/simulated/floor/tiled,
/area/tether/exploration/crew)
"Ei" = (
diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm
index d08d9a8871e..8235e79065e 100644
--- a/maps/tether/tether-07-station3.dmm
+++ b/maps/tether/tether-07-station3.dmm
@@ -204,11 +204,7 @@
/turf/simulated/floor/tiled/dark,
/area/security/range)
"aav" = (
-/obj/machinery/door/firedoor/glass,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/structure/cable/green{
@@ -216,16 +212,15 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/structure/disposalpipe/segment{
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/machinery/door/airlock/command{
- id_tag = "HoSdoor";
- name = "Head of Security";
- req_access = list(58)
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
},
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/obj/machinery/door/airlock/glass_security,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"aaw" = (
/obj/effect/floor_decal/borderfloor{
dir = 1;
@@ -1891,9 +1886,13 @@
/turf/simulated/floor/tiled,
/area/security/hallwayaux)
"acZ" = (
-/obj/structure/filingcabinet,
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/red/border,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"ada" = (
/obj/structure/bed/chair/office/dark{
dir = 1
@@ -3244,13 +3243,6 @@
/area/security/hallway)
"aff" = (
/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/structure/cable/green{
@@ -3258,8 +3250,27 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"afg" = (
/obj/structure/cable/cyan{
d1 = 1;
@@ -3410,10 +3421,6 @@
/obj/structure/cable/green,
/turf/simulated/floor/wood,
/area/crew_quarters/heads/hos)
-"afs" = (
-/obj/structure/flora/pottedplant/stoutbush,
-/turf/simulated/floor/tiled,
-/area/security/hallway)
"aft" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/red/border,
@@ -7785,23 +7792,13 @@
/turf/simulated/floor,
/area/crew_quarters/heads/hos)
"ama" = (
-/obj/machinery/door/firedoor/glass,
-/obj/structure/grille,
-/obj/structure/window/reinforced/polarized/full{
- id = "hos_office"
- },
-/turf/simulated/floor,
-/area/security/breakroom)
+/obj/machinery/door/airlock/glass_security,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"amb" = (
/obj/structure/grille,
-/obj/structure/cable/green{
- d2 = 4;
- icon_state = "0-4"
- },
/obj/machinery/door/firedoor/glass,
-/obj/structure/window/reinforced/polarized/full{
- id = "hos_office"
- },
+/obj/structure/window/reinforced/full,
/turf/simulated/floor,
/area/security/forensics)
"amc" = (
@@ -8169,32 +8166,6 @@
/obj/structure/closet/wardrobe/red,
/turf/simulated/floor/tiled/dark,
/area/security/security_lockerroom)
-"amE" = (
-/obj/structure/grille,
-/obj/structure/cable/green,
-/obj/structure/cable/green{
- icon_state = "0-8"
- },
-/obj/machinery/door/firedoor/glass,
-/obj/structure/cable/green{
- icon_state = "0-4"
- },
-/obj/structure/window/reinforced/polarized/full{
- id = "hos_office"
- },
-/turf/simulated/floor,
-/area/security/forensics)
-"amF" = (
-/obj/structure/grille,
-/obj/structure/cable/green{
- icon_state = "0-8"
- },
-/obj/machinery/door/firedoor/glass,
-/obj/structure/window/reinforced/polarized/full{
- id = "hos_office"
- },
-/turf/simulated/floor,
-/area/security/forensics)
"amG" = (
/obj/structure/window/reinforced{
dir = 4
@@ -8271,14 +8242,6 @@
},
/turf/simulated/floor,
/area/lawoffice)
-"amK" = (
-/obj/effect/floor_decal/borderfloor,
-/obj/effect/floor_decal/corner/red/border,
-/obj/effect/floor_decal/borderfloor/corner2,
-/obj/effect/floor_decal/corner/red/bordercorner2,
-/obj/machinery/light,
-/turf/simulated/floor/tiled,
-/area/security/hallway)
"amL" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/red/border,
@@ -9102,13 +9065,9 @@
/turf/simulated/floor/tiled/dark,
/area/lawoffice)
"aoa" = (
-/obj/item/device/radio/intercom{
- dir = 4;
- pixel_x = 24
- },
-/obj/machinery/light{
- dir = 4;
- icon_state = "tube1"
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/heads/hos)
@@ -9676,24 +9635,35 @@
/turf/simulated/floor/wood,
/area/crew_quarters/heads/hos)
"apa" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/cable/green{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"apb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -9709,6 +9679,25 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 1
+ },
/turf/simulated/floor/tiled,
/area/security/hallway)
"apc" = (
@@ -10114,13 +10103,6 @@
},
/turf/simulated/floor/tiled/white,
/area/security/forensics)
-"apC" = (
-/obj/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
"apD" = (
/obj/effect/floor_decal/borderfloor{
dir = 1;
@@ -28277,13 +28259,13 @@
/turf/simulated/floor/tiled,
/area/quartermaster/storage)
"aSz" = (
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
},
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/red/border,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"aSA" = (
/obj/machinery/door/airlock/maintenance/cargo{
name = "Belter Shuttle Access";
@@ -28813,6 +28795,11 @@
dir = 1
},
/obj/machinery/mineral/equipment_vendor,
+/obj/machinery/alarm{
+ dir = 4;
+ pixel_x = -22;
+ pixel_y = 0
+ },
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/refinery)
"aTC" = (
@@ -29165,19 +29152,26 @@
/turf/simulated/floor/tiled,
/area/shuttle/excursion/general)
"aUn" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
+/obj/structure/disposalpipe/segment{
+ dir = 1;
+ icon_state = "pipe-c"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+/obj/structure/cable/green{
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
},
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hos)
+/turf/simulated/floor/tiled,
+/area/security/hallway)
"aUo" = (
/obj/structure/cable/green{
d1 = 4;
@@ -29752,9 +29746,12 @@
/turf/simulated/floor/tiled,
/area/shuttle/excursion/general)
"aVx" = (
-/obj/machinery/camera/network/cargo,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 0;
+ pixel_y = -32
+ },
/turf/simulated/floor/tiled,
-/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
+/area/quartermaster/belterdock/gear)
"aVy" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -30029,13 +30026,14 @@
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/refinery)
"aWf" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/obj/structure/extinguisher_cabinet{
- pixel_x = -28;
+/obj/structure/closet/emcloset,
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -24;
pixel_y = 0
},
/turf/simulated/floor/tiled,
-/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
+/area/quartermaster/belterdock/refinery)
"aWg" = (
/turf/simulated/floor/tiled,
/area/shuttle/excursion/general)
@@ -30124,6 +30122,7 @@
/turf/simulated/wall/rshull,
/area/shuttle/excursion/cargo)
"aWt" = (
+/obj/machinery/mineral/equipment_vendor/survey,
/turf/simulated/floor/tiled/techfloor/grid,
/area/shuttle/excursion/cargo)
"aWu" = (
@@ -31290,11 +31289,7 @@
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/refinery)
"aYJ" = (
-/obj/machinery/alarm{
- dir = 4;
- pixel_x = -22;
- pixel_y = 0
- },
+/obj/machinery/recharge_station,
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/refinery)
"aYK" = (
@@ -31449,14 +31444,9 @@
pixel_x = -28;
pixel_y = 0
},
-/obj/machinery/firealarm{
- dir = 1;
- pixel_x = 0;
- pixel_y = -25
- },
-/obj/structure/closet/emcloset,
+/obj/machinery/recharge_station,
/turf/simulated/floor/tiled,
-/area/quartermaster/belterdock/refinery)
+/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
"aZa" = (
/obj/machinery/door/airlock/hatch{
req_one_access = newlist()
@@ -31779,9 +31769,6 @@
/obj/effect/map_helper/airlock/sensor/ext_sensor,
/turf/simulated/floor/tiled/techfloor/grid,
/area/shuttle/excursion/cargo)
-"aZF" = (
-/turf/simulated/mineral/vacuum,
-/area/crew_quarters/heads/hos)
"aZG" = (
/obj/machinery/computer/shuttle_control/explore/excursion{
dir = 1;
@@ -31958,14 +31945,8 @@
/turf/simulated/wall/r_wall,
/area/security/security_lockerroom)
"aZZ" = (
-/obj/effect/floor_decal/industrial/warning,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- icon_state = "intact-scrubbers";
- dir = 5
- },
+/obj/machinery/camera/network/cargo,
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
"baa" = (
@@ -32025,14 +32006,15 @@
"bah" = (
/obj/effect/floor_decal/industrial/warning,
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 2
- },
/obj/structure/cable/green{
d1 = 1;
d2 = 4;
icon_state = "1-4"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ icon_state = "intact-scrubbers";
+ dir = 5
+ },
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
"bai" = (
@@ -32072,12 +32054,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
/obj/structure/cable/green{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 2
+ },
/turf/simulated/floor/tiled,
/area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar)
"bao" = (
@@ -32331,16 +32313,863 @@
/turf/simulated/floor/tiled/asteroid_steel/airless,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/mining_outpost/shuttle)
+"boY" = (
+/obj/machinery/door/airlock/glass_external,
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux,
+/obj/effect/map_helper/airlock/door/int_door,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/general)
+"bpl" = (
+/obj/structure/cable/green{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"bvH" = (
+/obj/effect/floor_decal/techfloor{
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"bDn" = (
+/obj/structure/cable/green{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
+ dir = 1
+ },
+/obj/machinery/embedded_controller/radio/airlock/docking_port{
+ dir = 4;
+ frequency = 1380;
+ id_tag = "securiship_docker";
+ pixel_x = -28
+ },
+/obj/effect/map_helper/airlock/atmos/pump_out_internal,
+/obj/machinery/airlock_sensor{
+ pixel_y = 28
+ },
+/obj/effect/map_helper/airlock/sensor/chamber_sensor,
+/obj/effect/shuttle_landmark{
+ base_area = /area/space;
+ base_turf = /turf/space;
+ docking_controller = "securiship_bay";
+ landmark_tag = "tether_securiship_dock";
+ name = "Securiship Dock"
+ },
+/obj/effect/overmap/visitable/ship/landable/securiship,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/general)
+"cwr" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/table/rack/shelf,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"cNP" = (
+/obj/machinery/computer/ship/helm{
+ req_one_access = list(67,58)
+ },
+/obj/effect/floor_decal/techfloor{
+ dir = 9
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"deE" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 24
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"doX" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/bed/chair/bay/chair/padded/beige{
+ icon_state = "bay_chair_preview";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"dSk" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 1
+ },
+/obj/machinery/camera/network/security,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled,
+/area/security/hallway)
+"ebj" = (
+/obj/machinery/door/airlock/glass_external,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/map_helper/airlock/door/simple,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
+"exP" = (
+/obj/structure/cable/green{
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"ePT" = (
+/obj/machinery/power/smes/buildable/point_of_interest,
+/obj/structure/cable/cyan{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"eZd" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "securiship blast";
+ name = "Shuttle Blast Doors";
+ opacity = 0
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/securiship/general)
+"eZt" = (
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/structure/table/rack/shelf,
+/obj/machinery/alarm{
+ breach_detection = 0;
+ dir = 8;
+ icon_state = "alarm0";
+ pixel_x = 25;
+ rcon_setting = 3;
+ report_danger_level = 0
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"fxI" = (
+/obj/item/device/radio/intercom{
+ dir = 4;
+ pixel_x = 24
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1"
+ },
+/obj/structure/filingcabinet,
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"fGQ" = (
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/bed/chair/bay/chair,
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"gjM" = (
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux,
+/obj/effect/map_helper/airlock/atmos/chamber_pump,
+/obj/machinery/light/small{
+ dir = 8;
+ pixel_x = 0
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/general)
+"gkR" = (
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
+ icon_state = "intact-fuel";
+ dir = 6
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"gxX" = (
+/obj/structure/cable/cyan{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/structure/cable/cyan{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ alarms_hidden = 1;
+ dir = 1;
+ name = "north bump";
+ pixel_x = 0;
+ pixel_y = 28
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"gBp" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/bed/chair/bay/chair{
+ icon_state = "bay_chair_preview";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"gJa" = (
+/obj/machinery/door/airlock/multi_tile/metal/mait,
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/engines)
+"gSE" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
+ icon_state = "intact-fuel";
+ dir = 10
+ },
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
"gUi" = (
/obj/effect/decal/cleanable/dirt,
/obj/random/cutout,
/turf/simulated/floor,
/area/maintenance/station/ai)
+"hoF" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{
+ icon_state = "map-fuel";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"hyn" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
+ icon_state = "intact-fuel";
+ dir = 6
+ },
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
+"hEY" = (
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"ifk" = (
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/red/border,
+/obj/machinery/light,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
+"isz" = (
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/general)
+"iUO" = (
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"jjJ" = (
+/obj/machinery/power/terminal{
+ icon_state = "term";
+ dir = 1
+ },
+/obj/structure/cable/green{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/structure/table/standard,
+/obj/item/weapon/tank/phoron,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"jnQ" = (
+/obj/structure/cable/green{
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"jrx" = (
+/obj/structure/cable/green{
+ icon_state = "4-8"
+ },
+/obj/structure/fuel_port{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/monofloor{
+ dir = 1
+ },
+/area/shuttle/securiship/engines)
+"jxg" = (
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/airlock/command{
+ id_tag = "HoSdoor";
+ name = "Head of Security";
+ req_access = list(58)
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"jHa" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"klB" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
+ icon_state = "intact-fuel";
+ dir = 5
+ },
+/obj/machinery/alarm{
+ dir = 1;
+ icon_state = "alarm0";
+ pixel_y = -22
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"kqS" = (
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux{
+ icon_state = "intact-aux";
+ dir = 9
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"kAs" = (
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"lmZ" = (
+/obj/machinery/door/airlock/glass_external,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/map_helper/airlock/door/ext_door,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/general)
+"lFr" = (
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/engines)
+"lMN" = (
+/obj/structure/grille,
+/obj/structure/cable/green,
+/obj/structure/cable/green{
+ icon_state = "0-8"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/green{
+ icon_state = "0-4"
+ },
+/obj/structure/window/reinforced/polarized/full{
+ id = "hos_office"
+ },
+/turf/simulated/floor,
+/area/crew_quarters/heads/hos)
+"mxs" = (
+/obj/effect/floor_decal/industrial/warning/full,
+/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
+ dir = 8
+ },
+/obj/effect/map_helper/airlock/atmos/pump_out_external,
+/turf/simulated/floor/airless,
+/area/shuttle/securiship/general)
+"mLa" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled,
+/area/security/hallway)
+"nig" = (
+/obj/effect/floor_decal/techfloor,
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"nin" = (
+/obj/structure/bed/chair/bay/chair{
+ icon_state = "bay_chair_preview";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"nqE" = (
+/obj/machinery/computer/ship/sensors{
+ icon_state = "computer";
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"ntp" = (
+/obj/machinery/computer/ship/engines{
+ icon_state = "computer";
+ dir = 4
+ },
+/obj/effect/floor_decal/techfloor{
+ dir = 9
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"nym" = (
+/obj/machinery/computer/shuttle_control/explore/securiship{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"okJ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
+ icon_state = "intact-fuel";
+ dir = 8
+ },
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
+"oEa" = (
+/obj/structure/bed/chair/bay/chair/padded/beige{
+ icon_state = "bay_chair_preview";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"oGF" = (
+/obj/machinery/door/airlock/glass_external,
+/obj/effect/map_helper/airlock/door/simple,
+/turf/simulated/floor/tiled,
+/area/security/hallway)
+"oHo" = (
+/obj/effect/floor_decal/techfloor{
+ dir = 10
+ },
+/obj/structure/cable/cyan{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ cell_type = /obj/item/weapon/cell/super;
+ dir = 8;
+ name = "west bump";
+ pixel_x = -28
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"oJa" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/aux{
+ icon_state = "intact-aux";
+ dir = 6
+ },
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/general)
+"plY" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{
+ icon_state = "map-fuel";
+ dir = 1
+ },
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
+"pYS" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "securiship blast";
+ name = "Shuttle Blast Doors";
+ opacity = 0
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/securiship/general)
+"qwY" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/bed/chair/bay/chair/padded/beige,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"qDa" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/atmospherics/portables_connector/aux,
+/obj/machinery/portable_atmospherics/canister/air,
+/obj/effect/floor_decal/industrial/outline/grey,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"rfZ" = (
+/obj/machinery/door/airlock/glass_external,
+/obj/effect/map_helper/airlock/door/ext_door,
+/obj/machinery/airlock_sensor/airlock_exterior/shuttle{
+ dir = 4;
+ pixel_x = 0;
+ pixel_y = -28
+ },
+/obj/effect/map_helper/airlock/sensor/ext_sensor,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/general)
+"rgV" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
+ },
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"rhI" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"rlz" = (
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hos)
+"rBj" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 4;
+ icon_state = "pdoor0";
+ id = "securiship blast";
+ name = "Shuttle Blast Doors";
+ opacity = 0
+ },
+/turf/simulated/floor/plating,
+/area/shuttle/securiship/cockpit)
+"rFu" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/aux{
+ icon_state = "intact-aux";
+ dir = 8
+ },
+/obj/machinery/airlock_sensor{
+ pixel_y = 28
+ },
+/obj/effect/map_helper/airlock/sensor/int_sensor,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"rIa" = (
+/obj/structure/cable/green{
+ icon_state = "1-2";
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"rUg" = (
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux,
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"sio" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"sYy" = (
+/obj/machinery/atmospherics/portables_connector/fuel{
+ icon_state = "map_connector-fuel";
+ dir = 8
+ },
+/obj/machinery/portable_atmospherics/canister/phoron,
+/obj/effect/floor_decal/industrial/outline/red,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
+"tqy" = (
+/obj/structure/grille,
+/obj/structure/cable/green{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced/polarized/full{
+ id = "hos_office"
+ },
+/turf/simulated/floor,
+/area/crew_quarters/heads/hos)
+"trD" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/aux,
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/general)
+"uzs" = (
+/obj/machinery/shipsensors{
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/warning/full,
+/turf/simulated/floor/airless,
+/area/shuttle/securiship/cockpit)
+"vlw" = (
+/obj/machinery/door/window/brigdoor/eastleft,
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"vqZ" = (
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/cockpit)
+"vsJ" = (
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"vyd" = (
+/obj/machinery/light,
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/binary/pump/fuel,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/engines)
"vFD" = (
/obj/structure/catwalk,
/obj/random/cutout,
/turf/simulated/floor,
/area/maintenance/station/sec_upper)
+"wIZ" = (
+/obj/effect/floor_decal/techfloor{
+ dir = 6
+ },
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"wRu" = (
+/obj/effect/floor_decal/techfloor/corner{
+ dir = 1
+ },
+/obj/structure/bed/chair/bay/chair/padded/beige{
+ icon_state = "bay_chair_preview";
+ dir = 1
+ },
+/obj/machinery/button/remote/blast_door{
+ dir = 2;
+ id = "securiship blast";
+ name = "Shuttle Blast Doors";
+ pixel_x = -28;
+ pixel_y = 28;
+ req_access = list(67)
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/shuttle/securiship/cockpit)
+"xaA" = (
+/obj/structure/grille,
+/obj/structure/cable/green,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/green{
+ icon_state = "0-4"
+ },
+/obj/structure/window/reinforced/polarized/full{
+ id = "hos_office"
+ },
+/turf/simulated/floor,
+/area/crew_quarters/heads/hos)
+"xeo" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/fuel,
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
+"xmG" = (
+/obj/structure/grille,
+/obj/structure/cable/green{
+ icon_state = "0-8"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced/polarized/full{
+ id = "hos_office"
+ },
+/turf/simulated/floor,
+/area/crew_quarters/heads/hos)
+"xny" = (
+/obj/machinery/atmospherics/unary/engine{
+ dir = 1
+ },
+/turf/simulated/floor/airless,
+/area/shuttle/securiship/engines)
+"xou" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/bed/chair/bay/chair,
+/turf/simulated/floor/tiled/dark,
+/area/shuttle/securiship/general)
+"xqB" = (
+/turf/simulated/wall/rshull,
+/area/shuttle/securiship/engines)
+"yau" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/aux{
+ icon_state = "intact-aux";
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techmaint,
+/area/shuttle/securiship/general)
+"ygj" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/red/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/red/bordercorner2{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/embedded_controller/radio/simple_docking_controller{
+ dir = 2;
+ frequency = 1380;
+ id_tag = "securiship_bay";
+ pixel_x = -22;
+ pixel_y = 24
+ },
+/turf/simulated/floor/tiled,
+/area/security/hallway)
(1,1,1) = {"
aaa
@@ -34527,19 +35356,19 @@ aaa
aaa
aaa
aaa
+aad
+aad
+aae
+aot
+aad
+aad
+aae
+aad
+aad
+aad
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aad
+aad
aaa
aaa
aaa
@@ -34666,25 +35495,25 @@ aaa
aaa
aaa
aaa
+aad
aaa
aaa
aaa
aaa
+aae
aaa
aaa
aaa
+aae
aaa
aaa
+aae
+aae
+aae
+aad
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aad
+aad
aaa
aaa
aaa
@@ -34808,25 +35637,25 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aad
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
+aae
aaa
aaa
aaa
@@ -34950,6 +35779,8 @@ aaa
aaa
aaa
aaa
+aad
+aae
aaa
aaa
aaa
@@ -34966,10 +35797,8 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
+aae
+aad
aaa
aaa
aaa
@@ -35093,25 +35922,25 @@ aaa
aaa
aaa
aaa
+aae
aaa
+uzs
+vqZ
+vqZ
+vqZ
+isz
+pYS
+pYS
+isz
+isz
+xqB
+xqB
+xqB
+xqB
+xqB
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aae
+aad
aaa
aaa
aaa
@@ -35233,27 +36062,27 @@ aaa
aaa
aaa
aaa
+aad
aaa
+aae
aaa
+vqZ
+vqZ
+ntp
+oHo
+doX
+oEa
+fGQ
+vsJ
+nin
+xqB
+ePT
+jjJ
+hyn
+xny
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aae
+aad
aaa
aaa
aaa
@@ -35375,27 +36204,27 @@ aaa
aaa
aaa
aaa
+aad
+aae
+aae
aaa
+rBj
+cNP
+wRu
+nig
+kAs
+kAs
+xou
+vlw
+gBp
+xqB
+gxX
+bpl
+plY
+xny
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aae
+aad
aaa
aaa
aaa
@@ -35517,27 +36346,27 @@ aaa
aaa
aaa
aaa
+aad
aaa
+aae
aaa
+rBj
+bvH
+nqE
+wIZ
+jHa
+rhI
+qwY
+jHa
+jHa
+gJa
+sio
+jrx
+okJ
+xqB
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aae
+aad
aaa
aaa
aaa
@@ -35661,24 +36490,24 @@ aaa
aaa
aaa
aaa
+aae
aaa
+isz
+qDa
+rUg
+deE
+hEY
+yau
+kAs
+exP
+rIa
+lFr
+gkR
+vyd
+xeo
+xqB
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
+aae
aaa
aaa
aaa
@@ -35803,27 +36632,27 @@ aad
aaa
agm
aaa
-aad
-aad
aae
-aot
-aad
-aad
+aaa
+isz
+isz
+isz
+isz
+isz
+rFu
+kAs
+cwr
+oEa
+xqB
+hoF
+klB
+plY
+xny
+aaa
aae
aad
aad
aad
-aae
-aad
-aad
-aad
-aae
-aad
-aad
-aad
-aae
-aad
-aad
aad
aae
aad
@@ -35945,27 +36774,27 @@ aae
aaa
aae
aaa
+aae
aaa
+oJa
+trD
+bDn
+gjM
+boY
+kqS
+rIa
+eZt
+nym
+xqB
+sYy
+sYy
+gSE
+xny
aaa
aae
aaa
aaa
aaa
-aae
-aaa
-aaa
-aaa
-aae
-aaa
-aaa
-aaa
-aae
-aaa
-aaa
-aaa
-aae
-aaa
-aaa
aaa
aae
aaa
@@ -36088,22 +36917,22 @@ aae
aae
aae
aae
-aae
-aae
-aae
-aae
-aae
-aYW
-aae
-aae
-aae
-aae
-aae
-aae
-aae
-aae
-aae
-aae
+aaa
+mxs
+isz
+lmZ
+rfZ
+isz
+eZd
+eZd
+isz
+eZd
+xqB
+xqB
+xqB
+xqB
+xqB
+aaa
aae
aae
aae
@@ -36220,10 +37049,7 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aZF
+aab
aje
aje
aje
@@ -36235,6 +37061,9 @@ aje
aje
alj
alZ
+aje
+ebj
+oGF
aqc
aqv
ard
@@ -36243,7 +37072,7 @@ asL
atG
auF
aaa
-aae
+aaa
aaa
aaa
aaa
@@ -36361,11 +37190,8 @@ aab
aaa
aaa
aaa
-aaa
-aaa
-aaa
aab
-aZF
+aab
aje
aLS
aWH
@@ -36377,6 +37203,9 @@ anW
aTO
aoW
aZM
+tqy
+ygj
+atY
amb
aqw
are
@@ -36385,7 +37214,7 @@ afO
atH
auG
avs
-aae
+aaa
aaa
aJW
axv
@@ -36505,9 +37334,6 @@ aab
aab
aab
aab
-aab
-aab
-aZF
aje
aUi
aiS
@@ -36519,7 +37345,10 @@ anX
aTW
aoX
aSc
-amE
+lMN
+mLa
+apG
+amb
aqx
arf
asb
@@ -36527,7 +37356,7 @@ asM
atI
auI
avs
-aae
+aaa
aaa
axv
axw
@@ -36647,9 +37476,6 @@ aab
aab
aab
aab
-aab
-aab
-aZF
aje
aje
aje
@@ -36661,7 +37487,10 @@ aRq
aYC
akv
aSP
-amF
+xmG
+mLa
+apG
+amb
aqy
arg
asc
@@ -36792,9 +37621,6 @@ aab
aab
aab
aab
-aab
-aab
-aab
aje
aVK
ajM
@@ -36803,6 +37629,9 @@ aeG
aov
aoZ
afr
+aje
+dSk
+ifk
aqc
amG
arh
@@ -36934,15 +37763,15 @@ aao
aao
aao
aab
-aab
-aab
-aab
aje
aYV
ajM
aTD
aeH
aow
+rlz
+rgV
+jxg
aUn
acZ
amb
@@ -37076,18 +37905,18 @@ aao
aao
aao
aab
-aab
-aab
-aab
aje
ahd
aWN
aet
aYx
aWh
+jnQ
+iUO
+xaA
apa
aSz
-amE
+amb
aqA
arj
ase
@@ -37218,18 +38047,18 @@ aju
aju
aao
aab
-aab
-aab
-aab
aje
akI
aUy
akO
-aoa
+fxI
aox
+amy
+aoa
+xmG
aff
-apC
-amF
+atT
+amb
aqB
ark
asf
@@ -37512,7 +38341,7 @@ anH
aob
amh
apb
-afs
+atY
aqe
aqD
arm
@@ -37654,7 +38483,7 @@ anI
aoc
afd
apc
-anN
+apG
aqe
aqE
arm
@@ -37796,7 +38625,7 @@ anJ
aeK
amh
amj
-amK
+ifk
afH
aqF
arn
@@ -42025,9 +42854,9 @@ aaa
aaa
aaa
aaa
-aed
-agg
-agg
+aaa
+aaa
+aaa
aaU
aaU
aaU
@@ -46916,7 +47745,7 @@ aMN
aTv
aVr
aWQ
-aVr
+aVx
aMN
avt
avt
@@ -47201,11 +48030,11 @@ aTB
aVC
aXn
aWI
-aYJ
-aYZ
-aVc
aWf
-aZZ
+aYJ
+aVc
+aYZ
+aZS
bai
baO
bau
@@ -47488,7 +48317,7 @@ aWI
aYP
aZf
aVc
-aVx
+aZZ
ban
bai
bax
diff --git a/maps/tether/tether-08-mining.dmm b/maps/tether/tether-08-mining.dmm
index 7289bdc33d6..572560d98df 100644
--- a/maps/tether/tether-08-mining.dmm
+++ b/maps/tether/tether-08-mining.dmm
@@ -27,6 +27,9 @@
/area/outpost/mining_main/hangar)
"ah" = (
/obj/effect/floor_decal/industrial/warning/corner,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"ai" = (
@@ -39,8 +42,9 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"ak" = (
-/obj/effect/floor_decal/industrial/warning/corner{
- dir = 8
+/obj/effect/floor_decal/industrial/warning,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
@@ -52,7 +56,11 @@
/turf/simulated/wall/r_wall,
/area/outpost/mining_main/hangar)
"an" = (
-/obj/effect/floor_decal/industrial/warning{
+/obj/effect/floor_decal/industrial/warning,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/turf/simulated/floor/tiled,
@@ -77,8 +85,8 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"ar" = (
-/obj/effect/floor_decal/industrial/warning{
- icon_state = "warning";
+/obj/effect/floor_decal/industrial/warning,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
/turf/simulated/floor/tiled,
@@ -91,14 +99,18 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"at" = (
-/obj/effect/floor_decal/industrial/warning/corner{
+/obj/effect/floor_decal/industrial/warning,
+/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"au" = (
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
+/obj/effect/floor_decal/industrial/warning/corner{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
@@ -115,24 +127,17 @@
/area/outpost/mining_main/maintenance)
"aw" = (
/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/obj/structure/cable/green{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+ dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"ax" = (
/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+ icon_state = "warning";
+ dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"ay" = (
@@ -159,15 +164,11 @@
/area/mine/explored)
"aC" = (
/obj/effect/floor_decal/industrial/warning/corner{
- icon_state = "warningcorner";
- dir = 1
+ dir = 4
},
-/obj/machinery/firealarm{
- dir = 4;
- pixel_x = 26
- },
-/obj/structure/cable/green{
- icon_state = "2-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ icon_state = "intact-scrubbers";
+ dir = 5
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
@@ -251,8 +252,12 @@
/turf/simulated/floor/virgo3b,
/area/mine/explored)
"aK" = (
-/obj/effect/floor_decal/borderfloor,
-/obj/effect/floor_decal/corner/brown/border,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"aL" = (
@@ -473,29 +478,25 @@
/turf/simulated/floor/plating,
/area/outpost/mining_main/maintenance)
"bg" = (
-/obj/machinery/alarm{
- alarm_id = null;
- breach_detection = 0;
- dir = 1;
- icon_state = "alarm0";
- pixel_y = -22
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
},
-/obj/effect/floor_decal/borderfloor,
-/obj/effect/floor_decal/corner/brown/border,
-/obj/effect/floor_decal/borderfloor/corner2{
- dir = 9
- },
-/obj/effect/floor_decal/corner/brown/bordercorner2{
- dir = 9
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"bh" = (
-/obj/machinery/status_display{
- pixel_x = 32
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
},
/obj/structure/cable/green{
- icon_state = "1-2"
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
@@ -626,11 +627,21 @@
/turf/simulated/floor/plating,
/area/outpost/mining_main/maintenance)
"bv" = (
-/obj/machinery/door/airlock/glass_mining,
-/obj/structure/cable/green{
- icon_state = "1-2"
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
},
-/turf/simulated/floor/tiled/steel_grid,
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"bw" = (
/obj/structure/cable{
@@ -817,53 +828,38 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/secondary_gear_storage)
"bP" = (
-/obj/effect/floor_decal/borderfloor,
-/obj/effect/floor_decal/corner/brown/border,
-/obj/machinery/light,
+/obj/effect/floor_decal/industrial/warning/corner{
+ icon_state = "warningcorner";
+ dir = 1
+ },
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 26
+ },
+/obj/structure/cable/green{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
/turf/simulated/floor/tiled,
/area/outpost/mining_main/hangar)
"bQ" = (
-/obj/machinery/power/apc{
- dir = 1;
- name = "north bump";
- pixel_x = 0;
- pixel_y = 24
- },
-/obj/machinery/light_switch{
- dir = 1;
- pixel_x = 12;
- pixel_y = 24
- },
-/obj/structure/cable/green{
- d2 = 2;
- icon_state = "0-2"
- },
-/obj/structure/cable/green{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
-/obj/effect/floor_decal/borderfloor{
- dir = 1;
- pixel_y = 0
- },
-/obj/effect/floor_decal/corner/brown/border{
- dir = 1
- },
-/obj/effect/floor_decal/borderfloor/corner2{
- dir = 1
- },
-/obj/effect/floor_decal/corner/brown/bordercorner2{
- dir = 1
- },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/brown/border,
+/obj/machinery/recharge_station,
/turf/simulated/floor/tiled,
-/area/outpost/mining_main/secondary_gear_storage)
+/area/outpost/mining_main/hangar)
"bR" = (
-/obj/structure/cable/green{
- icon_state = "1-8"
- },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/brown/border,
+/obj/machinery/light,
+/obj/machinery/recharge_station,
/turf/simulated/floor/tiled,
-/area/outpost/mining_main/secondary_gear_storage)
+/area/outpost/mining_main/hangar)
"bS" = (
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
@@ -893,11 +889,13 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/secondary_gear_storage)
"bV" = (
-/obj/structure/cable/green{
- icon_state = "1-2"
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/brown/border,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
},
/turf/simulated/floor/tiled,
-/area/outpost/mining_main/secondary_gear_storage)
+/area/outpost/mining_main/hangar)
"bW" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/brown/border,
@@ -1115,9 +1113,6 @@
icon_state = "alarm0";
pixel_y = -22
},
-/obj/structure/cable/green{
- icon_state = "1-4"
- },
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/brown/border,
/obj/effect/floor_decal/borderfloor/corner2{
@@ -1126,14 +1121,22 @@
/obj/effect/floor_decal/corner/brown/bordercorner2{
dir = 9
},
-/turf/simulated/floor/tiled,
-/area/outpost/mining_main/secondary_gear_storage)
-"cy" = (
-/obj/structure/cable/green{
- icon_state = "2-8"
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
},
/turf/simulated/floor/tiled,
-/area/outpost/mining_main/secondary_gear_storage)
+/area/outpost/mining_main/hangar)
+"cy" = (
+/obj/machinery/status_display{
+ pixel_x = 32
+ },
+/obj/structure/cable/green{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/hangar)
"cz" = (
/obj/effect/floor_decal/industrial/warning/dust{
dir = 8
@@ -1150,8 +1153,10 @@
/obj/structure/cable/green{
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/outpost/mining_main/secondary_gear_storage)
+/area/outpost/mining_main/hangar)
"cC" = (
/obj/structure/table/steel,
/obj/item/weapon/tool/screwdriver,
@@ -1187,11 +1192,47 @@
/turf/simulated/floor/tiled,
/area/outpost/mining_main/break_room)
"cE" = (
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "north bump";
+ pixel_x = 0;
+ pixel_y = 24
+ },
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_x = 12;
+ pixel_y = 24
+ },
/obj/structure/cable/green{
- icon_state = "1-2"
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/corner/brown/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/brown/bordercorner2{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
/turf/simulated/floor/tiled,
-/area/outpost/mining_main/break_room)
+/area/outpost/mining_main/secondary_gear_storage)
"cF" = (
/obj/effect/floor_decal/steeldecal/steel_decals7,
/obj/effect/floor_decal/steeldecal/steel_decals7{
@@ -1241,22 +1282,18 @@
/turf/simulated/floor/tiled/steel_dirty/virgo3b,
/area/outpost/mining_main/drill_equipment)
"cI" = (
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
/obj/structure/cable/green{
icon_state = "1-8"
},
-/turf/simulated/floor/tiled/steel_grid,
-/area/outpost/mining_main/break_room)
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9;
+ pixel_y = 0
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
"cJ" = (
/obj/structure/cable/green{
d1 = 2;
@@ -1415,6 +1452,116 @@
/obj/machinery/light,
/turf/simulated/floor/tiled,
/area/outpost/mining_main/secondary_gear_storage)
+"cU" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"cV" = (
+/obj/structure/cable/green{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"cW" = (
+/obj/structure/cable/green{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"cX" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"cY" = (
+/obj/structure/cable/green{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"cZ" = (
+/obj/machinery/alarm{
+ alarm_id = null;
+ breach_detection = 0;
+ dir = 1;
+ icon_state = "alarm0";
+ pixel_y = -22
+ },
+/obj/structure/cable/green{
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/brown/border,
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 9
+ },
+/obj/effect/floor_decal/corner/brown/bordercorner2{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ icon_state = "intact-scrubbers";
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"da" = (
+/obj/structure/cable/green{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/secondary_gear_storage)
+"db" = (
+/obj/machinery/door/airlock/glass_mining,
+/obj/structure/cable/green{
+ 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/outpost/mining_main/secondary_gear_storage)
+"dc" = (
+/obj/structure/cable/green{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/tiled,
+/area/outpost/mining_main/break_room)
+"dd" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/green{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/turf/simulated/floor/tiled/steel_grid,
+/area/outpost/mining_main/break_room)
"di" = (
/obj/machinery/access_button{
command = "cycle_exterior";
@@ -2860,12 +3007,12 @@ ab
ab
ag
ah
-an
-an
-an
-an
-an
-at
+aw
+aw
+aw
+aw
+aw
+aC
aD
ag
ab
@@ -3001,13 +3148,13 @@ ab
ab
ab
ag
-ai
+ak
aq
aq
aq
aq
aq
-au
+aK
aE
ag
ab
@@ -3143,14 +3290,14 @@ ab
ab
ab
ag
-ai
+ak
aq
aq
aq
aq
aq
-au
aK
+bQ
ag
ab
ab
@@ -3285,14 +3432,14 @@ ab
ab
ab
ag
-as
+an
aq
aq
aq
aq
aq
-au
-bP
+aK
+bR
ag
ab
ab
@@ -3427,14 +3574,14 @@ ab
ab
ab
ag
-ai
+ar
aq
aq
aq
aq
aq
-au
-aK
+bg
+bV
ag
ab
cu
@@ -3575,7 +3722,7 @@ aq
aq
aq
aq
-au
+aK
aX
ag
ab
@@ -3717,7 +3864,7 @@ aq
aq
aq
aq
-au
+aK
aY
ag
ab
@@ -3859,7 +4006,7 @@ aq
aq
aq
aq
-au
+aK
aY
ag
bG
@@ -4001,7 +4148,7 @@ aq
aq
aq
aq
-au
+aK
cw
ag
bO
@@ -4143,13 +4290,13 @@ aq
aq
aq
aq
-aw
+bh
aZ
ag
cS
+cU
bU
-bU
-bU
+cX
cT
cA
aI
@@ -4279,20 +4426,20 @@ ab
ab
ab
ag
-ai
+at
aq
aq
ao
aq
aq
-ax
-bg
-ag
-bQ
-bV
-bV
-bV
+bv
cx
+ag
+cE
+cV
+cW
+cY
+cZ
bG
cD
aW
@@ -4421,23 +4568,23 @@ ab
ab
ab
ag
-ak
-ar
-ar
-ar
-ar
-ar
-aC
-bh
-bv
-bR
+au
+ax
+ax
+ax
+ax
+ax
+bP
+cy
+cB
+cI
bX
ce
co
-cy
-cB
-cE
-cI
+da
+db
+dc
+dd
bW
hK
Ma
diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm
index 2e9c8e11d4e..9c595e82e11 100644
--- a/maps/tether/tether_areas.dm
+++ b/maps/tether/tether_areas.dm
@@ -1085,6 +1085,19 @@
/area/shuttle/medivac/engines
name = "\improper Medivac Engines"
+/area/shuttle/securiship
+ requires_power = 1
+ icon_state = "shuttle2"
+
+/area/shuttle/securiship/general
+ name = "\improper Securiship"
+
+/area/shuttle/securiship/cockpit
+ name = "\improper Securiship Cockpit"
+
+/area/shuttle/securiship/engines
+ name = "\improper Securiship Engines"
+
//TFF 5/4/20 - Mining Ops move
// Asteroid Mining belter and Mining Outpost shuttles and refinery/gear areas
/area/quartermaster/belterdock
diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm
index 8d5ad08d249..be5f14b42f5 100644
--- a/maps/tether/tether_shuttles.dm
+++ b/maps/tether/tether_shuttles.dm
@@ -259,4 +259,30 @@
/obj/machinery/computer/shuttle_control/explore/medivac
name = "short jump console"
shuttle_tag = "Medivac Shuttle"
- req_one_access = list(access_pilot)
+ req_one_access = list(access_cmo, access_pilot)
+
+////////////////////////////////////////
+//////// Securiship /////////////
+////////////////////////////////////////
+/datum/shuttle/autodock/overmap/securiship
+ name = "Securiship Shuttle"
+ warmup_time = 0
+ current_location = "tether_securiship_dock"
+ docking_controller_tag = "securiship_docker"
+ shuttle_area = list(/area/shuttle/securiship/cockpit, /area/shuttle/securiship/general, /area/shuttle/securiship/engines)
+ fuel_consumption = 1
+ move_direction = NORTH
+
+// The 'ship' of the excursion shuttle
+/obj/effect/overmap/visitable/ship/landable/securiship
+ name = "Securiship Shuttle"
+ desc = "A security transport ship."
+ vessel_mass = 3000
+ vessel_size = SHIP_SIZE_SMALL
+ shuttle = "Securiship Shuttle"
+ fore_dir = EAST
+
+/obj/machinery/computer/shuttle_control/explore/securiship
+ name = "short jump console"
+ shuttle_tag = "Securiship Shuttle"
+ req_one_access = list(access_pilot, access_hos)
diff --git a/nano/templates/mod_uav.tmpl b/nano/templates/mod_uav.tmpl
new file mode 100644
index 00000000000..94498ec1098
--- /dev/null
+++ b/nano/templates/mod_uav.tmpl
@@ -0,0 +1,53 @@
+
+
+
UAV:
+
+ {{if data.current_uav}}
+ {{:data.current_uav.status}}
+ {{else}}
+ [Not Connected]
+ {{/if}}
+
+
+
+
+
Signal:
+
+ {{if data.current_uav}}
+ {{:data.signal_strength}}
+ {{else}}
+ [Not Connected]
+ {{/if}}
+
+
+
+
+
Power:
+
+ {{if data.current_uav}}
+ {{:helper.link(data.current_uav.power ? 'Online' : 'Offline', data.current_uav.power ? 'check' : 'close', {'power_uav' : 1}, null, data.current_uav.power ? 'linkOn' : 'redButton')}}
+ {{else}}
+ [Not Connected]
+ {{/if}}
+
+
+
+
+
Camera:
+
+ {{if data.current_uav}}
+ {{:helper.link(data.current_uav.power ? 'Available' : 'Unavailable', data.current_uav.power ? 'check' : 'close', {'view_uav' : 1}, null, data.in_use ? 'linkOn' : null)}}
+ {{else}}
+ [Not Connected]
+ {{/if}}
+
+
+
+
+{{for data.paired_uavs}}
+
+ {{:helper.link(value.name, '', {'switch_uav' : value.uavref})}}{{:helper.link('', 'close', {'del_uav' : value.uavref}, null, 'redButton')}}
+
+{{/for}}
diff --git a/nano/templates/shutoff_monitor.tmpl b/nano/templates/shutoff_monitor.tmpl
index 1b6cb6fe151..2597a1b6f5d 100644
--- a/nano/templates/shutoff_monitor.tmpl
+++ b/nano/templates/shutoff_monitor.tmpl
@@ -1,18 +1,13 @@
Automated Shutoff Valve Monitoring Console
+| Name | Position | Open | Mode | Actions
{{for data.valves}}
-
-
- {{:value.name}}
-
-
-
- {{:helper.link(value.open ? 'Open' : 'Closed', 'alert', {'toggle_open' : value.ref})}}
- {{:helper.link(value.enable ? 'Enabled' : 'Disabled', 'alert', {'toggle_enable' : value.ref})}}
-
-
- Coordinates: ({{:value.x}}, {{:value.y}}, {{:value.z}})
-
-
-
-{{/for}}
\ No newline at end of file
+ |
|---|
+ | {{:value.name}}
+ | {{:value.x}}, {{:value.y}}, {{:value.z}}
+ | {{:value.open ? 'Yes' : 'No'}}
+ | {{:value.enabled ? 'Auto' : 'Manual'}}
+ | {{:helper.link(value.open ? 'Close' : 'Open', null, {'toggle_open' : value.ref}, value.enabled ? 'disabled' : null)}}
+ {{:helper.link(value.enabled ? 'Manual' : 'Auto', null, {'toggle_enable' : value.ref})}}
+{{/for}}
+ |
\ No newline at end of file
diff --git a/vorestation.dme b/vorestation.dme
index ea0545624f5..662c43c1aa2 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -225,6 +225,7 @@
#include "code\controllers\verbs.dm"
#include "code\controllers\observer_listener\atom\observer.dm"
#include "code\controllers\subsystems\ai.dm"
+#include "code\controllers\subsystems\aifast.dm"
#include "code\controllers\subsystems\air.dm"
#include "code\controllers\subsystems\airflow.dm"
#include "code\controllers\subsystems\alarm.dm"
@@ -723,6 +724,7 @@
#include "code\game\jobs\job\department_vr.dm"
#include "code\game\jobs\job\engineering.dm"
#include "code\game\jobs\job\engineering_vr.dm"
+#include "code\game\jobs\job\exploration_vr.dm"
#include "code\game\jobs\job\job.dm"
#include "code\game\jobs\job\job_vr.dm"
#include "code\game\jobs\job\medical.dm"
@@ -1067,6 +1069,7 @@
#include "code\game\objects\items\trash.dm"
#include "code\game\objects\items\trash_material.dm"
#include "code\game\objects\items\trash_vr.dm"
+#include "code\game\objects\items\uav.dm"
#include "code\game\objects\items\devices\advnifrepair.dm"
#include "code\game\objects\items\devices\ai_detector.dm"
#include "code\game\objects\items\devices\aicard.dm"
@@ -1390,6 +1393,7 @@
#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm"
#include "code\game\objects\structures\crates_lockers\closets\l3closet_vr.dm"
#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm"
+#include "code\game\objects\structures\crates_lockers\closets\misc_vr.dm"
#include "code\game\objects\structures\crates_lockers\closets\statue.dm"
#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm"
#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm"
@@ -1615,12 +1619,13 @@
#include "code\modules\ai\ai_holder_movement.dm"
#include "code\modules\ai\ai_holder_pathfinding.dm"
#include "code\modules\ai\ai_holder_targeting.dm"
+#include "code\modules\ai\ai_holder_targeting_vr.dm"
#include "code\modules\ai\interfaces.dm"
#include "code\modules\ai\say_list.dm"
-#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm"
-#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_vr.dm"
-#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm"
-#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai_vr.dm"
+#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm"
+#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai_vr.dm"
+#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm"
+#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai_vr.dm"
#include "code\modules\alarm\alarm.dm"
#include "code\modules\alarm\alarm_handler.dm"
#include "code\modules\alarm\atmosphere_alarm.dm"
@@ -2789,6 +2794,7 @@
#include "code\modules\modular_computers\file_system\programs\engineering\atmos_control.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm"
+#include "code\modules\modular_computers\file_system\programs\engineering\shutoff_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\generic\camera.dm"
#include "code\modules\modular_computers\file_system\programs\generic\configurator.dm"
@@ -2799,6 +2805,7 @@
#include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm"
#include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm"
#include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm"
+#include "code\modules\modular_computers\file_system\programs\generic\uav.dm"
#include "code\modules\modular_computers\file_system\programs\generic\wordprocessor.dm"
#include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm"
#include "code\modules\modular_computers\file_system\programs\research\email_administration.dm"
@@ -3542,21 +3549,12 @@
#include "interface\interface.dm"
#include "interface\skin.dmf"
#include "maps\RandomZLevels\blackmarketpackers.dm"
-#include "maps\southern_cross\southern_cross_jobs_vr.dm"
-#include "maps\southern_cross\items\encryptionkey_sc.dm"
-#include "maps\southern_cross\items\encryptionkey_vr.dm"
-#include "maps\southern_cross\items\headset_sc.dm"
-#include "maps\southern_cross\items\headset_vr.dm"
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
#include "maps\southern_cross\items\clothing\sc_under.dm"
-#include "maps\southern_cross\job\outfits.dm"
-#include "maps\southern_cross\job\outfits_vr.dm"
#include "maps\southern_cross\loadout\loadout_head.dm"
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
-#include "maps\southern_cross\structures\closets\misc.dm"
-#include "maps\southern_cross\structures\closets\misc_vr.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\engine_submaps\engine.dm"