Changelog entry.

This commit is contained in:
PsiOmega
2015-09-02 15:38:30 +02:00
24 changed files with 1987 additions and 1940 deletions
+1
View File
@@ -1174,6 +1174,7 @@
#include "code\modules\mob\mob_cleanup.dm"
#include "code\modules\mob\mob_defines.dm"
#include "code\modules\mob\mob_grab.dm"
#include "code\modules\mob\mob_grab_specials.dm"
#include "code\modules\mob\mob_helpers.dm"
#include "code\modules\mob\mob_movement.dm"
#include "code\modules\mob\mob_transformation_simple.dm"
+5 -1
View File
@@ -277,7 +277,11 @@ What a mess.*/
else
P.info += "<B>General Record Lost!</B><BR>"
P.info += "</TT>"
P.name = "Employment Record ([active1.fields["name"]])"
if(active1)
P.name = "Employment Record ([active1.fields["name"]])"
else
P.name = "Employment Record (Unknown/Invald Entry)"
log_debug("[usr] ([usr.ckey]) attempted to print a null employee record, this should be investigated.")
printing = null
//RECORD DELETE
if ("Delete All Records")
+13 -5
View File
@@ -287,14 +287,18 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/* --- Loop through the receivers and categorize them --- */
if (R.client && !(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
if (R.client)
if(R.client.prefs)
if(!(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
else
log_debug("Client prefs found to be null in /proc/Broadcast_Message() for mob [R] and client [R.ckey], this should be investigated.")
if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes.
continue
// Ghosts hearing all radio chat don't want to hear syndicate intercepts, they're duplicates
if(data == 3 && istype(R, /mob/dead/observer) && R.client && (R.client.prefs.toggles & CHAT_GHOSTRADIO))
if(data == 3 && istype(R, /mob/dead/observer) && R.client && R.client.prefs && (R.client.prefs.toggles & CHAT_GHOSTRADIO))
continue
// --- Check for compression ---
@@ -490,8 +494,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/* --- Loop through the receivers and categorize them --- */
if (R.client && !(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
if (R.client)
if(R.client.prefs)
if(!(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
else
log_debug("Client prefs found to be null in /proc/Broadcast_SimpleMessage() for mob [R] and client [R.ckey], this should be investigated.")
// --- Check for compression ---
+20 -16
View File
@@ -8,6 +8,8 @@
anchored = 1.0
flags = ON_BORDER
var/maxhealth = 14.0
var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire
var/damage_per_fire_tick = 2.0 // Amount of damage per fire tick. Regular windows are not fireproof so they might as well break quickly.
var/health
var/ini_dir = null
var/state = 2
@@ -398,8 +400,8 @@
return
/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 800)
hit(round(exposed_volume / 100), 0)
if(exposed_temperature > maximal_heat)
hit(damage_per_fire_tick, 0)
..()
@@ -409,44 +411,46 @@
icon_state = "window"
basestate = "window"
glasstype = /obj/item/stack/material/glass
maximal_heat = T0C + 100
damage_per_fire_tick = 2.0
maxhealth = 12.0
/obj/structure/window/phoronbasic
name = "phoron window"
desc = "A phoron-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through."
desc = "A borosilicate alloy window. It seems to be quite strong."
basestate = "phoronwindow"
icon_state = "phoronwindow"
shardtype = /obj/item/weapon/material/shard/phoron
glasstype = /obj/item/stack/material/glass/phoronglass
maxhealth = 120
/obj/structure/window/phoronbasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 32000)
hit(round(exposed_volume / 1000), 0)
..()
maximal_heat = T0C + 2000
damage_per_fire_tick = 1.0
maxhealth = 40.0
/obj/structure/window/phoronreinforced
name = "reinforced phoron window"
desc = "A phoron-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic phoron windows are insanely fireproof."
name = "reinforced borosilicate window"
desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong."
basestate = "phoronrwindow"
icon_state = "phoronrwindow"
shardtype = /obj/item/weapon/material/shard/phoron
glasstype = /obj/item/stack/material/glass/phoronrglass
reinf = 1
maxhealth = 160
maximal_heat = T0C + 4000
damage_per_fire_tick = 1.0 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while.
maxhealth = 80.0
/obj/structure/window/phoronreinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
/obj/structure/window/reinforced
name = "reinforced window"
desc = "It looks rather strong. Might take a few good hits to shatter it."
icon_state = "rwindow"
basestate = "rwindow"
maxhealth = 40
maxhealth = 40.0
reinf = 1
maximal_heat = T0C + 750
damage_per_fire_tick = 2.0
glasstype = /obj/item/stack/material/glass/reinforced
/obj/structure/window/New(Loc, constructed=0)
..()
+9 -6
View File
@@ -46,7 +46,7 @@
/obj/item/stack/material/proc/update_strings()
// Update from material datum.
singular_name = material.sheet_singular_name
if(amount>1)
name = "[material.use_name] [material.sheet_plural_name]"
desc = "A stack of [material.use_name] [material.sheet_plural_name]."
@@ -196,12 +196,15 @@
default_type = "rglass"
/obj/item/stack/material/glass/phoronglass
name = "phoron glass"
singular_name = "phoron glass sheet"
name = "borosilicate glass"
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures"
singular_name = "borosilicate glass sheet"
icon_state = "sheet-phoronglass"
default_type = "phglass"
default_type = "borosilicate glass"
/obj/item/stack/material/glass/phoronrglass
name = "reinforced phoron glass"
name = "reinforced borosilicate glass"
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods."
singular_name = "reinforced borosilicate glass sheet"
icon_state = "sheet-phoronrglass"
default_type = "rphglass"
default_type = "reinforced borosilicate glass"
+7 -8
View File
@@ -476,23 +476,22 @@ var/list/name_to_material
rod_product = null
/material/glass/phoron
name = "phglass"
display_name = "phoron glass"
name = "borosilicate glass"
display_name = "borosilicate glass"
stack_type = /obj/item/stack/material/glass/phoronglass
flags = MATERIAL_BRITTLE
ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE+300
integrity = 200 // idk why but phoron windows are strong, so.
integrity = 100
icon_colour = "#FC2BC5"
stack_origin_tech = list(TECH_MATERIAL = 3, TECH_PHORON = 2)
stack_origin_tech = list(TECH_MATERIAL = 4)
created_window = /obj/structure/window/phoronbasic
wire_product = null
rod_product = /obj/item/stack/material/glass/phoronrglass
/material/glass/phoron/reinforced
name = "rphglass"
display_name = "reinforced phoron glass"
name = "reinforced borosilicate glass"
display_name = "reinforced borosilicate glass"
stack_type = /obj/item/stack/material/glass/phoronrglass
stack_origin_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 2)
stack_origin_tech = list(TECH_MATERIAL = 5)
composite_material = list() //todo
created_window = /obj/structure/window/phoronreinforced
hardness = 40
+9 -1
View File
@@ -24,4 +24,12 @@
"carbon" = 1,
"hematite" = 1
)
product = /obj/item/stack/material/steel
product = /obj/item/stack/material/steel
/datum/alloy/borosilicate
metaltag = "borosilicate glass"
requires = list(
"platinum" = 1,
"sand" = 2
)
product = /obj/item/stack/material/glass/phoronglass
+1 -1
View File
@@ -336,7 +336,7 @@
path = list()
/mob/living/bot/secbot/proc/check_threat(var/mob/living/M)
if(!M || !istype(M) || M.stat)
if(!M || !istype(M) || M.stat || src == M)
return 0
if(emagged)
+5 -7
View File
@@ -575,12 +575,14 @@ default behaviour is:
if(can_resist())
setClickCooldown(20)
process_resist()
resist_grab()
if(!weakened && !restrained())
process_resist()
/mob/living/proc/can_resist()
//need to allow !canmove, or otherwise neck grabs can't be resisted
//so just check weakened instead.
if(stat || weakened)
//similar thing with weakened and pinning
if(stat)
return 0
if(!canClick())
return 0
@@ -592,10 +594,6 @@ default behaviour is:
escape_inventory(src.loc)
return
//resisting grabs (as if it helps anyone...)
if (!restrained())
resist_grab()
//unbuckling yourself
if(buckled)
spawn() escape_buckle()
+52 -187
View File
@@ -1,6 +1,13 @@
#define UPGRADE_COOLDOWN 40
#define UPGRADE_KILL_TIMER 100
///Process_Grab()
///Called by client/Move()
///Checks to see if you are grabbing anything and if moving will affect your grab.
/client/proc/Process_Grab()
for(var/obj/item/weapon/grab/G in list(mob.l_hand, mob.r_hand))
G.reset_kill_state() //no wandering across the station/asteroid while choking someone
/obj/item/weapon/grab
name = "grab"
icon = 'icons/mob/screen1.dmi'
@@ -69,7 +76,6 @@
else
hud.screen_loc = ui_lhand
/obj/item/weapon/grab/process()
if(gcDestroyed) // GC is trying to delete us, we'll kill our processing so we can cleanly GC
return PROCESS_KILL
@@ -116,23 +122,9 @@
affecting.drop_l_hand()
affecting.drop_r_hand()
var/hit_zone = assailant.zone_sel.selecting
var/announce = 0
if(hit_zone != last_hit_zone)
announce = 1
last_hit_zone = hit_zone
if(ishuman(affecting))
switch(hit_zone)
if("mouth")
if(announce)
assailant.visible_message("<span class='warning'>[assailant] covers [affecting]'s mouth!</span>")
if(affecting:silent < 3)
affecting:silent = 3
if("eyes")
if(announce)
assailant.visible_message("<span class='warning'>[assailant] covers [affecting]'s eyes!</span>")
if(affecting:eye_blind < 3)
affecting:eye_blind = 3
if(iscarbon(affecting))
handle_eye_mouth_covering(affecting, assailant, assailant.zone_sel.selecting)
if(force_down)
if(affecting.loc != assailant.loc)
force_down = 0
@@ -153,6 +145,21 @@
adjust_position()
/obj/item/weapon/grab/proc/handle_eye_mouth_covering(mob/living/carbon/target, mob/user, var/target_zone)
var/announce = (target_zone != last_hit_zone) //only display messages when switching between different target zones
last_hit_zone = target_zone
switch(target_zone)
if("mouth")
if(announce)
user.visible_message("<span class='warning'>\The [user] covers [target]'s mouth!</span>")
if(target.silent < 3)
target.silent = 3
if("eyes")
if(announce)
assailant.visible_message("<span class='warning'>[assailant] covers [affecting]'s eyes!</span>")
if(affecting.eye_blind < 3)
affecting.eye_blind = 3
/obj/item/weapon/grab/attack_self()
return s_click(hud)
@@ -202,8 +209,6 @@
if(EAST)
animate(affecting, pixel_x =-shift, pixel_y = 0, 5, 1, LINEAR_EASING)
/obj/item/weapon/grab/proc/s_click(obj/screen/S)
if(!affecting)
return
@@ -226,11 +231,8 @@
assailant.visible_message("<span class='warning'>[assailant] has grabbed [affecting] aggressively (now hands)!</span>")
else
assailant.visible_message("<span class='warning'>[assailant] pins [affecting] down to the ground (now hands)!</span>")
force_down = 1
affecting.Weaken(3)
step_to(assailant, affecting)
assailant.set_dir(EAST) //face the victim
affecting.set_dir(SOUTH) //face up
apply_pinning(affecting, assailant)
state = GRAB_AGGRESSIVE
icon_state = "grabbed1"
hud.icon_state = "reinforce1"
@@ -264,7 +266,6 @@
affecting.set_dir(WEST)
adjust_position()
//This is used to make sure the victim hasn't managed to yackety sax away before using the grab.
/obj/item/weapon/grab/proc/confirm()
if(!assailant || !affecting)
@@ -278,17 +279,18 @@
return 1
/obj/item/weapon/grab/attack(mob/M, mob/living/user)
if(!affecting)
return
if(world.time < (last_action + 20))
return
last_action = world.time
reset_kill_state() //using special grab moves will interrupt choking them
//clicking on the victim while grabbing them
if(M == affecting)
if(ishuman(M))
last_action = world.time
if(ishuman(affecting))
var/hit_zone = assailant.zone_sel.selecting
flick(hud.icon_state, hud)
switch(assailant.a_intent)
@@ -297,174 +299,37 @@
assailant << "<span class='warning'>You are no longer pinning [affecting] to the ground.</span>"
force_down = 0
return
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/E = H.get_organ(hit_zone)
if(E && !(E.status & ORGAN_DESTROYED))
assailant.visible_message("<span class='notice'>[assailant] starts inspecting [affecting]'s [E.name] carefully.</span>")
if(do_mob(assailant,H, 10))
if(E.wounds.len)
assailant << "<span class='warning'>You find [E.get_wounds_desc()]</span>"
else
assailant << "<span class='notice'>You find no visible wounds.</span>"
else
assailant << "<span class='notice'>You must stand still to inspect [E] for wounds.</span>"
assailant << "<span class='notice'>Checking bones now...</span>"
if(do_mob(assailant, H, 20))
if(E.status & ORGAN_BROKEN)
assailant << "<span class='warning'>The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!</span>"
H.custom_pain("Your [E.name] hurts where it's poked.")
else
assailant << "<span class='notice'>The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine.</span>"
else
assailant << "<span class='notice'>You must stand still to feel [E] for fractures.</span>"
assailant << "<span class='notice'>Checking skin now...</span>"
if(do_mob(assailant, H, 10))
var/bad = 0
if(H.getToxLoss() >= 40)
assailant << "<span class='warning'>[H] has an unhealthy skin discoloration.</span>"
bad = 1
if(H.getOxyLoss() >= 20)
assailant << "<span class='warning'>[H]'s skin is unusaly pale.</span>"
bad = 1
if(E.status & ORGAN_DEAD)
assailant << "<span class='warning'>[E] is decaying!</span>"
bad = 1
if(!bad)
assailant << "<span class='notice'>[H]'s skin is normal.</span>"
else
assailant << "<span class='notice'>You must stand still to check [H]'s skin for abnormalities.</span>"
else
assailant << "<span class='notice'>[H] is missing that bodypart.</span>"
inspect_organ(affecting, assailant, hit_zone)
if(I_GRAB)
if(state < GRAB_AGGRESSIVE)
assailant << "<span class='warning'>You require a better grab to do this.</span>"
return
var/obj/item/organ/external/organ = affecting:get_organ(check_zone(hit_zone))
if(!organ || organ.dislocated == -1)
return
assailant.visible_message("<span class='danger'>[assailant] [pick("bent", "twisted")] [affecting]'s [organ.name] into a jointlock!</span>")
var/armor = affecting:run_armor_check(affecting, "melee")
if(armor < 2)
affecting << "<span class='danger'>You feel extreme pain!</span>"
affecting.adjustHalLoss(Clamp(0, 40-affecting.halloss, 40)) //up to 40 halloss
return
jointlock(affecting, assailant, hit_zone)
if(I_HURT)
if(hit_zone == "eyes")
var/mob/living/carbon/human/H = affecting
var/datum/unarmed_attack/attack = H.get_unarmed_attack(src, hit_zone)
if(!attack)
return
if(state < GRAB_NECK)
assailant << "<span class='warning'>You require a better grab to do this.</span>"
return
for(var/slot in list(slot_wear_mask, slot_head, slot_glasses))
var/obj/item/protection = affecting.get_equipped_item(slot)
if(istype(protection) && (protection.body_parts_covered & EYES))
assailant << "<span class='danger'>You're going to need to remove the eye covering first.</span>"
return
if(!affecting.has_eyes())
assailant << "<span class='danger'>You cannot locate any eyes on [affecting]!</span>"
return
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [affecting.name]'s eyes using grab ([affecting.ckey])</font>")
affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Had eyes attacked by [assailant.name]'s grab ([assailant.ckey])</font>")
msg_admin_attack("[key_name(assailant)] attacked [key_name(affecting)]'s eyes using a grab action.")
attack.handle_eye_attack(assailant, affecting)
else if(hit_zone != "head")
if(state < GRAB_NECK)
assailant << "<span class='warning'>You require a better grab to do this.</span>"
return
if(affecting:grab_joint(assailant))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
return
attack_eye(affecting, assailant)
else if(hit_zone == "head")
headbut(affecting, assailant)
else
if(affecting.lying)
return
assailant.visible_message("<span class='danger'>[assailant] thrusts \his head into [affecting]'s skull!</span>")
var/damage = 20
var/obj/item/clothing/hat = assailant.head
if(istype(hat))
damage += hat.force * 10
var/armor = affecting:run_armor_check(affecting, "melee")
affecting.apply_damage(damage*rand(90, 110)/100, BRUTE, "head", armor)
assailant.apply_damage(10*rand(90, 110)/100, BRUTE, "head", assailant:run_armor_check("head", "melee"))
if(!armor && prob(damage))
affecting.apply_effect(20, PARALYZE)
affecting.visible_message("<span class='danger'>[affecting] has been knocked unconscious!</span>")
playsound(assailant.loc, "swing_hit", 25, 1, -1)
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Headbutted [affecting.name] ([affecting.ckey])</font>")
affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Headbutted by [assailant.name] ([assailant.ckey])</font>")
msg_admin_attack("[key_name(assailant)] has headbutted [key_name(affecting)]")
assailant.drop_from_inventory(src)
src.loc = null
qdel(src)
return
dislocate(affecting, assailant, hit_zone)
if(I_DISARM)
if(state < GRAB_AGGRESSIVE)
assailant << "<span class='warning'>You require a better grab to do this.</span>"
return
assailant << "<span class='warning'>You start forcing [affecting] to the ground.</span>"
if(!force_down)
if(do_after(assailant, 20) && affecting)
assailant.visible_message("<span class='danger'>[assailant] is forcing [affecting] to the ground!</span>")
force_down = 1
affecting.Weaken(3)
affecting.lying = 1
step_to(assailant, affecting)
assailant.set_dir(EAST) //face the victim
affecting.set_dir(SOUTH) //face up
return
else
assailant << "<span class='warning'>You are already pinning [affecting] to the ground.</span>"
return
pin_down(affecting, assailant)
//clicking on yourself while grabbing them
if(M == assailant && state >= GRAB_AGGRESSIVE)
var/can_eat
if((FAT in user.mutations) && issmall(affecting))
can_eat = 1
else
var/mob/living/carbon/human/H = user
if(istype(H) && H.species.gluttonous)
// Small animals (mice, lizards).
if(affecting.small)
can_eat = 2
else
if(H.species.gluttonous == 2)
// Diona nymphs, alien larvae.
if(iscarbon(affecting) && !ishuman(affecting))
can_eat = 2
// Monkeys.
else if(issmall(affecting))
can_eat = 1
else if(H.species.gluttonous == 3)
// Full-sized humans.
if(ishuman(affecting) && !issmall(affecting))
can_eat = 1
// Literally everything else.
else
can_eat = 2
if(can_eat)
var/mob/living/carbon/attacker = user
user.visible_message("<span class='danger'>[user] is attempting to devour [affecting]!</span>")
if(can_eat == 2)
if(!do_mob(user, affecting)||!do_after(user, 30)) return
else
if(!do_mob(user, affecting)||!do_after(user, 100)) return
user.visible_message("<span class='danger'>[user] devours [affecting]!</span>")
affecting.loc = user
attacker.stomach_contents.Add(affecting)
qdel(src)
devour(affecting, assailant)
/obj/item/weapon/grab/dropped()
loc = null
if(!destroying)
qdel(src)
/obj/item/weapon/grab/proc/reset_kill_state()
if(state == GRAB_KILL)
assailant.visible_message("<span class='warning'>[assailant] lost \his tight grip on [affecting]'s neck!</span>")
hud.icon_state = "kill"
state = GRAB_NECK
/obj/item/weapon/grab
var/destroying = 0
+165
View File
@@ -0,0 +1,165 @@
/obj/item/weapon/grab/proc/inspect_organ(mob/living/carbon/human/H, mob/user, var/target_zone)
var/obj/item/organ/external/E = H.get_organ(target_zone)
if(!E || (E.status & ORGAN_DESTROYED))
user << "<span class='notice'>[H] is missing that bodypart.</span>"
return
user.visible_message("<span class='notice'>[user] starts inspecting [affecting]'s [E.name] carefully.</span>")
if(!do_mob(user,H, 10))
user << "<span class='notice'>You must stand still to inspect [E] for wounds.</span>"
else if(E.wounds.len)
user << "<span class='warning'>You find [E.get_wounds_desc()]</span>"
else
user << "<span class='notice'>You find no visible wounds.</span>"
user << "<span class='notice'>Checking bones now...</span>"
if(!do_mob(user, H, 20))
user << "<span class='notice'>You must stand still to feel [E] for fractures.</span>"
else if(E.status & ORGAN_BROKEN)
user << "<span class='warning'>The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!</span>"
H.custom_pain("Your [E.name] hurts where it's poked.")
else
user << "<span class='notice'>The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine.</span>"
user << "<span class='notice'>Checking skin now...</span>"
if(!do_mob(user, H, 10))
user << "<span class='notice'>You must stand still to check [H]'s skin for abnormalities.</span>"
else
var/bad = 0
if(H.getToxLoss() >= 40)
user << "<span class='warning'>[H] has an unhealthy skin discoloration.</span>"
bad = 1
if(H.getOxyLoss() >= 20)
user << "<span class='warning'>[H]'s skin is unusaly pale.</span>"
bad = 1
if(E.status & ORGAN_DEAD)
user << "<span class='warning'>[E] is decaying!</span>"
bad = 1
if(!bad)
user << "<span class='notice'>[H]'s skin is normal.</span>"
/obj/item/weapon/grab/proc/jointlock(mob/living/carbon/human/target, mob/attacker, var/target_zone)
if(state < GRAB_AGGRESSIVE)
attacker << "<span class='warning'>You require a better grab to do this.</span>"
return
var/obj/item/organ/external/organ = target.get_organ(check_zone(target_zone))
if(!organ || organ.dislocated == -1)
return
attacker.visible_message("<span class='danger'>[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!</span>")
var/armor = target.run_armor_check(target, "melee")
if(armor < 2)
target << "<span class='danger'>You feel extreme pain!</span>"
affecting.adjustHalLoss(Clamp(0, 60-affecting.halloss, 30)) //up to 60 halloss
/obj/item/weapon/grab/proc/attack_eye(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
if(!istype(attacker))
return
var/datum/unarmed_attack/attack = attacker.get_unarmed_attack(target, "eyes")
if(!attack)
return
if(state < GRAB_NECK)
attacker << "<span class='warning'>You require a better grab to do this.</span>"
return
for(var/obj/item/protection in list(target.head, target.wear_mask, target.glasses))
if(protection && (protection.body_parts_covered & EYES))
attacker << "<span class='danger'>You're going to need to remove the eye covering first.</span>"
return
if(!target.has_eyes())
attacker << "<span class='danger'>You cannot locate any eyes on [target]!</span>"
return
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [target.name]'s eyes using grab ([target.ckey])</font>")
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Had eyes attacked by [attacker.name]'s grab ([attacker.ckey])</font>")
msg_admin_attack("[key_name(attacker)] attacked [key_name(target)]'s eyes using a grab action.")
attack.handle_eye_attack(attacker, target)
/obj/item/weapon/grab/proc/headbut(mob/living/carbon/human/target, mob/living/carbon/human/attacker)
if(!istype(attacker))
return
if(target.lying)
return
attacker.visible_message("<span class='danger'>[attacker] thrusts \his head into [target]'s skull!</span>")
var/damage = 20
var/obj/item/clothing/hat = attacker.head
if(istype(hat))
damage += hat.force * 10
var/armor = target.run_armor_check("head", "melee")
target.apply_damage(damage*rand(90, 110)/100, BRUTE, "head", armor)
attacker.apply_damage(10*rand(90, 110)/100, BRUTE, "head", attacker.run_armor_check("head", "melee"))
if(!armor && prob(damage))
target.apply_effect(20, PARALYZE)
target.visible_message("<span class='danger'>[target] has been knocked unconscious!</span>")
playsound(attacker.loc, "swing_hit", 25, 1, -1)
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>Headbutted [target.name] ([target.ckey])</font>")
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Headbutted by [attacker.name] ([attacker.ckey])</font>")
msg_admin_attack("[key_name(attacker)] has headbutted [key_name(target)]")
attacker.drop_from_inventory(src)
src.loc = null
qdel(src)
return
/obj/item/weapon/grab/proc/dislocate(mob/living/carbon/human/target, mob/living/attacker, var/target_zone)
if(state < GRAB_NECK)
attacker << "<span class='warning'>You require a better grab to do this.</span>"
return
if(target.grab_joint(attacker, target_zone))
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
return
/obj/item/weapon/grab/proc/pin_down(mob/target, mob/attacker)
if(state < GRAB_AGGRESSIVE)
attacker << "<span class='warning'>You require a better grab to do this.</span>"
return
if(force_down)
attacker << "<span class='warning'>You are already pinning [target] to the ground.</span>"
attacker.visible_message("<span class='danger'>[attacker] starts forcing [target] to the ground!</span>")
if(do_after(attacker, 20) && target)
last_action = world.time
attacker.visible_message("<span class='danger'>[attacker] forces [target] to the ground!</span>")
apply_pinning(target, attacker)
/obj/item/weapon/grab/proc/apply_pinning(mob/target, mob/attacker)
force_down = 1
target.Weaken(3)
target.lying = 1
step_to(attacker, target)
attacker.set_dir(EAST) //face the victim
target.set_dir(SOUTH) //face up
/obj/item/weapon/grab/proc/devour(mob/target, mob/user)
var/can_eat
if((FAT in user.mutations) && issmall(target))
can_eat = 1
else
var/mob/living/carbon/human/H = user
if(istype(H) && H.species.gluttonous)
if(H.species.gluttonous == 2)
can_eat = 2
else if(!ishuman(target) && !issmall(target) && (target.small || iscarbon(target)))
can_eat = 1
if(can_eat)
var/mob/living/carbon/attacker = user
user.visible_message("<span class='danger'>[user] is attempting to devour [target]!</span>")
if(can_eat == 2)
if(!do_mob(user, target)||!do_after(user, 30)) return
else
if(!do_mob(user, target)||!do_after(user, 100)) return
user.visible_message("<span class='danger'>[user] devours [target]!</span>")
target.loc = user
attacker.stomach_contents.Add(target)
qdel(src)
-10
View File
@@ -369,16 +369,6 @@
return Move(n, direct)
///Process_Grab()
///Called by client/Move()
///Checks to see if you are grabbing anything and if moving will affect your grab.
/client/proc/Process_Grab()
for(var/obj/item/weapon/grab/G in list(mob.l_hand, mob.r_hand))
if(G.state == GRAB_KILL) //no wandering across the station/asteroid while choking someone
mob.visible_message("<span class='warning'>[mob] lost \his tight grip on [G.affecting]'s neck!</span>")
G.hud.icon_state = "kill"
G.state = GRAB_NECK
///Process_Incorpmove
///Called by client/Move()
///Allows mobs to run though walls
+31
View File
@@ -56,6 +56,37 @@
-->
<div class="commit sansserif">
<h2 class="date">02 September 2015</h2>
<h3 class="author">Atlantis updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Converted phoron glass to borosilicate glass, adjusted heat resistances accordingly, got rid of copypaste fire code. Fire resistance is now handled by variables so completely fireproof windows are possible with varedit.</li>
<li class="rscadd">Windows take fire damage when heat exceeds 100C regular windows, 750C reinforced regular, 2000C borosilicate and 4000C reinforced borosilicate. For comparsions, reinforced walls begin taking damage around 6000.</li>
</ul>
<h3 class="author">Hubblenaut updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds glass bottles for Cola, Space Up and Space Mountain Wind to Booze-O-Mat.</li>
<li class="tweak">Some bar drink recipes have been amended to easily sum to 30 units for drinking glasses.</li>
<li class="tweak">Vendors now have a product receptor for accepting goods. Opening the maintenance painel is no longer required.</li>
<li class="tweak">Wrenching a vending machine is no longer a silent action.</li>
<li class="tweak">Stepup: Item placement on 4x4 grids seemed to work great. Now we'll try 8x8.</li>
</ul>
<h3 class="author">Kelenius updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Mechfab can now be upgraded using RPED, and now uses NanoUI.</li>
</ul>
<h3 class="author">Matthew951 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added Vincent Volaju's hair.</li>
<li class="rscadd">Added Vincent Volaju's beard.</li>
</ul>
<h3 class="author">Zuhayr updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added the ability for AIs in hardsuits to control suit modules and movement with a dead or unconcious wearer.</li>
<li class="rscadd">Added ballistic supply drop pods.</li>
<li class="rscadd">Added diona gestalt random map template.</li>
<li class="tweak">Swapped the singularity beacon out for a hacked supply beacon.</li>
</ul>
<h2 class="date">24 August 2015</h2>
<h3 class="author">HarpyEagle updated:</h3>
<ul class="changes bgimages16">
+28
View File
@@ -2231,3 +2231,31 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Vox can now eat monkeys and small animals.
- rscadd: Tajarans can now eat small animals.
- rscadd: Unarmed attack damage has been lowered across the board.
2015-09-02:
Atlantis:
- rscadd: Converted phoron glass to borosilicate glass, adjusted heat resistances
accordingly, got rid of copypaste fire code. Fire resistance is now handled
by variables so completely fireproof windows are possible with varedit.
- rscadd: Windows take fire damage when heat exceeds 100C regular windows, 750C
reinforced regular, 2000C borosilicate and 4000C reinforced borosilicate. For
comparsions, reinforced walls begin taking damage around 6000.
Hubblenaut:
- rscadd: Adds glass bottles for Cola, Space Up and Space Mountain Wind to Booze-O-Mat.
- tweak: Some bar drink recipes have been amended to easily sum to 30 units for
drinking glasses.
- tweak: Vendors now have a product receptor for accepting goods. Opening the maintenance
painel is no longer required.
- tweak: Wrenching a vending machine is no longer a silent action.
- tweak: 'Stepup: Item placement on 4x4 grids seemed to work great. Now we''ll try
8x8.'
Kelenius:
- tweak: Mechfab can now be upgraded using RPED, and now uses NanoUI.
Matthew951:
- rscadd: Added Vincent Volaju's hair.
- rscadd: Added Vincent Volaju's beard.
Zuhayr:
- rscadd: Added the ability for AIs in hardsuits to control suit modules and movement
with a dead or unconcious wearer.
- rscadd: Added ballistic supply drop pods.
- rscadd: Added diona gestalt random map template.
- tweak: Swapped the singularity beacon out for a hacked supply beacon.
-35
View File
@@ -1,35 +0,0 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: Hubblenaut
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
changes:
- rscadd: "Adds glass bottles for Cola, Space Up and Space Mountain Wind to Booze-O-Mat."
- tweak: "Some bar drink recipes have been amended to easily sum to 30 units for drinking glasses."
- tweak: "Vendors now have a product receptor for accepting goods. Opening the maintenance painel is no longer required."
- tweak: "Wrenching a vending machine is no longer a silent action."
- tweak: "Stepup: Item placement on 4x4 grids seemed to work great. Now we'll try 8x8."
@@ -1,6 +0,0 @@
author: Kelenius
delete-after: True
changes:
- tweak: "Mechfab can now be upgraded using RPED, and now uses NanoUI."
@@ -1,5 +0,0 @@
author: Matthew951
delete-after: True
changes:
- rscadd: "Added Vincent Volaju's hair."
- rscadd: "Added Vincent Volaju's beard."
-4
View File
@@ -1,4 +0,0 @@
author: Zuhayr
delete-after: True
changes:
- rscadd: "Added the ability for AIs in hardsuits to control suit modules and movement with a dead or unconcious wearer."
-6
View File
@@ -1,6 +0,0 @@
author: Zuhayr
delete-after: True
changes:
- rscadd: "Added ballistic supply drop pods."
- rscadd: "Added diona gestalt random map template."
- tweak: "Swapped the singularity beacon out for a hacked supply beacon."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

+1606 -1607
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -1204,7 +1204,7 @@
"xh" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
"xi" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor South"; dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
"xj" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"xk" = (/obj/effect/floor_decal/corner/green,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xk" = (/obj/effect/floor_decal/corner/green,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xl" = (/obj/item/mecha_parts/mecha_equipment/teleporter,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"xm" = (/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"xn" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
@@ -1222,7 +1222,7 @@
"xz" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xA" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"xB" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xC" = (/obj/effect/floor_decal/corner/green{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xC" = (/obj/effect/floor_decal/corner/green{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/control)
"xD" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"xE" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"xF" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
@@ -1310,10 +1310,10 @@
"zj" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zk" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/turf/unsimulated/wall,/area/centcom/specops)
"zl" = (/obj/structure/table/rack,/obj/item/device/lightreplacer,/obj/item/device/lightreplacer,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"zm" = (/obj/effect/floor_decal/corner/green{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zm" = (/obj/effect/floor_decal/corner/green{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zn" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"zo" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zp" = (/obj/effect/floor_decal/corner/green{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zp" = (/obj/effect/floor_decal/corner/green{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zq" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zr" = (/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"zs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/pillbottles,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
@@ -1533,7 +1533,7 @@
"Dy" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 0},/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/holding)
"Dz" = (/obj/structure/closet/athletic_mixed,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding)
"DA" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals South"; dir = 4},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"DB" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"DB" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"DC" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"DD" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/holding)
"DE" = (/obj/machinery/light,/obj/item/device/radio/intercom{pixel_y = -22},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
@@ -2087,7 +2087,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMujufufufufufufufufufufufufufvDufufufufufvDvFufvbvbxltvvlvlvlvlvltvuhuhtvuhuhuhuhxmtvuhxQxQxQvlxQxQxQxQxQxQxQxQxptvtQuWvGtutututututututututUuWtQugvZwawbwcvqugvHuNvItxurururtxvJwfuNwfvMvavwvitxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMwgaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtVvPvbvbxqvlxrxtxsxvxuvluhuhvluhuhuhuhxwvluhxQxQuwxxxQxQxQxexetvtvtvtvtvtQtQvGtuvTtQvVylvWtQvTtutUtQtQugugugugugugugvYuRwdtxurururtxwewwuNwwwivavwvitxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMujufufufufufufufufufufufufufwjufufufufufwjwkufvbvbxAvlxHuhuhuhxIvluhuhvluhuhxKxJxLvlxMxQxQxQtvvlvlwrvlvltvxQxQxQxNtQtQwstuwtwvAxwzwxwFwBtuwGtQtQxRwHwHwHwHwHtxtxuOtxtxtxuOtxtxwIuNuNuNwJvavwvitxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtVwKvbvbxYtvyauhuhuhuhtvybybtvycyctvtvtvtvxMxQxQuwwMwLwLwLwLwLwNwLwLwLwNtQtQwOwQtQtQwRuGwStQtQwQwTtQtQxjurururururxjurururururururxjwewwwwwwwiwWwUxctxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtVwKvbvbxYtvyauhuhuhuhtvybybtvycyctvtvtvtvxMxQxQuwwMwLwLwLwLwLwNwLwLwLwNtQtQwOwQtQtQwSuGwRtQtQwQwTtQtQxjurururururxjurururururururxjwewwwwwwwiwWwUxctxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMmu
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMujufufufufufufufufufufufufufxfufufufufufxfxhxivbvbuwyjuhuhuhuhuhyjuhuhykuhuhymBcyzyzuhxQxQvdtvvlvlwrvlvltvxQxQxQyAtQtQxktuxnwvxytQxzwFxBtuxCtQtQxjurururururxjurururururururxjxDxExExExFtxxjxjtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMustvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvtvvbvbuwyjuhuhuhuhuhyjuhuhyCuhuhxQyDyDyDxQxQxQzcvlyGyMxQySyQtvtvtvtvtvtQtQvGtuxGtQwHtQwHxPxOtutUtQtQwAxSxSxSxSxStxtxxTtxtxtxuOtxtxtxxUxUxUtxtxurururyYurxZtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvvbvbyZtvvlvlvlvlvltvzezetvzfuhxQzgzizhxQxQxQyRzkyMxQxQxQxQxxxQxKzltvtQtQvGtxtxxWxVtQxXxGtxtxtUtQtQtxaMaMaMaMaMtxyrystxyeydygyfyuyiynynynyotxururuQuQururypaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+10 -10
View File
@@ -316,10 +316,10 @@
"gd" = (/obj/machinery/porta_turret{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"ge" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_y = 29; req_access = list(61)},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Foyer"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat)
"gi" = (/obj/machinery/porta_turret{dir = 10},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gj" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gj" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomsat)
"gm" = (/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
@@ -333,20 +333,20 @@
"gu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomsat)
"gw" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/entrance)
"gA" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"gC" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gD" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gE" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gD" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/turret_protected/tcomfoyer)
"gE" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/item/device/radio/intercom{dir = 1; pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/obj/machinery/camera/network/telecom{c_tag = "Telecoms Central Compartment South"; dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"gG" = (/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gH" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
"gI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/entrance)
"gJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gK" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_y = 29; req_access = list(61)},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gK" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_y = 29; req_access = list(61)},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gL" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gM" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Power Room West"},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
"gN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
@@ -357,19 +357,19 @@
"gS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/space)
"gT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gU" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gW" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"gX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"gY" = (/obj/machinery/camera/network/telecom{c_tag = "Telecoms West Wing South"; dir = 4},/turf/space,/area/turret_protected/tcomsat)
"gZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"ha" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"ha" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hb" = (/turf/simulated/wall/r_wall,/area/tcommsat/powercontrol)
"hc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hd" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/powercontrol)
"he" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hf" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/tcommsat/powercontrol)
"hg" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms - Airlock"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hh" = (/obj/item/weapon/cell,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hh" = (/obj/item/weapon/cell,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hj" = (/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hk" = (/obj/structure/closet/malf/suits,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
@@ -380,7 +380,7 @@
"hp" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless,/area/tcommsat/powercontrol)
"hq" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/tcommsat/powercontrol)
"hr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hs" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hs" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"ht" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
"hv" = (/obj/machinery/bluespace_beacon,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
+19 -19
View File
@@ -340,7 +340,7 @@
"gB" = (/turf/simulated/wall/r_wall,/area/outpost/research/anomaly_analysis)
"gC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/dock)
"gD" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/outpost/research/disposal)
"gE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"gE" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13,65); tag_door = "research_outpost_hatch"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"gF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"gG" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/outpost/abandoned)
"gH" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
@@ -355,7 +355,7 @@
"gQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access = list(47)},/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/outpost/research/hallway)
"gR" = (/obj/machinery/door/window/westleft{dir = 2; name = "Locker room"; opacity = 0; req_access = list(65)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/hallway)
"gS" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/outpost/research/hallway)
"gT" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13,65); tag_door = "research_outpost_hatch"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"gT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"gU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway)
"gV" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway)
"gW" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/white,/area/outpost/research/hallway)
@@ -475,7 +475,7 @@
"jg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/outpost/research/dock)
"jh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"ji" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/outpost/research/eva)
"jj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = 0; pixel_y = -32},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/outpost/research/power)
"jj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_x = -32; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/power)
"jk" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"jl" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"jm" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
@@ -544,7 +544,7 @@
"kx" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"ky" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly_storage)
"kz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly_storage)
"kA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kB" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating,/area/outpost/research/eva)
"kC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly_storage)
"kD" = (/turf/simulated/wall,/area/mine/unexplored)
@@ -556,8 +556,8 @@
"kJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/corner/brown{dir = 8},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kL" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kM" = (/obj/machinery/conveyor_switch/oneway{dir = 2; id = "anominerals"; pixel_y = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = -32},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/plating,/area/outpost/research/power)
"kM" = (/obj/machinery/conveyor_switch/oneway{dir = 2; id = "anominerals"; pixel_y = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = -32},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/eva)
"kN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/outpost/research/power)
"kO" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"kP" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"kQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage)
@@ -592,7 +592,7 @@
"lt" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lu" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lv" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage)
"ly" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/outpost/research/emergency_storage)
"lz" = (/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
@@ -615,7 +615,7 @@
"lQ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/outpost/research/power)
"lR" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/power)
"lS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/power)
"lT" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/outpost/research/power)
"lT" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/outpost/research/power)
"lU" = (/obj/machinery/atmospherics/unary/heater{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lV" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
"lW" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/isolation_monitoring)
@@ -822,8 +822,8 @@
"pP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"pQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/machinery/camera/network/research_outpost{c_tag = "Research Outpost Expedition Airlock"; dir = 4},/turf/simulated/floor/plating,/area/outpost/research/eva)
"pR" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"pS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_north"; pixel_x = -5},/obj/effect/floor_decal/industrial/warning/dust/corner{tag = "icon-warningcorner_dust (WEST)"; icon_state = "warningcorner_dust"; dir = 8},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"pT" = (/obj/effect/floor_decal/industrial/warning/dust/corner{tag = "icon-warningcorner_dust (EAST)"; icon_state = "warningcorner_dust"; dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"pS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_north"; pixel_x = -5},/obj/effect/floor_decal/industrial/warning/dust/corner{tag = "icon-warningcorner_dust (EAST)"; icon_state = "warningcorner_dust"; dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"pT" = (/obj/effect/floor_decal/corner/yellow/diagonal{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"pU" = (/obj/structure/ore_box,/turf/simulated/floor/asteroid,/area/mine/explored)
"pV" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_outer"; locked = 1; name = "Research Outpost External Access"; req_access = list(10,13)},/turf/simulated/floor/plating,/area/outpost/research/eva)
"pW" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 8; 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/airless{icon_state = "asteroidplating"},/area/mine/explored)
@@ -952,7 +952,7 @@
"sp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/yellow/diagonal{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"sq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway)
"sr" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"ss" = (/obj/effect/floor_decal/corner/yellow/diagonal{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"ss" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"st" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/outpost/engineering/hallway)
"su" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"sv" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
@@ -1013,7 +1013,7 @@
"ty" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/item/device/radio/intercom{pixel_y = -22},/turf/simulated/floor/tiled,/area/outpost/mining_north)
"tz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 0; pixel_y = -25; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Solar Access"},/obj/effect/floor_decal/industrial/warning/full,/turf/simulated/floor,/area/outpost/engineering/hallway)
"tA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"tB" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"tB" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"tC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"tD" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway)
"tE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
@@ -1107,7 +1107,7 @@
"vo" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor,/area/outpost/engineering/hallway)
"vp" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"vq" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/atmospherics)
"vr" = (/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)
"vr" = (/obj/effect/floor_decal/industrial/warning/dust/corner{tag = "icon-warningcorner_dust (WEST)"; icon_state = "warningcorner_dust"; dir = 8},/turf/simulated/floor/airless{icon_state = "asteroidplating"},/area/mine/explored)
"vs" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/meter,/turf/simulated/floor/tiled,/area/outpost/engineering/atmospherics)
"vt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/engineering/hallway)
"vu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway)
@@ -1650,7 +1650,7 @@ aaaaabababababababababababababababababababababababababababababababababababababab
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSbSeVeUfcdmfhfddmdmdmdmabababababababababababababababababababababababababababababababababababababababababababababababbdacacacacacacdtdtdtdtdtdtdtaNdUeCeveseXeWeAezeYasflfjasfmasasasaseeasfnilaEfefgfffigbaceTfbfbacacacacacacacacacacacbdbdbdacadadaeaeaeaeaeacaeaeaeaeaeacaeaeaeaeaeadadbdabababababababababababababababababababababababababababababababababaaaa
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSgdfpidfuftftbhcUfqdmfrfsdmabababababababababababababababababababababababababababababababababababababababababababababababbdacacacacacacdtdtdtdtdtdtdtaEfAfyfvesfwezeAfxfzasfCfBfEfDfGfFeRasfJfIfKdMaEfLfNfMfOfogffHfHeSeSeSeSeSeSeSeSeSpBpBpBpBpBgkadadadaeaeaeaeaeacaeaeaeaeaeacaeaeaeaeaeadadbdabababababababababababababababababababababababababababababababababaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSfQfPfpcUcUcUcvfVfqfhfsfYfrdmabababababababababababababababababababababababababababababababababababababababababababababababacacacacacacfZghgggzgighgggCgefSfRfTfTfTgjgjgjgjgjfUdMfXfWatgagrasgmglgognaEgpgDgqgsgwgAasasgBacacacacacacacacadadadadadadadadadaeaeaeaeaeacacacacacacacaeaeaeaeaeadadbdabababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhffQjFfQididfhgtcUdmetgudmfsgGdmabababababababababababababababababababababababababababababababababababababababababababababababbdacacacacachggxgvgTgygEgvhhgFgIgHgKgJgLgjgNgMgMgjgOdMgQgPgSgRiZasgVgUflgWaEaEgXaEaEaEdMiNgYgBgBgBgBhsgBgBgBgBadadadadadadadadadadadadadadadadadadadadadadadadadadadadbdabababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhffQjFfQididfhgtcUdmetgudmfsgGdmabababababababababababababababababababababababababababababababababababababababababababababababbdacacacacachggxgvgEgygTgvhhgFgIgHgKgJgLgjgNgMgMgjgOdMgQgPgSgRiZasgVgUflgWaEaEgXaEaEaEdMiNgYgBgBgBgBhsgBgBgBgBadadadadadadadadadadadadadadadadadadadadadadadadadadadadbdabababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSbShagZidhxhBidcUetcUhbfhcvdmdmdmdmdmdmababababababababababababababababababababababababababababababababababababababababababababababacacacacachFhdhchchchchehjhihlhkhnhmjDgjhrhqhuhthvgngWhwdMdMhyfBdMdMgognhAhzhDhCgWhEdMdMhGgBhIhHgBhJhKhVhXgBadadadbdbdbdacadadadadadadadadadadadadadadadadadadadadadbdabababababababababababababababababababababababababababababababababaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSbShLhMcUidhBhNcUfdcUiddmiffddmighOcUiidmabababababababababababababababababababababababababababababababababababababababababababababababacacacachFhPhPgvhQgvhRiogvhThShWhUhYgjhqhZiairicibihieikijimjVipiniqijijijitisiviuixiwiziyiBiAiDiCiFiEiGgBadadadbdabbdbdbdacacacacacacacacacacacacacacbdacacacacbdbdabababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbSbSbSababdmftetiHetcUetiIcUigbhcUhOdmigethOiJdmababababababababababababababababababababababababababababababababababbdbdbdbdbdbdababababababkDiKacacacjphPhPiMiLiOkfhhiPiRiQiTiSiUgjiWiViXgjgjjnjnjojqjsjtjqjujqjIjxjxjxjxjtjqjvjwjwiYgBjakggBjbjdjcjegBadadadbdabababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdababababababababababababababababababababababababababababababababababaaaa
@@ -1679,7 +1679,7 @@ aaababababababababababababababababababababababababababababababababababababababab
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacacabababababababababababbdbdadptadadadadpwpwpwpwpwpwpupxpvpwqjqkpwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdadpApypCpBpBpDpFpEpHpGpLtypNpMqzqyqApwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdadadadptadacpwpwpwpwpOpwpwpwpwpwpwpwpwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdadptadacacacpPpSpRpTbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdadptadacacacpPpSpRBsbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadptadacacacacacacacbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadptadacacacacacacacbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadptadacacacacacacbdbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
@@ -1723,10 +1723,10 @@ aaaaabababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdacadadadadptadadadadbdbdabababbdbdbdacbdababababababababababababababrEqDqFqErErArGrFrKrIrFrLrNeSeSeSqGababacacaccxacaccxacacacacqeqgqfacqeqgqfacqeqgqfaccxacacacacacacacacacacbdaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdacacacadpApypypWadacbdabbdbdbdacacacbdababababababababababababababrEqHqJqIshrRrGrTqKrUrXrWqUrYrYrYrYrYsxsqeQuquqsxszuqacacacacqeqgqfacqeqgqfacqeqgqfacqcqcqcacacacacacacacacbdaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdadqLadadptadacbdbdbdacacacacacpzpzpzpzabababababababsdsdsdsdrhqMqJqNsNsgsirFqRsjrXsmrjqSqVqTqWsRfkfkrwqXsTrarbsxsqszacacsVrccxaccxrccxaccxrccxaccxacqcacacacacacacacacbdaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdmRacadptadadadacacacacacacacrdrfrepzabababababababsdsGrisIrhrkqJrlsWsYrGrFtetdrFtfrjrmrprnrvsXrHrxssrytcrzrCrBtzrDrMrJeTeTeTeTeTeTeTeTeTeTrPrOrQcxqcacacacacacacacacbdaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdmRacadptadadadacacacacacacacrdrfrepzabababababababsdsGrisIrhrkqJrlsWsYrGrFtetdrFtfrjrmrprnrvsXrHrxpTrytcrzrCrBtzrDrMrJeTeTeTeTeTeTeTeTeTeTrPrOrQcxqcacacacacacacacacbdaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdadpApypWadacacacacacacacrdrVrSpzababscscscscabsdtKrZtLrhsasesbrEtRrGtStUtTrGtVrjsfslsksntxspsosusrtDsvswsxsqszacaccxsycxaccxsycxaccxsycxaccxacqcacacacacacacacacbdaaaa
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdadadadsAadacacacacacacacrdrVsCscscscscsEsDscscscscsFscscuquququqtIszuqsHuqtIszuquiukuqsJuvsLsKsQsMuqsSsUscacacacacqesZqfacqesZqfacqesZqfacqcqcqcacacacacacacacacbdaaaa
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadsAadadadadadadadadrdrVaduItatbustithvbtjtmtltotntqtptstrtttstststvtutstsyLtwtAvrtCtBtFtEtHtGtMtJtNuwaccxacacqesZqfacqesZqfacqesZqfaccxacacacacacacacacacacbdaaaa
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadsAadadadadadadadadrdrVaduItatbustithvbtjtmtltotntqtptstrtttstststvtutstsyLtwtAsstCtBtFtEtHtGtMtJtNuwaccxacacqesZqfacqesZqfacqesZqfaccxacacacacacacacacacacbdaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdadtPtOtOtOtOtOtOtOtOtQtXtWvttYtZuFubuauauauducufueuguauauhulujuauaunumuouaurupuuutuyuxutuzuAuAzaqYuCtDcxcxcxcxqesZqfcxqesZqfcxqesZqfcxqcacacacacacacacacacacbdaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdadsAadadadadadadadadosmJuDscscscscuquququqscvevuvmvDvuvNuquEuqvWscuquququququququququqsxsqvvszuquGuHuqacaccxacqesZqfacqesZqfacqesZqfacqcacacacacacacacacacacbdaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdadsAadacacacacacacacadadadbdabababababababwfuJuLuKuNuMuPuOuRuQuSwfabababababababafafafacacacacvZuTvFvZacaccxacqesZqfacqesZqfacqesZqfacqcacacacacacacacacacacbdaaaa
@@ -1772,9 +1772,9 @@ aaababababababababababababababababababababababababababababababababababababababab
aaababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdacybzgzkzhyRzlzmxKznybybybybybybyEadadadadadadadadbdbdbdbdabababababababababababababababbdbdadpPadadadadadadadadadadadadadadadadbdbdbdbdbdababxDxDxDxDxDxDxDAAABzoAAABxDyjyjyjzpyjyjyjAHACacacacacacacacacacacacacacacacacacacacAJAuzqzszrANztztzuzxzwzzzyzBzAadadadmgadabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababbdbdacybzDEkzEzvzGzHElxKzIzLzJzNzMzPzOpypypypypypypWadbdbdbdbdbdbdababababababababababababbdbdbdadpYpypypypypypypypypypypypypypypWadbdbdbdbdbdabababababyjzRzQzTzSzSzUzSzSzWzVzSzXyZzYzZzZAaBlyIyDnznznznznznznznznznznznznznznzAxBuBmAeAbAiAhAlAjAmAmAnBzApAoArAqadadadmgadabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababbdbdacybybybybybybybybybybBAybybybybadadadadadadadptadadadadbdbdbdbdababababababababababbdbdadadadptadadadadadadadadadadadadadadptadbdbdbdbdbdbdbdbdbdabyjyjyjyjEmAvAtAwAwAwAyAwAwADAzAFAEAIAGAKAGALALALAMALALALAOALALALAMALALALAPAQAPASARATAbCdAUAVAkAkzwAXAWAZAYadadadadadbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababbdbdacacacacacacacacacacBapRBbpPadadadadacBcacacadpApypypWadbdbdbdbdababababababababababbdadadpYpypXadacacacbdacacBcacacacacacadptadbdbdbdbdbdbdbdbdbdbdbdbdbdyjBdBezSzSzSzSBfEnBgBiBhBjzSBkCoyIyDBnBnBnBnBnBnBnBnBnBnBnBnBnCvCvAxBuCABoAbBpAbyUyTyTyTyTyTyTyTyTBqmJBrmJBsmgbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababbdbdacacacacacacacacacacBapRBbpPadadadadacBcacacadpApypypWadbdbdbdbdababababababababababbdadadpYpypXadacacacbdacacBcacacacacacadptadbdbdbdbdbdbdbdbdbdbdbdbdbdyjBdBezSzSzSzSBfEnBgBiBhBjzSBkCoyIyDBnBnBnBnBnBnBnBnBnBnBnBnBnCvCvAxBuCABoAbBpAbyUyTyTyTyTyTyTyTyTBqmJBrmJvrmgbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdacacacadadadadadmgmgbdmRbdbdadadadadptadbdbdbdbdbdabababababbdbdbdbdbdadpYpXadadadbdbdbdbdbdbdmRbdbdbdbdbdadptadbdbdbdbdbdbdmRbdbdbdbdbdCuCuCBBtCBCxCxCzCyCxCxCxCCCDCCyjDcacacacacacacaccxacacaccxacacacacadjUadDHAuAbBwBvCHBxByByBCBBBEBDBGBFBHBHBHrdadbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdabbdbdbdbdbdadptadadadadacbdbdbdbdbdbdbdbdbdbdbdadptadacbdbdbdabababababbdbdbdbdbdbdadptadadadadadadadpPadadbdbdbdCuBJBIBLBKCxCUCWCVCYCXCxBMBOBNyjacacacacacacacaccxacacacDIcxcxcxcxcxDIjUjUAdBPBRBQDgDgDgDgBSDgBTDgDgBUpRpRpRpTadbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdabbdbdbdbdbdadptadadadadacbdbdbdbdbdbdbdbdbdbdbdadptadacbdbdbdabababababbdbdbdbdbdbdadptadadadadadadadpPadadbdbdbdCuBJBIBLBKCxCUCWCVCYCXCxBMBOBNyjacacacacacacacaccxacacacDIcxcxcxcxcxDIjUjUAdBPBRBQDgDgDgDgBSDgBTDgDgBUpRpRpRBsadbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdadpApypypypWadacacacacacadadadadadadadptadbdbdabababababababbdbdbdbdbdbdadpApypypypypypypypypWadbdbdbdCuBWBVEoBXCxDoDqDpDsDrCxBZCbCayjacacacacacaccxcxcxcxcxcxcxCcCcCcCcCcjUadadAdCeCfAbChCgCiByByCjByBCDgxCadadadadbdbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdadadadadadpApWadadadadadadpYpypypypypypXadbdabababababababababbdbdbdbdbdadadadadadadadadadadptadadadadCuCuCuCuCuCxDDDEDpDGDFCxDRCkCCyjacacacacacacacaccxacacaccxCcCcCcCcCcjUadAJAuAbCmClDgDgDgDgDgDgEpCnDgxCadadadbdbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdacBcadadpApypypypypypypXadadadadadadadbdabababababababababababbdbdbdbdbdbdbdacacacacbdadpApypypWadacacacacacCxDNDOCzCxCxCxosCpouCqacacacacacacacaccxacacaccxCcCcCcCcCcEBBuEHCsCrCwCtCFCECICGCKCJEMCnDgxCadadadbdbdabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa